我正在尝试制作一个包含6行和7列的Connect Four游戏。该板是一个String 2D阵列,板上的每个空槽都是一个"。 "串。如果我再调整循环程序会给我一个indexArrayOutOfBoundsException,所以我无法弄清楚需要对算法进行哪些更改来检查对角线的胜利。
//tests for an upper-left-to-lower-right diagonal line made by four of the same color checker
for(int row = 0; row <= LOWEST_ROW_INDEX - 3; row++)
{
for(int col = 0; col <= RIGHTMOST_COLUMN_INDEX - 3; col++)
{
if((gb[row][col] != ". ")
&& (gb[row + 1][col + 1] != ". ")
&& (gb[row + 2][col + 2] != ". ")
&& (gb[row + 3][col + 3] != ". ")
&& (gb[row][col] == gb[row + 1][col + 1])
&& (gb[row + 1][col + 1] == gb[row + 2][col + 2])
&& (gb[row + 2][col + 2] == gb[row + 3][col + 3]))
{
return gb[row][col];
}
}
}
//tests for a lower-left-to-upper-right diagonal line made by four of the same color checker
for(int row = 0; row <= LOWEST_ROW_INDEX - 3; row++)
{
for(int col = RIGHTMOST_COLUMN_INDEX - 3; col >= 0; col--)
{
if((gb[row][col] != ". ")
&& (gb[row + 1][col + 1] != ". ")
&& (gb[row + 2][col + 2] != ". ")
&& (gb[row + 3][col + 3] != ". ")
&& (gb[row][col] == gb[row + 1][col + 1])
&& (gb[row + 1][col + 1] == gb[row + 2][col + 2])
&& (gb[row + 2][col + 2] == gb[row + 3][col + 3]))
{
return gb[row][col];
}
}
}
答案 0 :(得分:0)
逻辑对我来说看起来很合理,但有一个问题是你无法将Java中的字符串与==进行比较;你需要使用.equals()。 ==检查两个字符串是否存储在内存中的相同位置,而不是它们是否包含相同的字符。