Java 水平win检测赢得';在connect 4游戏的最下面一行未检测到胜利

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

现在我正在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 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数组。我怀疑如果你做了垂直排列,你也会错过一列。我会尝试移动到垂直排列,然后再回来。我会提到零索引的事情,除了有评论指出他因为“维度交换”而移动了该板我不确定那里发生了什么,所以我就不去管了,而是试着修复他在那里发生的其他一些事情。维度交换是为了垂直检测,暂时忽略它。