2

だから私はJavaでかなり新しいので、接続4ゲームを作成する割り当てがあります。このような文字でいっぱいの6行7列のボードを作成します->「-」、ユーザーが希望の列を入力すると、「-」がBまたはR(赤または黒のチェッカー)に置き換えられます。背景。対角線をチェックするためのコードが非常に長い部分を除いて、すべてが機能します。異なる for ループでそれぞれを実行することを除いて、プレーヤーが勝つことができる可能な 4 セットの対角線すべてを通過する方法がわかりませんでした。 ..私はあなたがそれを短くするのを手伝ってくれるという恐ろしい希望を知っています:(

これが斜めチェックのコードです(笑 見てるだけで悲しくなります)

    public class Connect4 {
          public static void main(String[] args) {

      //Create board

    Scanner input = new Scanner(System.in);
    char[][] grid = new char[6][7];

    for (int i = 0; i < grid.length; i++) {
      for (int j = 0; j < grid[0].length; j++) {
        grid[i][j] = '-';
      }
    }

 public static void checkWinner(char[][] grid) {      
try{

  //A LOT OF FOR LOOPS FOR DIAGONAL CHECKS
    for (int i = 5; i > 1; i-- ) {
     for(int j = 0; j < 4; j++) {
           if (   grid[i][j] == 'R' &&
                  grid[i-1][j+1] == 'R' &&
                  grid[i-2][j+2] == 'R' &&
                  grid[i-3][j+3] == 'R') {
                  System.out.println("Player 1 Wins!");
                  System.exit(0);
           }
           else if (  grid[i][j] == 'B' &&
                      grid[i-1][j+1] == 'B' &&
                      grid[i-2][j+2] == 'B' &&
                      grid[i-3][j+3] == 'B') {
                      System.out.println("Player 2 Wins!");
                      System.exit(0);
           }
         }
     }


     for (int i = 5; i > 1; i--) {
         for (int j = 1; j < 4; j++) {
                  if (grid[i][j] == 'R' &&
                      grid[i-1][j+1] == 'R' &&
                      grid[i-2][j+2] == 'R' &&
                      grid[i-3][j+3] == 'R') {
                      System.out.println("Player 1 Wins!");
                      System.exit(0);
              }
             else if (grid[i][j] == 'B' &&
                      grid[i-1][j+1] == 'B' &&
                      grid[i-2][j+2] == 'B' &&
                      grid[i-3][j+3] == 'B') {
                      System.out.println("Player 2 Wins!");
                      System.exit(0);
         }
     }
   }

     for (int i = 0; i < 4; i++) {
         for (int j = 4; j < 7; j++) {
             if (   grid[i][j] == 'R' &&
                      grid[i+1][j-1] == 'R' &&
                      grid[i+2][j-2] == 'R' &&
                      grid[i+3][j-3] == 'R') {
                      System.out.println("Player 1 Wins!");
                      System.exit(0);
         }
             else if (grid[i][j] == 'B' &&
                      grid[i+1][j-1] == 'B' &&
                      grid[i+2][j-2] == 'B' &&
                      grid[i+3][j-3] == 'B') {
                      System.out.println("Player 2 Wins!");
                      System.exit(0);
         }
     }
   }

     for (int i = 1; i < 2; i++) {
         for (int j = 6; j > 5; j--) {
             if (   grid[i][j] == 'R' &&
                      grid[i+1][j-1] == 'R' &&
                      grid[i+2][j-2] == 'R' &&
                      grid[i+3][j-3] == 'R') {
                      System.out.println("Player 1 Wins!");
                      System.exit(0);
                        }
             else if (grid[i][j] == 'B' &&
                      grid[i+1][j-1] == 'B' &&
                      grid[i+2][j-2] == 'B' &&
                      grid[i+3][j-3] == 'B') {
                      System.out.println("Player 2 Wins!");
                      System.exit(0);
         }
        }
     }

     for (int i = 4; i < 5; i++){
         for (int j = 2; j < 3; j++){
                  if (grid[i][j] == 'R' &&
                      grid[i-1][j+1] == 'R' &&
                      grid[i-2][j+2] == 'R' &&
                      grid[i-3][j+3] == 'R') {
                      System.out.println("Player 1 Wins!");
                      System.exit(0);
                  }
                  else if (grid[i][j] == 'B' &&
                          grid[i-1][j+1] == 'B' &&
                          grid[i-2][j+2] == 'B' &&
                          grid[i-3][j+3] == 'B') {
                          System.out.println("Player 2 Wins!");
                          System.exit(0);
                      }
        }
     }

     for (int i = 0; i < 4; i++) {
         for (int j = 3; j > 0; j--) {
                  if (grid[i][j] == 'R' &&
                      grid[i+1][j+1] == 'R' &&
                      grid[i+2][j+2] == 'R' &&
                      grid[i+3][j+3] == 'R') {
                      System.out.println("Player 1 Wins!");
                      System.exit(0);
                  }
                  else if (grid[i][j] == 'B' &&
                          grid[i+1][j+1] == 'B' &&
                          grid[i+2][j+2] == 'B' &&
                          grid[i+3][j+3] == 'B') {
                          System.out.println("Player 2 Wins!");
                          System.exit(0);
                      }
     }
   }

     for(int i =0; i < 1; i++) {
         for (int j = 0; j <1; j++) {
                  if (grid[i][j] == 'R' &&
                      grid[i+1][j+1] == 'R' &&
                      grid[i+2][j+2] == 'R' &&
                      grid[i+3][j+3] == 'R') {
                      System.out.println("Player 1 Wins!");
                      System.exit(0);
             }
                  else if (grid[i][j] == 'B' &&
                          grid[i+1][j+1] == 'B' &&
                          grid[i+2][j+2] == 'B' &&
                          grid[i+3][j+3] == 'B') {
                          System.out.println("Player 2 Wins!");
                          System.exit(0);
                 }
         }
     }

     for (int j = 0; j < 1; j++) {
         for(int i =1 ; i < 3; i++) {
                  if (grid[i][j] == 'R' &&
                      grid[i+1][j+1] == 'R' &&
                      grid[i+2][j+2] == 'R' &&
                      grid[i+3][j+3] == 'R') {
                      System.out.println("Player 1 Wins!");
                      System.exit(0);
                  }
                  else if (grid[i][j] == 'B' &&
                          grid[i+1][j+1] == 'B' &&
                          grid[i+2][j+2] == 'B' &&
                          grid[i+3][j+3] == 'B') {
                          System.out.println("Player 2 Wins!");
                          System.exit(0);
                      }
        }
     }

     for (int j = 3; j < 4; j++) {
     for (int i = 0; i < 3; i++) {
                  if (grid[i][j] == 'R' &&
                      grid[i+1][j+1] == 'R' &&
                      grid[i+2][j+2] == 'R' &&
                      grid[i+3][j+3] == 'R') {
                      System.out.println("Player 1 Wins!");
                      System.exit(0);
                  }
                  else if (grid[i][j] == 'B' &&
                          grid[i+1][j+1] == 'B' &&
                          grid[i+2][j+2] == 'B' &&
                          grid[i+3][j+3] == 'B') {
                          System.out.println("Player 2 Wins!");
                          System.exit(0);
                      }
         }
     }

     for (int i = 2; i < 3; i++) {
         for (int j = 2; j > 0; j--) {
                  if (grid[i][j] == 'R' &&
                      grid[i+1][j+1] == 'R' &&
                      grid[i+2][j+2] == 'R' &&
                      grid[i+3][j+3] == 'R') {
                      System.out.println("Player 1 Wins!");
                      System.exit(0);
                  }
                  else if (grid[i][j] == 'B' &&
                          grid[i+1][j+1] == 'B' &&
                          grid[i+2][j+2] == 'B' &&
                          grid[i+3][j+3] == 'B') {
                          System.out.println("Player 2 Wins!");
                          System.exit(0);
                     }
         }
     }

     for (int i = 1; i < 2; i++) {
         for (int j = 2; j < 3; j++){
                  if (grid[i][j] == 'R' &&
                      grid[i+1][j+1] == 'R' &&
                      grid[i+2][j+2] == 'R' &&
                      grid[i+3][j+3] == 'R') {
                      System.out.println("Player 1 Wins!");
                      System.exit(0);
                  }
                  else if (grid[i][j] == 'B' &&
                          grid[i+1][j+1] == 'B' &&
                          grid[i+2][j+2] == 'B' &&
                          grid[i+3][j+3] == 'B') {
                          System.out.println("Player 2 Wins!");
                          System.exit(0);
                   }
         }
     }

     for (int i = 1; i < 2; i++) {
         for (int j = 1; j < 2; j++){
                  if (grid[i][j] == 'R' &&
                      grid[i+1][j+1] == 'R' &&
                      grid[i+2][j+2] == 'R' &&
                      grid[i+3][j+3] == 'R') {
                      System.out.println("Player 1 Wins!");
                      System.exit(0);
                   }
                  else if (grid[i][j] == 'B' &&
                          grid[i+1][j+1] == 'B' &&
                          grid[i+2][j+2] == 'B' &&
                          grid[i+3][j+3] == 'B') {
                          System.out.println("Player 2 Wins!");
                          System.exit(0);
                   }
         }
     }
 }
catch(ArrayIndexOutOfBoundsException e){
    System.out.println("Exception thrown  :" + e);
 }
}
4

2 に答える 2