gpt4 book ai didi

java |井字游戏右对角线不起作用

转载 作者:行者123 更新时间:2023-12-02 10:38:07 24 4
gpt4 key购买 nike

目前正在使用 java 开发 tic tac toe 游戏,并且我有一个 checkWin() 方法,该方法可以在 4 个可能的获胜条件中的 3 个条件下正常工作。我遇到的问题是右对角线。

代码:

public boolean checkWin(String player){
int row = 0; // Holder to count number of player spots in row
int d1 = 0; // Holder to count number of player spots in right diag.
int d2 = 0; // Holder to count number of player spots in left diag.
int[] column = new int[squares[0].length]; /* Holder to count number
of player spots in column */

for(int i = 0; i < size; i++){
row = 0;
for(int j = 0; j < size; j++){
if(null == squares[i][j]){
continue;
}
if(squares[i][j].getText().equals(player)){
row++; /* If spot at [i][j] equals player, increase row */
column[j]++; /* If spot at [i][j] equals player, increase
col */
if(i == j){ /* If spot at i is equal to j, increase left
diag */
d1++;
} else if ((size - 1) == i + j){ /* If spot at i + j
equals board size - 1, increase right diag. */
d2++;
}
}
}
if(row == size){
/*
if spots in row is equal to size (otherwise, if it fills
the row, return win
*/
return true;
}
}
if(size == d1 || size == d2){
/*
if spots in either diag is equal to size, return win
*/
return true;
}
for(int i = 0; i < column.length; i++){
if(column[i] == size){
/*
if column is full of the same player character, return win
*/
return true;
}
}
/*
otherwise, return false
*/
return false;
}

问题部分是:

                else if ((size - 1) == i + j){ /* If spot at i + j 
equals board size - 1, increase right diag. */
d2++;
}

以这种方式设置的原因是 2D 阵列的工作原理,因此对于 3x3 板:

[00][01][02]

[10][11][12]

[20][21][22]

当 i + j = size - 1 时,它将评估 2 + 0, 1 + 1, 0 + 2 都等于 2,如果 size = 3,则为 size - 1,但是当我运行程序并执行右对角线移动,它不会返回获胜的真实值。

任何有关如何解决此问题的建议将不胜感激。

最佳答案

else if ((size - 1) == i + j)

^ 仅当其上方的 if 条件为 false 时才会对其进行评估。

if(i == j)

i == 1j == 1时,则i == j为真,因此(size - 1) == i + j 不被计算。

TLDR:去掉你的else

关于 java |井字游戏右对角线不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53125473/

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