国际象棋
在Python 3中实现
作者:傅志远
作为国际象棋爱好者,我决定编写一个玩象棋的机器人程序。 事实证明,编写国际象棋程序并不是一件容易的事。 国际象棋有6种不同的棋子,棋子的动作非常不同(L形,对角线,垂直,水平),并且玩家可以为每一棋子做出大量可能的棋子。 除此之外,国际象棋还有很多规则,例如传人、,和典当推广。
我首先使用数组数组实现了这个ChessAI。 这是一种幼稚的方式,因为运行时间太大。 这是因为对于每一块,我们将需要沿着其移动路径遍历所有正方形瓷砖,直到找到碰撞的块。 这是极其低效的,并且对于具有大量可能动作的游戏,这将严重限制我们可以搜索的关卡数量。
我报废了整个事情,并使用位棋盘的概念重写它,和它的作品非常好。 由于玩家每回合可能做出的动作可能很大,因此我决定使用Principal Variation Search / Negascout (主要变化形式为
2022-12-07 16:27:36
236KB
Python
1