五子棋
文章平均质量分 81
one bite
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
五子棋AI - 局面状态
上一篇文章已经有了蒙特卡洛树搜索算法了,再加上五子棋的局面状态的话,基本就是一个简单的 AI 了。这篇文章主要介绍如何实现局面状态。根据五子棋的玩法,我认为五子棋的局面状态应该包含如下数据:当前行棋方 当前局面是否终结 输赢结果 当前棋盘的状态(棋子位置)对于行棋方的表示,我采用 1 表示黑方,-1 表示白方,这样我就可以使用 player = -player 来交换行棋方(有点符...原创 2020-10-12 00:21:04 · 2068 阅读 · 13 评论 -
五子棋AI - 蒙特卡洛树搜索
动机自高中时代做了一个带简单AI的五子棋游戏后,一直以来实现一个更加厉害的五子棋AI算是我的小目标。之前也尝试过使用 MinMax 算法,最终结果不甚理想。当然并不是算法问题,而是搭配这个算法需要许多领域知识,这些知识我并不了解,以至于结果与我的期望相去甚远。我心目中满意的五子棋AI是这样的:不需要像 MinMax 那样去编写一个局面评估函数 算法看上去很简单很傻也没关系,但可以通过...原创 2019-12-17 19:16:14 · 4009 阅读 · 3 评论 -
boardgame.io 五子棋(三):增加趣味
太长不看:点击这里查看源代码上一篇我们做了一个自己的蒙特卡洛 AI,今天我们给我们的游戏增添一点趣味。对称性我们知道五子棋游戏具有对称性,包含旋转和轴对称总计 8 种对称。纵使一个局面有这么多的对称局面,而 AI 却不见得可以利用这种对称性。由于 AI 不懂对称性,总是下相同的着法,咱们可以在游戏中把局面进行对称变换,让 AI 下出来的着法看似有所不同,从而增加一点趣味。大致思路就是,把人类的着法进行变换,然后把 AI 思考出来的着法进行反变换。首先,咱们要有变换函数。新建 src/Symmetry原创 2021-06-21 23:24:19 · 328 阅读 · 0 评论 -
boardgame.io 五子棋(二): AI 改造
太长不看: 点击这里查看完整代码。上一篇我们使用 boardgame.io + wgo.js + React 制作了一个简单的五子棋游戏,虽然引擎给我们搭配了 AI,不过 AI 实在太弱且效率不高,今天我们就自己做一个AI。蒙特卡洛!通过 Debug 面板我们看到,boardgame.io 搭配的 AI 是基于蒙特卡洛的,只是它的实现因为抽象和架构的原因,效率不高且不支持神经网络评估器,我们做一个自己的蒙特卡洛。我们的蒙特卡洛需提供如下功能:自定义评估器。这样我们就能实现神经网络评估和随机模拟评原创 2021-06-20 14:32:00 · 760 阅读 · 0 评论 -
BoardGame.io 五子棋(一)
BoardGame.io 是一个专门为回合制游戏打造的游戏引擎。无需一行网络或存储相关的代码,只需要编写简单函数描述游戏动作如何影响游戏状态,即可自动帮你生成一个支持多人在线的完整游戏。它支持游戏状态管理、多人、AI、阶段或回合管理、游戏大厅等诸多功能。今天我们就用它结合 React 制作一个网页五子棋游戏。准备首先,我们准备一个 React 项目,并添加 BoadGame.io 依赖。npx create-react-app gomokucd gomokunpm install boardgam原创 2021-06-02 11:05:40 · 1413 阅读 · 1 评论
分享