成员: 3150 范宏昌 3150 方共凡 3150 杜众舒 3140103103 郑济元
本五子棋游戏采用c++作为开发语言,使用了QT跨平台库,具有以下功能:
- 本机人人对战模式
- 该模式下黑白两方玩家轮流在一个棋盘上下棋
- 上一次落子的一方玩家可以进行悔棋
- 轮到自己下棋的一方玩家可以进行认输
- 游戏中途可以保存对局,可在以后选择加载对局
- 游戏结束可以保存游戏棋谱(带落子顺序标记)
- 本机人机对战模式
- 该模式下默认玩家执黑,电脑AI执白,轮流在一个棋盘上下棋
- 玩家可以进行悔棋
- 玩家可以进行认输
- 游戏中途可以保存对局,可在以后选择加载对局
- 游戏结束可以保存游戏棋谱(带落子顺序标记)
-
$网络人人对战模式^*$ - 该模式下黑白两方玩家各自开一个客户端,连接上服务器后,分别在自己的棋盘上下棋
- 任一方玩家可以在轮到自己下和轮到对方下时申请进行悔棋,待对方同意后即可悔棋
- 任一方玩家可以在轮到自己下和轮到对方下时进行认输
- 游戏结束可以保存游戏棋谱(带落子顺序标记)
- 开始游戏
- 启动Client客户端,打开菜单Game - New Game, 选择Local PvP或Local PvE即可开始一局单机的人人对战或人机对战游戏。
- 启动Server服务端,再打开两个Client客户端,分别选择Online PvP模式,即可开始一局联机的人人对战游戏。
- 保存/读取进度
- 在Client客户端中单机游戏开始后,打开菜单Game - Save Game,保存当前对弈的存档(任意设置存储位置与文件名)。
- 在Client客户端打开后,打开菜单Game - Load Game,即可载入之前保存的对弈,游戏模式以保存时的游戏模式为准(任意选择存档)。
- 保存棋谱
- 在任意一局比赛完成后,都可以选择保存当前比赛的棋谱————记录整局对弈过程的图片文件(任意设置存储位置与文件名)。
- 关闭游戏
- 点击窗口右上角红叉。
- 在Client客户端中可以打开菜单Game - Quit Application,退出应用。
- GobangBoard
- 最底层的棋盘类GobangBoard,储存有棋盘board、历史记录record、当前游戏状态state、当前执子人player、剩余时间blackTimer,whiteTimer等基础 的信息。
- 提供的接口能够访问到所有的成员变量,但是只有剩余时间与游戏状态能够被修改。
- 除了基础的棋盘状态判断功能check()、落子功能play()与放弃游戏等棋盘状态转换函数giveup()外,还提供了存档函数save(),能够将当前棋盘及其历史 记录保存到文本文件当中。
int board[SIZE][SIZE];
- 由二维数组保存,每个单元对应棋盘上一个交叉点,储存这个位置的棋子信息。
int play(int x, int y);
- 在棋盘board[x][y]处放置与当前player对应的棋子。
- 在历史记录record中添加当前落子记录。
- 调用check()函数判断游戏是否结束。
- 根据check()返回结果调整当前棋盘的状态,如更换执子人、游戏结束等。
int GobangBoard::regret(int regreter);
- 从历史记录record中pop出一条最近的记录。
- 根据记录将棋盘恢复为上一次落子前的状态。
int save(int gamemode);
- 槽函数,能够被其他任意类访问。
- 将历史记录record写入文件。
- 保存文件使用QFileDialog库,实现文件名与保存位置自定义。
void loadBoard(int b, int w, QVector<int> record);
- 槽函数,能够被其他任意类访问。
- 与上层函数配合,接收黑子、白子的剩余时间与游戏的历史记录。
- 调用play()函数模拟上一次对弈。
- 设置剩余时间完成读取。
void giveup(int loser)
- 槽函数,能够被其他任意类访问。
- 设置棋盘状态为游戏结束,并发出游戏结束的信号,启动游戏结束的各项进程。
- 客户端部分主程序
gobangclient/main.cpp
- 定义了整个程序中用到的宏名
gobangclient/marcos.h
- 主窗口的头文件、cpp文件和ui设计文件
gobangclient/mainwindow.h
,gobangclient/mainwindow.cpp
,gobangclient/mainwindow.ui
- 棋盘界面类的头文件、cpp文件
gobangclient/boardui.h
,gobangclient/boardui.cpp
- 客户端类的头文件、cpp文件
gobangclient/client.h
,gobangclient/client.cpp
- 电脑AI类的头文件、cpp文件
gobangclient/gobangai.h
,gobangclient/gobangai.cpp
- 棋盘底层存储类的头文件、cpp文件
gobangclient/gobangboard.h
,gobangclient/gobangboard.cpp
- 服务器类头文件、cpp文件和ui设计文件
gobangserver/dialog.h
,gobangserver/dialog.cpp
,gobangserver/dialog.ui
, - 服务器端主程序
gobangserver/main.cpp