首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >计算游戏“围棋”的得分

计算游戏“围棋”的得分
EN

Stack Overflow用户
提问于 2015-05-26 15:06:54
回答 2查看 3K关注 0票数 5

有人知道如何通过编程计算游戏中的分数吗?我有一个19x19的数组,这个数组的每个元素可以是0(空点)、1(黑石)或2(白石)。我不明白如何检查这个区域是否属于任何颜色。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-26 19:57:56

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

票数 5
EN

Stack Overflow用户

发布于 2021-03-16 11:16:29

除了@ your 256.的答案外,还有一些高层次的概念可以帮助您决定如何深入评估Go评分:

  1. Life --一个群体需要两只眼睛才能活下去。如果一群人被包围,没有两只眼睛,它可能已经死了。
  2. 组计数排序--就像游戏通常从角落开始,移动到两边,然后在中间结束一样,这个顺序也是开始计算分数的最简单的方式。一个角落只需要两堵墙就能创造领土,一边是3面墙,另一面是中间的4面墙。
  3. Line number --在得分估计中,拥有最接近董事会边缘的石头的群体更有可能被建立在自己的领地上:“第4行代表‘影响’,第3行代表‘领土’”是一句常见的格言。因此,开始计数从角落,但最接近的石头最接近板的边缘先数。第一条线上可能没有石头,但第二条线上可能有几块石头。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30462341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档