Qt实现棋盘游戏

 更新时间:2022年01月05日 09:01:51   作者:唐维康  
这篇文章主要为大家详细介绍了Qt实现棋盘游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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;
}

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

相关文章

  • C++实现合并两个排序的链表

    C++实现合并两个排序的链表

    这篇文章主要为大家详细介绍了C++实现合并两个排序的链表,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • C++生成和解析XML文件的讲解

    C++生成和解析XML文件的讲解

    今天小编就为大家分享一篇关于C++生成和解析XML文件的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • C++实现与Lua相互调用的示例详解

    C++实现与Lua相互调用的示例详解

    这篇文章主要为大家详细介绍了C++实现与Lua相互调用的方法,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下
    2023-03-03
  • C语言 链式二叉树结构详解原理

    C语言 链式二叉树结构详解原理

    二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址
    2021-11-11
  • C语言实现三子棋小游戏

    C语言实现三子棋小游戏

    这篇文章主要为大家详细介绍了C语言实现三子棋小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • C++设计模式之单例模式

    C++设计模式之单例模式

    这篇文章主要介绍了C++设计模式之单例模式,本文同时给出了4种单例模式的实现代码,需要的朋友可以参考下
    2014-09-09
  • C++将CBitmap类中的图像保存到文件的方法

    C++将CBitmap类中的图像保存到文件的方法

    这篇文章主要介绍了C++将CBitmap类中的图像保存到文件的方法,涉及C++导出资源文件的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • QT基于TCP网络聊天室

    QT基于TCP网络聊天室

    这篇文章主要为大家详细介绍了QT基于TCP网络聊天室,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • c语言小游戏程序之弹跳小球的实现代码

    c语言小游戏程序之弹跳小球的实现代码

    这篇文章主要介绍了c语言小游戏程序之弹跳小球的实现代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 详解C语言中的自定义类型

    详解C语言中的自定义类型

    这篇文章主要为大家详细介绍了C语言中的四大自定义类型(结构体、位段、枚举和联合)的相关知识,文中的示例代码简洁易懂,需要的可以参考一下
    2023-07-07

最新评论