「AI五子棋」本来是道哥人工智能课的课设(因而有缘分一窥博弈论,就此而言,谢谢道哥和前女友),当时两三天加熬夜肝出来一个基于 PyGame 的「AI五子棋」,只包含了 ab 剪枝、启发式搜索,而且对候选位置全搜索,再加上 Python 的先天不足,最终 AI 效果几乎不堪直视。
当时忙于谈恋爱与生活(才没有)就没再拾掇。
后来,大三下的暑假,我去了上海实习。在实习单位里,因为杭电的一道 3D Convex Hull 题目,我和小虎同志的交流逐渐多了起来,那是个炎热的夏日,我们激昂地畅想着未来,也讨论六号位带什么更佳……擦,扯远了。划水工作之余,为了消磨时间提高自身技术水平,我们讨论起久违的「AI五子棋」。就在我参考大佬的 Blog ,反手用 JS 给他撸了一个较之前更为机灵的「AI五子棋」后,他这个批拿腾讯的「欢乐五子棋」跟它对局。我输得只能坐公交了。
随后,我直呼还是阴阳师好玩,我要和TA结婚。
但时间转瞬即逝,我的茨林满技能还没有升满,又一个短暂且乏善可陈的寒冬到来了。我想是时候做个了断了。
- 完成基本 UI、动效
- 基于启发式搜索,配合 alpha/beta 剪枝优化,实现基本游戏逻辑
- 尝试绝杀等的讨论
- 完成绝杀的讨论
- 完成启发式搜索
- 加入 Zobrist Hash (6层可以流畅(并不)进行)
- 加入记轮器、读秒器、返回重新开始等按钮,该死的五子棋近乎完成
- 「AI五子棋」打败「欢乐五子棋」
- 尝试搬移至微信小游戏
- 搬完发现,发布需要进行「计算机软件著作权登记」,这玩意儿要钱,遂罢
最后,我的「AI 五子棋」打败「欢乐五子棋」的时候,我仅仅乐了大约四又三分之一个分钟。不是赢棋的乐,是分手快乐的乐。(呕)
也尝试着将原理、优化过程写出来,但我太菜,写不好。以后有机……算了,我是鸽子。