【问题标题】:Java Connect Four game not recognizing diagonal winsJava Connect Four 游戏无法识别对角线胜利
【发布时间】:2014-04-19 17:36:00
【问题描述】:

我正在尝试制作一个 6 行 7 列的连接四游戏。该板是一个字符串二维数组,板上的每个空槽都是一个“。”字符串。如果我再调整循环,程序会给我一个 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];
            }
        }
    }

【问题讨论】:

    标签: java windows connect diagonal


    【解决方案1】:

    逻辑在我看来是合理的,但一个问题是你不能用 ==; 来比较 Java 中的字符串。你需要使用 .equals()。 == 检查两个字符串是否存储在内存中的相同位置,而不是它们是否包含相同的字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      • 1970-01-01
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多