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);
结果演示
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; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。