java - 我应该如何为我的 Connect 4 程序实现水平获胜算法?

标签 java

我正在制作一个 Connect 4 棋盘游戏,并实现了这个水平获胜算法。 由于某种原因它似乎不起作用。 根据代码,我假设我在算法中设置的条件将查看在generateBoard方法中分配给数组的值,但事实并非如此。

可能的解决方案是什么?如有任何帮助,我们将不胜感激。

public static String[][] generateBoard(){
        String[][] board = new String[6][7]; //[row][column] 6 by 7
        for(int i = 0; i<board.length; i++) {
            for(int j = 0; j<board[i].length; j++) {
                if(j == 0) 
                    board[i][j] = "| |";
                else
                    board[i][j] = " |";
            }
        }
        return board;   
    }

水平获胜算法:

        //Checks to see which player's turn it is
        String color = (redPlayerTurn) ? "R" : "Y";


        int pattern = 0; //Used as a flag for detecting a winner

        //HORIZONTAL Check
        for(int i = 1; i < board.length; i++) {
            String columnIndex = board[i][0];
            pattern = 1;
            for(int j = 1; j < board[i].length; j++) {
                if(!(board[i][j].contains("| |") || board[i][j].contains(" |"))) {
                    if(columnIndex == board[j][i] && pattern != 0)
                    pattern++;
                }else
                    columnIndex = board[i][j];
                    pattern = 0;
            }if(pattern == 4) {
                return true;
            }

        }

这是我不断得到的结果: Result

最佳答案

//Checks to see which player's turn it is
String color = (redPlayerTurn) ? "R" : "Y";

int pattern = 0; //Used as a flag for detecting a winner

//HORIZONTAL Check
for(int i = 1; i < board.length; i++) {
    String columnIndex = board[i][0];
    pattern = 1;
    for(int j = 1; j < board[i].length; j++) {
       if(!board[i][j].contains("|")) {
          if(columnIndex == board[j][i] && pattern != 0) {
            pattern++;
          } else {
            columnIndex = board[i][j];
            pattern = 0; // <- missing {} will assign pattern to 0
          }
       }
    }
    if(pattern >= 4) {
       return true;
    }
}

关于java - 我应该如何为我的 Connect 4 程序实现水平获胜算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59242100/

相关文章:

java - 设置外观颜色

java - 使用具有多态性的条件查询进行列表连接和多重选择

java - OpenFeint 与 cocos2d-x(iOS 和 Android)

使用 JSON Adventure 将 Javascript 数组转换为 Java 数组

java - 升级到 Java 11 : -Djava. endorsed.dirs 不支持

java - 使用 JAX-RS 时,有没有办法将变量放入自定义 ConstraintValidator 中?

java - 在一个构建中支持 Swing Applet 和 Frame

java - 添加和打印数组

java - 以编程方式扩展 ElasticBeanStalk 环境

java - 在 Java 中为 Deque 分配大小