基于Qt Widgets(c++)
联机双人对战,用DFS简单实现了工兵移动 目前貌似只支持OSX系统
-
网络连接用的ip是本机所有IP地址中符合ipv4协议且非本地ip的第一个ip地址
-
端口预设8081
-
有聊天系统,未来打算通过聊天系统提供作弊操作(可能会添加微信收款码🐶)
-
有20秒计时器,用lcdnumber显示
-
棋盘和棋子用的QLabel实现,重载了鼠标release槽,固定棋盘中60个位置,对每个位置的相邻位置以及该位置是否在铁路上做了记录,打乱棋盘时shuffle棋子数组,然后用打乱后的棋子数组与固定的棋盘数组进行布局
-
棋子在选中时鼠标release事件会得到选中的行列,从而通过遍历棋子数组找到选中的棋子,再判断并操作当前棋子
-
选中棋子的边框用的双缓冲绘制(先绘制在一个pixmap上,再用paintevent画到棋盘上)
-
没有实现悔棋(个人感觉没必要)
-
输赢条件 ** 排完地雷扛军棋 ** 超时三次判输 ** 离开游戏或投降判输
- main.cpp
- 不多介绍了,进程入口
- mainwindow.cpp
- 在此窗口选择是要创房间还是加入别人的房间
- client.cpp
- 在此窗口连接到别人的房间,输入ip地址,并有正则表达式对IP地址进行格式判断
- server.cpp
- 在此窗口创建房间,显示ip地址
- numkeyboard.cpp
- 如其名,数字键盘的实现,包含了删除和清除操作
- chess.cpp
- 棋子类,继承自QLabel,内部存有棋子的信息,包括但不限于生死、位置、类型、图片路径等等
- countdown.cpp
- 倒计时类,继承自QLcdNumber,固定base计时20s发出timeout信号
- board.cpp
- 棋盘类,包含了游戏的界面、游戏逻辑、通信方式,在此窗口下进行对局,同时还有聊天功能