gpt4 book ai didi

java - 在二维数组中搜索对角线

转载 作者:行者123 更新时间:2023-12-02 05:09:44 24 4
gpt4 key购买 nike

我正在尝试在 2D 数组中对角搜索四连游戏。我以为我已经弄清楚了,但显然我错了。第一组 for 循环工作正常,从右到左、对角线搜索。第二组 for 循环不起作用。我认为我所要做的就是将一些积极的迹象转变为消极的迹象,它就起作用了。最终,通过更改 GRID_HEIGHT-1,我能够让它部分工作......但是,我不断收到绑定(bind)错误。此时任何帮助将不胜感激。此外,二维数组的网格为 5x4。所以它真的连接3。

    for (int y = 0; y <= GRID_HEIGHT-3; y++) {
for (int x = 0; x <= GRID_WIDTH-3; x++) {
if (
state[y][x] != Player.NONE &&
state[y][x] == state[y+1][x+1] &&
state[y+1][x+1] == state[y+2][x+2]
) return state[y][x];
}
}
for (int y = 0; y <= GRID_HEIGHT-3; y++) {
for (int x = 0; x <= GRID_WIDTH-3; x++) {
if (
state[y][x] != Player.NONE &&
state[y][x] == state[y-1][x-1] &&
state[y-1][x-1] == state[y-1][x-2]
) return state[y][x];
}
}


return Player.NONE;

}

最佳答案

对于第二组循环,您将从索引中减去,这意味着索引可以低于零。您需要循环在零以上开始。

for (int y = 2; y < GRID_HEIGHT; y++) {
for (int x = 2; x < GRID_WIDTH; x++) {
if (
state[y][x] != Player.NONE &&
state[y][x] == state[y-1][x-1] &&
state[y-1][x-1] == state[y-2][x-2]
) return state[y][x];
}
}

此外,通常在适用时您应该说 (x < GRID_HEIGHT) 而不是 (x <= GRID_HEIGHT-1),因为第二个更难阅读。

关于java - 在二维数组中搜索对角线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27432348/

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