Java 水平win检测赢得';在connect 4游戏的最下面一行未检测到胜利
现在我正在swing中创建一个connect 4游戏。我没有发布所有GUI组件,因为它并不重要。游戏检测除最下面一行之外的所有行的水平胜利。下面是win检测的代码Java 水平win检测赢得';在connect 4游戏的最下面一行未检测到胜利,java,swing,Java,Swing,现在我正在swing中创建一个connect 4游戏。我没有发布所有GUI组件,因为它并不重要。游戏检测除最下面一行之外的所有行的水平胜利。下面是win检测的代码 boolean CheckForWin() { for (int row = 1; row < gameBoard.length; row++) //Plus 1 is added to prepare for dimension swap. { //Player
boolean CheckForWin()
{
for (int row = 1; row < gameBoard.length; row++) //Plus 1 is added to prepare for dimension swap.
{
//Player 1 horizontal count
int max=0;
//Player 2 horrizontal count
int max2=0;
int count_piece=0;
for(int column=1; column<gameBoard.length; column++)
{
// check for horizontal
if(row==6)
{
break;
}
if(count_piece<max || count_piece<max2)
{
count_piece=max;
count_piece=max2;
}
if(gameBoard[row][column]=='r')
{
max++;
}
else
{
max=0;
}
if(gameBoard[row][column]=='b')
{
max2++;
}
else
{
max2=0;
}
if(max==4 || max2==4)
{
return true;
}
// check for vertical
}
}
// check for diagonal up
// check for diagonal down
return false;
}
boolean CheckForWin()
{
对于(int row=1;row 对于(int column=1;column我假设gameboard是一个数组数组?您在循环中以1开始行和列,但在java中它们是基于0的。您是否也在最左边的列中检测不到胜利
对于int row=0,您应该将循环更改为;对于int column=0,您应该将循环更改为。
您必须添加更多的注释来解释您正在执行的操作。我目前非常困惑,尤其是if语句,它将count\u片段分配给max,然后立即将其设置为max2我为两个最大值指定countpeice的原因是为了确保它只计算一个玩家的水平对齐,并且对齐的最大值最多。我希望您理解countpiece不会自行将其设置为最大最大值,您必须对此进行比较。我还没有设置垂直检测,是的,游戏板是一个2d数组。我怀疑如果你做了垂直排列,你也会错过一列。我会尝试移动到垂直排列,然后再回来。我会提到零索引的事情,除了有评论指出他因为“维度交换”而移动了该板我不确定那里发生了什么,所以我就不去管了,而是试着修复他在那里发生的其他一些事情。维度交换是为了垂直检测,暂时忽略它。