本篇我在这里理清五子棋人机对战的思路。由于本人没有深究五子棋的玩法,因此对于“禁手”等专业词语还不是很清楚,只知道“五子连珠”获得游戏胜利和黑棋(玩家)先手这样的简单规则。以此基础参考“评分表法”(或者称“五元组法”)实现五子棋的人机对战。
一、评分表法
首先,人机对战最重要的是解决机器怎么下棋的问题。下棋不是随便下在任意位置上就可以,而是下在最合适的位置上,就像我们人类思考最佳的下棋位置一样。那么如何选择这个位置是关键,例如当玩家下了连续一条线上的3个黑棋,而机器下的白棋没有3个连在一起,这个时候机器需要想办法堵住玩家的黑棋,不能让玩家有4个连续的黑棋且两头没有堵住,否则机器必输。类似这样的攻防也是需要考虑在内的。因此采用“评分表法”来确定棋盘中哪个位置是最合适的。
首先先了解“五元组”的概念,一般五子棋盘是15*15的,也就是说一行可以下15个棋,一共有15行。那么一个“五元组”指的是连续的5个下棋位置作为一组,不管是水平方向、垂直方向还是斜方向。棋盘中共有572个五元组,但这个信息你可以不用考虑,对这里分析算法没有任何帮助。
上图所画3个红圈分别是3个“五元组”,分别有水平方向、垂直方向、斜方向
“评分表法”就是为棋盘中每一个“五元组”进行评分,并将分值赋给该“五元组”中的5个下棋位置。显然,棋盘中的某个下棋位置不可能只在一个“五元组”中,因此该下棋位置的分数需要它