Skip to content

ZWC-father/gobang_cpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gobang CPP

功能介绍

  • 使用C++开发的一个简单的五子棋游戏,有PVP/PVE/Replay模式,按照SDU-CS的大作业标准开发(实现其全部要求的功能)
  • 目前使用minimax搜索/AB剪枝/Zobrist缓存/双指针快速匹配实现人机对战,可以在十秒之内完成五层搜索,棋力一般,对弈可赢大多数人。
  • 使用文件存储回放(调用系统文件管理器选择回放文件),有校验机制,使用SQLite3存储玩家信息
  • 使用ImGui+SDL3实现GUI,OpenGL作为渲染后端,使用显卡加速(虽然毫无意义)
  • 多个页面切换,可自定义控件样式、背景图片,窗口可缩放,能适应高DPI屏幕
  • 有显示玩家输赢的计分板和信息窗口
  • 完整的控制台和文件日志输出,便于调试
  • 完整的异常处理,自动生成崩溃日志
  • 使用多线程,GUI/事件循环/日志/PVE等由单独线程实现,避免卡顿,可随时终止minimax搜索

警告:本项目的代码过于《shi山》,不建议尝试修改

注意:目前仅支持Linux x86-64平台,未来可能支持Windows

如何安装依赖并构建

1.安装OpenGL3GTK3.0依赖
2.安装boost, 只要你的系统不是太过时,使用包管理器即可
3.安装SDL3, 注意需要自行编译安装,在大多数新系统(比如Ubuntu24.04)还只有SDL2的源
4.编译安装nativefiledialog
5.安装sqlite3-devopenssl-dev
6.本项目所需的imguistb_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模式选择回放文件

About

Gobang Game with PVE AI (C/C++五子棋小游戏)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published