Skip to content

XuShuwenn/Gobang-Game

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 

Repository files navigation

Gobang-Game

2024-2025秋季学期中国科学院大学-C语言程序设计(齐洪钢班)-期末大作业-五子棋AI的C/C++实现


💡基本设定

  • 需实现两种对战模式:
    • 人人对战
    • 人机对战
  • 应用的AI算法:
    • Minimax(极大极小值搜索)算法
    • Alpha-Beta剪枝优化
  • 禁手信息:
    • 只考虑双活三禁手
    • 不考虑双活四禁手和长连禁手

这里的禁手信息仅参考2024-2025秋季学期齐洪钢老师班上的要求,其他老师班的要求有所不同。


💡主要函数及功能

因为代码中注释比较详细,笔者在这里不过多展示具体函数名,只是分模块简要介绍函数功能,便于读者理解学习。函数主要分为四部分:

  1. 基础设置函数:关于棋盘、落子、合法性判断、输赢判断等基础函数

  2. AI算法实现函数:

    1. 统计和估价函数
    2. Minimax+α-β剪枝算法实现(AI核心函数)
  3. 下棋功能实现函数:包括人人对战、人机对战、悔棋、复盘等函数

  4. 图形化实现函数:包括绘制棋盘、绘制棋子、绘制按钮、显示文字及实时更新得分等函数


💡一些碎碎念

  • 大二上期末月的众多DDL怪兽之中,五子棋可以说是最令人头疼的一只了。

  • 齐老师的实验课上,人人对战的实现很快可以完成,然而更为困难的AI设计和实现却令人毫无头绪。

  • 起初的半个多月中,我将所有时间花费于在各平台上(CSDN,B站,github等)查找资料,在了解各种算法逻辑之后选择了较易理解的Minimax算法以及Alpha-Beta剪枝优化;又经过半个多月的代码编辑后,我终于得到了第一版用于期末五子棋竞赛的代码,这期间,github各路大神的思路和代码给予了我莫大的帮助!

  • 关于版本迭代:

    version1.0:完成于2024.12.27(代码提交ddl前一天),该版本在次日齐洪钢班的五子棋竞赛中获得冠军。

    version1.08:完成于2025.1.08(C语言期末笔试后),尝试在放宽步时限制的前提下将搜索深度提高到10层,同时优化赋分逻辑;增加AI评分显示功能。

    version1.28:完成于2025.1.28(除夕日上午),增加了基于Easyx库的图形化界面,增加鼠标操作、鼠标落子等功能。

    待更新版本:easyx版的悔棋和复盘功能还未开放。

  • 五子棋是我完成的第一个项目,也是我和github相识的开始,笔者甚至为了写这篇readme.md专门去学了一下markdown笔记的语法,算是一个不错的开端吧,希望以后能在自己所热爱的道路上越走越远~


💡注意事项

  • 本项目凝聚了部分前人智慧和作者近两个月的心血,但未经过大量运行结果检验,故可能存在潜在的bug,欢迎随时Pull requests。
  • 仅供参考学习使用,可以随意fork或download,代码里注释也写的很详细,尽量避免直接copy/paste。
  • 如果本内容对你有帮助,可以为主播点个star~

💡参考资料及致谢:

About

中国科学院大学-C语言程序设计课程 期末大作业-五子棋AI的C/C++实现

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published