- 使用C++开发的一个简单的五子棋游戏,有PVP/PVE/Replay模式,按照SDU-CS的大作业标准开发(实现其全部要求的功能)
- 目前使用minimax搜索/AB剪枝/Zobrist缓存/双指针快速匹配实现人机对战,可以在十秒之内完成五层搜索,棋力一般,对弈可赢大多数人。
- 使用文件存储回放(调用系统文件管理器选择回放文件),有校验机制,使用SQLite3存储玩家信息
- 使用ImGui+SDL3实现GUI,OpenGL作为渲染后端,使用显卡加速(虽然毫无意义)
- 多个页面切换,可自定义控件样式、背景图片,窗口可缩放,能适应高DPI屏幕
- 有显示玩家输赢的计分板和信息窗口
- 完整的控制台和文件日志输出,便于调试
- 完整的异常处理,自动生成崩溃日志
- 使用多线程,GUI/事件循环/日志/PVE等由单独线程实现,避免卡顿,可随时终止minimax搜索
警告:本项目的代码过于《shi山》,不建议尝试修改
注意:目前仅支持Linux x86-64平台,未来可能支持Windows
1.安装OpenGL3
和GTK3.0
依赖
2.安装boost
, 只要你的系统不是太过时,使用包管理器即可
3.安装SDL3
, 注意需要自行编译安装,在大多数新系统(比如Ubuntu24.04)还只有SDL2的源
4.编译安装nativefiledialog
5.安装sqlite3-dev
和openssl-dev
6.本项目所需的imgui
和stb_image
已经包含在源文件中
7.本项目使用cmake构建,请根据你的环境自行修改CMakeLists
8.本项目所需的图片和字体文件在assets/
下,请在编译出的二进制文件所在目录下创建resources
文件夹,放入其中
9.bin/
中有编译好的二进制和work directory
的结构示例
10.test/
中有pve算法的demo:main_pve_full_ver*.cpp
,可以自行编译使用(建议使用O3优化,使用C++20标准)(目前ver2效率最高,ver3有复合模型匹配,但是默认未启用,因为参数没调好,ver1使用hash匹配,效率较低)
- 对代码进行去《shi山》化,去除其中为了完成作业而意义不大的部分,把UI部分换为Python实现
- 使用网络库(如libev)实现联机功能
- 重点: 对PVE部分的算法进行大幅度优化,加入启发式搜索/迭代加深/算杀/各种其他剪枝/多线程搜索
- 或许后面学了AI,可以用神经网络跑一个?
- 主窗口
- PVP设置页(PVE设置页略)
- PVP棋盘
- PVE后手打赢比较有名的一个Gobang-AI的最低难度(使用迭代加深2~10层搜索)(我借用了他的棋盘图片)
- Replay模式选择回放文件