有人知道如何通过编程计算去游戏中的分数吗?我有一个19x19的数组,这个数组的每个元素可以是0(空点)、1(黑石)或2(白石)。我不明白如何检查这个区域是否属于任何颜色。
发布于 2015-05-26 19:57:56
这是一个非常重要的问题,因为通常情况下,在玩家做出所有必要的动作之前,围棋就会结束,以使游戏的“真实”分数/价值变得显而易见。有时,假设一个玩家玩得不太好,游戏的价值可能会有所不同(例如,让对手完成建立一组在对方领土上有生命的石头,尽管可以证明有可能杀死这组石头)。计算未被侵入的区域是相当明显的,只要检查每个空间是否在每一个方向(正的和负的水平和垂直的)由板的边缘或一种颜色的碎片“切断”。您可以更有效地完成这一任务,方法是从空点开始先搜索宽度,并跟踪在处理过程中遇到哪些颜色(而不是从被占领的位置遍历BFS ),并且一旦找不到更多的空点,那么如果找到的彩色片段都是一种颜色,那么发现的所有空白空间都属于该颜色,否则它们就不属于任何人。然后继续广度第一次搜索与下一个未探索的空点,删除所有以前探索过的空点。但是,如果对手在既定领土上有一个棋子,在计算领土时最好忽略这一块,实际上甚至被认为是被捕获的。情况是一样的,如果很明显,一组对手的棋子在玩家的领地内,如果他们不犯错误的话,将会“最终”被捕获。如果两名玩家各自有一组与对方相邻的棋子,那么情况就更微妙了,例如,如果一位玩家试图杀死对方的棋子,那么对手就能杀死原玩家的棋子,反之亦然。
发布于 2021-03-16 11:16:29
除了@ your 256.的答案外,还有一些高层次的概念可以帮助您决定如何深入评估Go评分:
https://stackoverflow.com/questions/30462341
复制相似问题