gpt4 book ai didi

javascript - 计算棋盘游戏领土 (GO) 背后的逻辑

转载 作者:行者123 更新时间:2023-11-30 06:51:18 25 4
gpt4 key购买 nike

所以我正在为 javascript 制作棋盘游戏,但我在计算领土时遇到了麻烦。如果您不知道,GO 就像一个复杂的跳棋,您需要水平和垂直而不是对 Angular 放置棋子。当游戏结束并且您已经为自己的棋子划出边界时,就会出现领土(棋盘边缘算作任何人)。

territory

所以上面的图片是我目前所拥有的。

白色 = 玩家 1,黑色 = 玩家 2,绿色 = 领地

所以绿色只会在游戏结束时出现。游戏已经结束,黑棋控制了棋盘的左上角,俘虏了 2 名棋手。里面的小组已被识别并涂上绿色。问题是,我怎么知道绿地属于哪个玩家?

任何人都可以看到黑色拥有领土的所有边/边界(记住棋盘边缘是任何人)。当里面有囚犯时,它开始变得困难。我可以检查与每个绿色单元格相邻的每个单元格。非黑即白不是领土,有犯人就不行。

我认为可能是一种选择的方法是尝试确定围绕它的边界。如果我能做到这一点,我可以很容易地检查它是谁的领地。用正方形计算边框很容易,但用圆形或任何变形的形状?我不确定。

欢迎任何帮助:)

最佳答案

我最终使用自己的算法非常有效地做到了这一点。

它会首先识别有问题的领土并得到lowX, lowY, highX, highY。所以在这种情况下,它将分别为 0、0、5、5。然后我像这样做一个 for 循环:

    for (var j = lowX; j < highX + 1; j++)
{
var lowColumnY = null;
var highColumnY = null;

for (var k = 0; k < territories[i].length; k++)
{
if (territories[i][k].x == j)
{
if ((lowColumnY == null) || (territories[i][k].y < lowColumnY))
{
lowColumnY = territories[i][k].y;
console.log(lowColumnY);
}

if ((territories[i][k].y > highColumnY) || (highColumnY == null))
{
highColumnY = territories[i][k].y;
}
}
}

因此滚动浏览领土的所有列并计算出声明的前 2 个变量的低点和高点。然后我为 Y 重复 for 循环,最后我留下了边界的每个坐标。我已经通过绘制红色圆圈来证明这一点,因此它很容易视觉化,而且如您所见,它不会干扰任何囚犯。

territory

所以最后我只检查红色圆圈所在的 gem 的每种颜色。如果有任何冲突的颜色,它就不可能是领土。由于在这种情况下唯一的颜色是黑色,我们知道这是一片黑色领土。

关于javascript - 计算棋盘游戏领土 (GO) 背后的逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45401378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com