Skip to content

tkzt/gobang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

该死的五子棋

简而言之

「AI五子棋」本来是道哥人工智能课的课设(因而有缘分一窥博弈论,就此而言,谢谢道哥和前女友),当时两三天加熬夜肝出来一个基于 PyGame 的「AI五子棋」,只包含了 ab 剪枝、启发式搜索,而且对候选位置全搜索,再加上 Python 的先天不足,最终 AI 效果几乎不堪直视。

当时忙于谈恋爱与生活(才没有)就没再拾掇。

后来,大三下的暑假,我去了上海实习。在实习单位里,因为杭电的一道 3D Convex Hull 题目,我和小虎同志的交流逐渐多了起来,那是个炎热的夏日,我们激昂地畅想着未来,也讨论六号位带什么更佳……擦,扯远了。划水工作之余,为了消磨时间提高自身技术水平,我们讨论起久违的「AI五子棋」。就在我参考大佬的 Blog ,反手用 JS 给他撸了一个较之前更为机灵的「AI五子棋」后,他这个批拿腾讯的「欢乐五子棋」跟它对局。我输得只能坐公交了。

随后,我直呼还是阴阳师好玩,我要和TA结婚。

但时间转瞬即逝,我的茨林满技能还没有升满,又一个短暂且乏善可陈的寒冬到来了。我想是时候做个了断了。

最后的折腾如下

12/10

  • 完成基本 UI、动效
  • 基于启发式搜索,配合 alpha/beta 剪枝优化,实现基本游戏逻辑

12/17

  • 尝试绝杀等的讨论

12/19

  • 完成绝杀的讨论
  • 完成启发式搜索

至 12/26

  • 加入 Zobrist Hash (6层可以流畅(并不)进行)
  • 加入记轮器、读秒器、返回重新开始等按钮,该死的五子棋近乎完成
  • 「AI五子棋」打败「欢乐五子棋」

1/23

  • 尝试搬移至微信小游戏

1/27

  • 搬完发现,发布需要进行「计算机软件著作权登记」,这玩意儿要钱,遂罢

结果

最后,我的「AI 五子棋」打败「欢乐五子棋」的时候,我仅仅乐了大约四又三分之一个分钟。不是赢棋的乐,是分手快乐的乐。(呕)

赢棋回放在这里。

AI五子棋在这里。

以及这里(源码)。

另外

也尝试着将原理、优化过程写出来,但我太菜,写不好。以后有机……算了,我是鸽子。

About

一个平凡的AI五子棋。极大极小值搜索、启发式搜索、ab剪枝、ZobristHash。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published