Qt 井字棋游戏

井字棋游戏:任意一方先走,占据一个格子,只要某一方先在井字中画成一条直线就算赢。

首先在Qt Creator 中创建我们需要的项目,代码如下

widget.h文件

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>class QGridLayout;
class QLabel;
class Widget : public QWidget
{
   
    Q_OBJECT
​
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();//初始化界面布局
    void initUi();//重写事件过滤器
    bool eventFilter(QObject *, QEvent *);//计算
    bool calculate(QList<int>,int);//判断是否已经选择
    inline bool isSelected(int);
​
​
private://网格布局
    QGridLayout* gridLayout;//声明9个格子
    QLabel* label1;
    QLabel* label2;
    QLabel* label3;
    QLabel* label4;
    QLabel* label5;
    QLabel* label6;
    QLabel* label7;
    QLabel* label8;
    QLabel* label9;//接收选中的数字
    int num;//判断是红方还是蓝方(自增,奇数为红,偶数为蓝)
    int isRed;//保存红方选中的数字列表
    QList<int> redList;
    //保存蓝方选中的数字列表
    QList<int> blueList;};
#endif // WIDGET_H

widget.cpp 文件

#include "widget.h"
#include <QLabel>
#include <QGridLayout>
#include <QEvent>
#include <QDebug>
#include <QMessageBox>
#include <QString>
#include <QPushButton>
#include <QApplication>Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
   //判断是红方还是蓝方(自增,奇数为红,偶数为蓝)
    isRed = 1;//设置窗口标题
    setWindowTitle(QStringLiteral("井字棋游戏"));//设置主窗口最小大小
    setMinimumSize(740, 700);//初始化界面布局
    initUi();//给每个格子添加事件过滤
    label1->installEventFilter(this);
    label2->installEventFilter(this);
    label3->installEventFilter(this);
    label4->installEventFilter(this);
    label5->installEventFilter(this);
    label6->installEventFilter(this);
    label7->installEventFilter(this);
    label8->installEventFilter(this);
    label9->installEventFilter(this);}//初始化界面布局
void Widget::initUi(){
   //初始化
    label1 = new QLabel("1");
    label1->setText("1");
    label2 = new QLabel("2");
    label3 = new QLabel("3");
    label4 = new QLabel("4");
    label5 = new QLabel("5");
    label6 = new QLabel(
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值