欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Qt实现棋盘游戏

程序员文章站 2022-03-04 13:42:39
本文实例为大家分享了qt实现棋盘游戏的具体代码,供大家参考,具体内容如下知识点1、画背景图、线条2、qdebug()与qstring联合使用qdebug()<

本文实例为大家分享了qt实现棋盘游戏的具体代码,供大家参考,具体内容如下

知识点

1、画背景图、线条

2、qdebug()与qstring联合使用

qdebug()<<qstring("(%1,%2)").arg(checkx).arg(checky);

结果演示

Qt实现棋盘游戏

widget.h

#ifndef widget_h
#define widget_h

#include <qwidget>

namespace ui {
class widget;
}

class widget : public qwidget
{
    q_object

public:
    explicit widget(qwidget *parent = 0);
    ~widget();

private:
    void paintevent(qpaintevent *ev);
    void mousepressevent(qmouseevent *ev);
    int startx;
    int starty;
    int widthc;
    int heightc;
    int checkx;
    int checky;

private:
    ui::widget *ui;
};

#endif // widget_h

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <qpainter>
#include <qpaintevent>
#include <qmouseevent>
#include <qpen>
#include <qmessagebox>
#include <qdebug>

widget::widget(qwidget *parent) :
    qwidget(parent),
    ui(new ui::widget)
{
    ui->setupui(this);
    resize(700,400);

    checkx=-1;
    checky=-1;
}

void widget::paintevent(qpaintevent *ev){
    //画背景图
    qpainter p(this);
    p.drawpixmap(rect(),qpixmap(":/new/prefix1/image/frame.jpg"));

    qpen pen;
    pen.setwidth(4);//设置线宽
    pen.setcolor("black");
    p.setpen(pen);//把笔交给画家

    //画网格
    widthc=width()/10;
    heightc=height()/10;
    startx=widthc;
    starty=heightc;

    for(int i=0;i<9;i++){
        p.drawline(startx,starty+i*heightc,startx+8*widthc,starty+i*heightc);//画9条横线
        p.drawline(startx+i*widthc,starty,startx+i*widthc,starty+8*heightc);//画9条竖线
    }

    //画棋子
    if(checkx!=-1&&checky!=-1){
        p.drawpixmap(startx+checkx*widthc,starty+checky*heightc,widthc,heightc,qpixmap(":/new/prefix1/image/luffyq.png"));
    }


}

//重写鼠标按下事件
void widget::mousepressevent(qmouseevent *ev){

     if(ev->button()==qt::leftbutton){//左击才显示
         int x=ev->x();
         int y=ev->y();

         //保证不越界
         if(x>=startx&&x<=startx*9&&y>=starty&&y<=starty*9){
             checkx=(x-widthc)/widthc;//获取棋子x
             checky=(y-heightc)/heightc;//获取棋子y

             qdebug()<<qstring("(%1,%2)").arg(checkx).arg(checky);
         }

         update();
     }
}

widget::~widget()
{
    delete ui;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关标签: Qt 棋盘