基于Ubuntu下的QT制作黑白棋游戏


本文以begin为第一跳转界面

第二跳转界面(heibai)为People to People(人人对战)

第三跳转界面(heibai2)为People to Computer(人机对战)

三张效果图如下:



各个页面源代码如下:


头文件:


begin.h

#ifndef BEGIN_H
#define BEGIN_H
#include <heibai.h>
#include <heibai2.h>
#include <QMainWindow>
#include <QPaintEvent>
#include <QWidget>
#include <QMouseEvent>
#include <phonon/MediaObject>




namespace Ui {
class begin;
}
//enum GridState{Black,White,Empty};
class begin : public QMainWindow
{
    Q_OBJECT


public:
        explicit begin(QWidget *parent = 0);
        ~begin();
        void paintEvent(QPaintEvent *e);
        enum GridState{Black,White,Empty};








private slots:
    void on_pushButton_clicked();
    void on_pushButton_2_clicked();
    void put();
    void put2();
    void do_timer();


private:
        Ui::begin *ui;
        heibai b;
        heibai2 b2;


        int sec;


};


#endif // BEGIN_H



heibai.h


#ifndef HEIBAI_H
#define HEIBAI_H


#include <QWidget>
#include <QPaintEvent>
#include <QMainWindow>




#include <QMouseEvent>
namespace Ui {
class heibai;
}




class heibai : public QWidget
{
    Q_OBJECT


public:
    explicit heibai(QWidget *parent = 0);
    ~heibai();
       void paintEvent(QPaintEvent *e);
       enum GridState{Black,White,Empty};


       void mousePressEvent(QMouseEvent *e);
       void mouseMoveEvent(QMouseEvent *e);
       int judgeRule(int x, int y, int gridNum, void *chess, GridState currentRole);
       int judgeRule2(int x, int y, int gridNum, void *chess, GridState currentRole);


private:
    Ui::heibai *ui;
    int sec;


    QTimer *timer;


        int chessNumber[8][8];
        GridState currentRole;
        int xPoint,yPoint;
        int BlackNumber;
        int WhiteNumber;


signals:
    void give();


private slots:
    void do_timer();
    void do_timer2();
    void on_pushButton_clicked();


    void on_pushButton_3_clicked();
    void on_pushButton_4_clicked();
    void on_pushButton_5_clicked();


    void on_pushButton_7_clicked();
    void on_pushButton_8_clicked();


};





#endif // HEIBAI_H




heibai2.h



#ifndef HEIBAI2_H
#define HEIBAI2_H




#include <QWidget>
#include <QPaintEvent>
#include <QMainWindow>




#include <QMouseEvent>


namespace Ui {
class heibai2;
}


class heibai2 : public QWidget
{
    Q_OBJECT


public:
    explicit heibai2(QWidget *parent = 0);
    void paintEvent(QPaintEvent *e);
       enum GridState{Water,Fire,Air};
       void mousePressEvent(QMouseEvent *e);
       void mouseMoveEvent(QMouseEvent *e);
       int judgeRule(int x, int y, int gridNum, void *chess, GridState currentRole);
       int judgeRule2(int x, int y, int gridNum, void *chess, GridState currentRole);
    ~heibai2();


signals:
    void give2();


private slots:


    void do_timer();
    void do_timer2();
    void on_pushButton_clicked();
    void on_pushButton_2_clicked();
    void on_pushButton_3_clicked();
    void on_pushButton_4_clicked();


    void on_pushButton_5_clicked();


    void on_pushButton_6_clicked();


    void on_pushButton_7_clicked();


private:
    Ui::heibai2 *ui;
    int sec;


        QTimer *timer;
        int chessNumber[8][8];
        GridState currentRole;
        int xPoint,yPoint;
        int BlackNumber;
        int WhiteNumber;
};


#endif // HEIBAI2_H



begin.cpp


#include "begin.h"
#include "ui_begin.h"
#include "QPainter"
#include "QTimer"


begin::begin(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::begin)
{
    ui->setupUi(this);


    connect(&this->b,SIGNAL(give()),this,SLOT(put()));
    connect(&this->b2,SIGNAL(give2()),this,SLOT(put2()));


}


begin::~begin()
{
    delete ui;


}




void begin::put()
{
    this->show();
}




void begin::put2()
{
    this->show();
}






void begin::paintEvent(QPaintEvent *e)                 //background picture
{
    QPainter p(this);
    p.drawPixmap(0,0,1366,768,QPixmap(":/new/prefix1/images /11.png"));


}




void begin::on_pushButton_clicked()
{
    b.setFixedSize(1366,768);
    b.show();
    this->close();
}


void begin::on_pushButton_2_clicked()
{
    b2.setFixedSize(1366,768);
    b2.show();
    this->close();
}







heibai.cpp



#include "heibai.h"
#include "ui_heibai.h"
#include <QTimer>
#include <QPainter>
#include <QPen>
#include "QMovie"
#include "QMessageBox"
heibai::heibai(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::heibai)
{
    ui->setupUi(this);
    sec=11;
     this->setMouseTracking(true);
    QTimer

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值