用 Python 实现围棋游戏
1. 实现围棋棋盘
在考虑游戏状态之前,我们先实现 Board 类。最初的想法可能是创建一个 19×19 的数组来跟踪棋盘上每个点的状态,这是一个不错的起点。但在检查何时从棋盘上移除棋子时,情况会变得复杂。单个棋子的气数由其直接相邻的空点数定义。如果四个相邻点都被敌方棋子占据,该棋子就没有气了,会被提掉。对于更大的相连棋子组,检查起来更困难。例如,放置一颗黑子后,需要检查所有相邻的白子,看黑子是否提掉了某些白子。具体需要检查以下内容:
1. 查看相邻棋子是否还有气。
2. 检查相邻棋子的相邻棋子是否还有气。
3. 以此类推,检查相邻棋子的相邻棋子的相邻棋子。
这个过程可能需要数百步才能完成。为了加快速度,可以将所有直接相连的棋子作为一个单元进行显式跟踪。
2. 跟踪围棋中的相连棋子组:串
单独看待棋子会增加计算复杂度。我们可以同时跟踪相同颜色的相连棋子组及其气数,这样在实现游戏逻辑时效率更高。我们将相同颜色的相连棋子组称为“串”(string)。可以使用 Python 的 set 类型高效地构建这个结构,以下是 GoString 类的实现,将其放在 goboard_slow.py 文件中:
class GoString():
def __init__(self, color, stones, liberties):
self.color = color
se
超级会员免费看
订阅专栏 解锁全文
903

被折叠的 条评论
为什么被折叠?



