【发布时间】:2017-07-30 15:17:46
【问题描述】:
所以我正在为 javascript 制作棋盘游戏 GO,但我在计算领土时遇到了麻烦。如果你不知道,围棋就像一个复杂的棋子,你可以水平和垂直放置石头,而不是对角放置。当游戏结束并且你已经为你的棋子划了一个边界(棋盘边缘算作任何人)时,一个领土就出现了。
所以上面的图片是我目前所拥有的。
白色 = 玩家 1,黑色 = 玩家 2,绿色 = 领土
所以果岭只在比赛结束时出现。游戏已经结束,黑方控制了棋盘的左上角,俘虏了 2 名俘虏。里面的组已被识别并涂成绿色。问题是,我怎么知道绿色区域属于哪个玩家?
任何人都可以看到黑色拥有领土的所有边/边界(记住棋盘边是任何人)。当里面有囚犯时,它开始变得艰难。我可以检查与每个绿色单元格相邻的每个单元格。有黑有白,不是领地,有俘虏就不行了。
我认为可能的一种方法是尝试识别它周围的边界。如果我能做到这一点,我可以很容易地检查它是谁的领土。使用正方形但圆形或任何变形形状来计算边界peices会很容易吗?我不确定。
任何帮助都会得到帮助:)
【问题讨论】:
-
你必须为它创建自己的算法
-
好吧,我收集到了,但是该算法的逻辑是什么?我刚刚意识到我可以滚动浏览组中的每一个部分。如果它的四面都是绿色,它在中间,可以移除以识别边界。不确定这是否适用于囚犯
-
我不知道 Go 是如何工作的。您是否需要找到划分棋盘的棋子路径(因为您说的是洪水填充)-检查this question
-
我已经计算了棋盘的分区。我使用洪水填充来做到这一点,并将组着色为绿色。
-
我可以给你一些我制作的游戏算法的例子,一个是扫雷游戏,每行从左到右从上到下进行,另一个是迷宫生成器,检查它是否是可解决与否,虽然我不知道他们是否会有很大帮助,也没有很好的评论
标签: javascript logic flood-fill