Qt實(shí)現(xiàn)棋盤游戲
本文實(shí)例為大家分享了Qt實(shí)現(xiàn)棋盤游戲的具體代碼,供大家參考,具體內(nèi)容如下
知識(shí)點(diǎn)
1、畫背景圖、線條
2、qDebug()與QString聯(lián)合使用
qDebug()<<QString("(%1,%2)").arg(checkX).arg(checkY);
結(jié)果演示
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);//設(shè)置線寬 ? ? pen.setColor("black"); ? ? p.setPen(pen);//把筆交給畫家 ? ? //畫網(wǎng)格 ? ? 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")); ? ? } } //重寫鼠標(biāo)按下事件 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(jué) ? ? ? ? ? ? ?checkY=(y-heightC)/heightC;//獲取棋子Y ? ? ? ? ? ? ?qDebug()<<QString("(%1,%2)").arg(checkX).arg(checkY); ? ? ? ? ?} ? ? ? ? ?update(); ? ? ?} } Widget::~Widget() { ? ? delete ui; }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)經(jīng)典掃雷小游戲的示例代碼
掃雷游戲是在一個(gè)指定的二維空間里,隨機(jī)布置雷,把不是雷的位置都找出來(lái),在你點(diǎn)一個(gè)位置的時(shí)候它會(huì)顯示它周圍全部雷的個(gè)數(shù),根據(jù)這個(gè)線索去找 ,會(huì)更容易贏。本文將用C語(yǔ)言實(shí)現(xiàn)這一經(jīng)典游戲,感興趣的可以嘗試一下2022-11-11C++開發(fā)protobuf動(dòng)態(tài)解析工具
這篇文章主要為大家介紹了C++開發(fā)protobuf動(dòng)態(tài)解析工具實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01C語(yǔ)言實(shí)現(xiàn)大學(xué)生考勤管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)大學(xué)生考勤管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12C語(yǔ)言實(shí)現(xiàn)3個(gè)數(shù)從小到大排序/輸出的方法示例
這篇文章主要給大家介紹了關(guān)于如何利用C語(yǔ)言實(shí)現(xiàn)3個(gè)數(shù)從小到大排序/輸出的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用C語(yǔ)言具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05