💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
## 游戏逻辑 游戏逻辑的设计是本项目的最大难点。 ### 基本设计概念和处理流程 人机对弈的难点在于当人走一步棋之后,计算机如何走下一步,即计算机如何找出最合适的位置去走棋。这就需要一定的算法,或者叫做计算机的AI。对于井字棋、五子棋等两方较量的游戏来说,Minimax算法(极小极大算法)是最基本也是最常用的。算法的原理不在这里解释了,我们直接看该算法在井字棋中的应用。 ### 井字棋的游戏逻辑 井字棋中,假设使用“X”的是人,使用“O”的是计算机。“X”方先走,设定X方的最大利益为正无穷(程序使用常量+INFINITY表示),O方的最大利益为负无穷(程序中使用-INFINITY表示),即X方和O方走的每步棋都要力图使自己的利益最大化,而使对方的利益最小化。这样我们称X方为MAX(因为他总是追求更大的值),O方为MIN(它总是追求更小的值),各自都为争取自己的最大获益而努力。 ### TopTicTacToe 的逻辑 极小极大算法 整个算法包括如下几个部分: 首先要有一个评估方法gameState,对每走一步棋后的棋局进行评估,估值为WIN常量说明X方,即MAX方获胜;估值为LOSE则O方,即MIN方获胜;估值DRAW为平局;估值为INPROGRESS,说明棋未走完;估值为DOUBLE_LINK,说明棋局中有两连子情况 然后用一个minimax方法寻找在当前棋局状态下X方的最佳位置, X方的最佳位置就是当X走该位置后,O方所有走法中最小值里的最大值,比如图4中第二层X 的位置选择。当找到该位置后,由O方来抢先占据该位置。 最后用两个递归方法min和max来遍历所有的棋局。min方法负责找出O方的最小值,比如图1第二层最左边的棋局会导致5中O方的走法,min方法就是找出这5种走法中的最小值。同理,max方法负责找出X方的最大值,比如图1第二层三种棋局中的中间棋局。