《华清远见学习手记》之 网络五子棋游戏QT类的设计与实现 (5)

原创 2011年01月16日 20:15:00

网络五子棋游戏QT类的设计与实现 (5)

 

   第四版的五子棋游戏界面虽然漂亮多了,但是只能自个跟自个下或者两个人轮着下,本文一直都是标榜 "网络“ ,可到现在还是没有看到它的影子。

   请稍等,容我画一下桃符:

   1. 原程序一分为二,添加QTcpSever 和QTcpSocket类实现网络功能,即采用TCP协议来为服务器端的棋盘数据与客户端的棋盘数据达到同步更新。

   2. 服务器端为黑棋方,首先打开某个端口并在其上监听,代表白棋的客户端发出连接请求,建立连接后黑棋先下。

   3. 任何一方点击鼠标下完棋后,应及时将棋盘数据及当前状态报告给对方。

   4. 任何一方的网络发生中断,另一方应能给出提示,可选择重连或退出。

   5. 下面是主要修改过的类实现的头文件:

        -------黑棋  (服务器端)-------

       chessBase.h:

 

class ChessBase:public QDialog
{
Q_OBJECT
public:
    ChessBase(int,char**);
public slots:
    void slotTurn(bool);
    void slotVictory(bool);
    void slotRestart();
    void slotStart();
    void slotTransforData(int,int,int); //发送数据的槽
    void slotUpdateServerData();   // 更新服务器数据
    void slotAcceptConnection();    //  接收连接
    void slotReportTcpError(QAbstractSocket::SocketError); // 报告TCP错误

signals:
    void signalStart();
    void signalRestart();
    void signalClear();
    void signalSetChess(int,int,int); // 下棋信号
private:
    ChessBoard *board;
    MyChess *white;
    MyChess *black;
    ChessView *view;   
    QLabel*statusLabel;
    QPushButton *startButton;
    QPushButton *restartButton;
    QPushButton *quitButton;
    QTcpServer tcpServer; // 服务器端TcpSocket 用于监听
    QTcpSocket *tcpServerConnection; // 用于与客户端建立连接

    qint16 cx;     // 下棋的X坐标
    qint16 cy;
     // 下棋的Y坐标
    qint16 status; // 当前状态
    qint32 msgSize;// 消息大小
,目前未用到
    QString msg;     // 消息,目前未用到
    QByteArray inBlock; // 接收数据处理
    QByteArray outBlock; // 发送数据处理
 
};

   -------白棋  (客户器端)-------

       chessBase.h:

class ChessBase:public QDialog
{
Q_OBJECT
public:
    ChessBase(int,char**);
public slots:
    void slotTurn(bool);
    void slotVictory(bool);
    void slotRestart();
    void slotStart();
    void slotConnected(); // TCP已连接的槽
    void slotTransforData(int,int,int);
//发送数据的槽
    void slotUpdateClientData(); // 更新客户端数据
    void slotReportTcpError(QAbstractSocket::SocketError ); // 报告TCP错误
signals:
    void signalStart();
    void signalRestart();
    void signalClear();
    void signalSetChess(int,int,int);
// 下棋信号
private:
    ChessBoard *board;
    MyChess *white;
    MyChess *black;
    ChessView *view;   
    QLabel*statusLabel;
    QPushButton *startButton;
    QPushButton *restartButton;
    QPushButton *quitButton;
    QTcpSocket tcpClient; // 客户端TcpSocket
   
qint16 cx;     // 下棋的X坐标
    qint16 cy;
     // 下棋的Y坐标
    qint16 status; // 当前状态
    qint32 msgSize;// 消息大小
,目前未用到
    QString msg;     // 消息,目前未用到
    QByteArray inBlock; // 接收数据处理
    QByteArray outBlock; // 发送数据处理

};

6. 犹抱琵琶半遮面,千呼万唤始出来!第五版的网络版的 五子棋游戏:

 

Qt小游戏开发:五子棋(带AI功能)

写了一个带AI的五子棋小游戏,AI的表现还可以~ 预览 步骤 整体的代码结构,一个游戏逻辑类,一个UI类 1 定义游戏数据结构 // 游戏类型,双人还是AI(目前固定让AI下...
  • u012234115
  • u012234115
  • 2016年12月25日 18:22
  • 4654

QT实现五子棋(附源码)

QT 实现五子棋功能,无AI。
  • love_ljq
  • love_ljq
  • 2016年05月14日 20:48
  • 4531

C/C++用QT写的五子棋源码

效果图:   FIR.pro #------------------------------------------------- # # Project created by QtCrea...
  • zhangguangyi888
  • zhangguangyi888
  • 2012年11月16日 20:45
  • 9957

Qt写的单机版的五子棋游戏源代码

  • 2012年04月25日 23:12
  • 10KB
  • 下载

Qt之五子棋

本来想学学写象棋,不过看到同学用swing写了个五子棋,心里痒痒也就写了个。开始写的时候是想用qt的图形视图框架写,但是我对这个有点懵逼,就去网上找五子棋,看到了有人直接在在窗口上绘图写五子棋,于是就...
  • gyhguoge01234
  • gyhguoge01234
  • 2016年10月11日 22:37
  • 899

用qt的图形视图框架实现的五子棋

用qt的图形视图框架实现的五子棋. 效果如图: /*MainWindow.h*/ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include #inc...
  • qq_18426941
  • qq_18426941
  • 2015年07月30日 18:38
  • 1692

C/C++用QT写的五子棋源码

效果图:   FIR.pro [cpp] view plain copy #----------------------------------...
  • imxiangzi
  • imxiangzi
  • 2016年02月15日 11:31
  • 2223

《华清远见学习手记》之 网络五子棋游戏QT类的设计与实现 (4)

经过一段时间的C++和QT的学习,打算好好的改造一下前面的C++五子棋游戏
  • boat_man
  • boat_man
  • 2011年01月16日 19:31
  • 2786

Qt网络五子棋-服务器端

服务器端:
  • baiding1123
  • baiding1123
  • 2013年12月08日 15:33
  • 2257

Qt网络五子棋游戏

  • 2013年12月08日 00:04
  • 3.45MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:《华清远见学习手记》之 网络五子棋游戏QT类的设计与实现 (5)
举报原因:
原因补充:

(最多只允许输入30个字)