《华清远见学习手记》之 网络五子棋游戏QT类的设计与实现 (5)
来源:互联网 发布:四级长篇阅读知乎 编辑:程序博客网 时间:2024/05/01 02:15
网络五子棋游戏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类的设计与实现 (5)
- 《华清远见学习手记》之 网络五子棋游戏QT类的设计与实现 (1)
- 《华清远见学习手记》之 网络五子棋游戏QT类的设计与实现 (2)
- 《华清远见学习手记》之 网络五子棋游戏QT类的设计与实现 (3)
- 《华清远见学习手记》之 网络五子棋游戏QT类的设计与实现 (4)
- 《华清远见学习手记》之 移植网络版五子棋游戏到FS2410
- 《华清远见学习手记》 之3G智能机器人——视频监控客户端软件的设计与实现
- 《华清远见学习手记》之 Ubuntu8.10下 配置网络参数
- 《华清远见学习手记》之 嵌入式Linux开发环境的建立
- 《华清远见学习手记》之 配置Ubuntu8.10 的samba服务
- 《华清远见学习手记》之 配置Ubuntu8.10 的NFS服务
- 《华清远见学习手记》之 配置Ubuntu8.10 的tftp服务
- 《华清远见学习手记》之 移植linux2.6.22.6到FS2410遇到的一些问题
- 《华清远见学习手记》之 ubuntu8.10 下搭建QT4.4.0开发环境
- 《华清远见学习手记》之 移植gspca摄像头驱动到FS2410
- 《华清远见学习手记》之 在FS2410上搭建servfox视频服务器
- 《华清远见学习手记》之 移植Boa网页服务器到FS2410
- 《华清远见学习手记》 之3G智能机器人——移植madplay到FS2410
- 解决Rhythmbox乱码
- tslib-1.4交叉编译详细笔记
- 文件夹选项中没有'显示隐藏文件夹'选项解决办法!
- Ubuntu快捷键参考手册
- serv-u 中文 乱码
- 《华清远见学习手记》之 网络五子棋游戏QT类的设计与实现 (5)
- 《How to become a hacker》摘要
- mysql5.5 源码分析(-)
- Multisim学习笔记
- 派生类的继承
- Win7下CUDA 3.2 VS2010 配置指南
- Linux文件系统标准 Linux File System Standard
- 常用大数据量、海量数据处理 方法 / 算法总结
- 用PB实现客户端程序的自动升级