我如何检查获胜者在我的连接四个java代码



我不明白如何在connect four中找到获胜的方式,请告诉我我应该怎么想以及如何在connect four中找到赢家。我应该如何使用for循环来找到它们。我应该如何使用方法找到获胜者?

import java.util.Scanner;
public class Connect4{
    public static  int[][] arrayboard(){
        int [][] board = new int[6][7];
        for (int i=0;i<board.length;i++){
            for(int j=0;j<board[i].length;j++){
              }
            }
          return board;     
         }
    public static void printboard(int[][] board){
            int k=5;
            for (int i = 0; i < board.length; i++) {
                for (int j = 0; j < board[i].length; j++) {
                System.out.print(board[i][j] + " ");
              }
             System.out.print("|"+k );
             k--;
             System.out.println();
          }
            System.out.println("--------------+");
            System.out.println("0 1 2 3 4 5 6");
       }
     public static void player1(int[][] board){
        System.out.print("player 1 type a column(0-6) or 9 to quit current game:");
        Scanner input = new Scanner(System.in);
        int column=input.nextInt();
        for (int i=5;i>=0;i--){
            if(board[i][column]==0){
               board[i][column]=1;
               break;
            }
          }
       }
     public static void player2 (int[][] board){
        System.out.print("player 2 type a column(0-6) or 9 to quit current game:");
        Scanner input = new Scanner(System.in);
        int column=input.nextInt();
        for (int i=5;i>=0;i--){
            if (board[i][column]==0){
               board[i][column]=2;
               break;
           }
        }
     }
    public static void main(String[] args) {
        int [][] board=arrayboard();
           printboard(board);
        boolean loop= true;
              int count=0;
         while(loop){
            if (count % 2 == 0) 
                player1(board);
            else player2(board);
            count++;
            printboard(board);
      }
   }
}

用google搜索一下之后,会弹出以下代码:https://codereview.stackexchange.com/questions/100917/connect-four-game-in-java或http://www.lazylab.org/152/java/connect-four-game-coding-puzzle-algorithm-in-java/或Connect4游戏与2D数组对角线检查

所以很容易找到。还有这个Scala实现也做同样的事情。只有在不同的语言:https://github.com/Green7izard/AP-ASE/blob/master/Scala/src/Day1.scala

基本上有三种获胜方法:

  1. 水平(行)。检查每个棋盘[i],看看玩家是否有4个在一排,但要注意数组的边缘。
  2. 垂直(列)。检查每个板[currentRow][i],看看是否有一个i,其中4个"currentRow"是相同的。

最后一个选项是对角。这个比较难,因为还有两个方向需要检查。

这意味着您不能一次检查完成情况。但是你可以创建一个函数来检查所有的值,比如:

public void int GetWinner()
{
   int result = 0;
   result= CheckHorizontal();
   if(result>0) return result;
   result= CheckVertical();
   if(result>0) return result;
   result= CheckDiagonalTopLeftBotRight();
   if(result>0) return result;
   result= CheckDiagonalBotLeftTopRight();
   return result;
}

每次移动后执行,如果结果不为0,您将获得赢家!但是有更好的方法来完成这个壮举!

相关内容

最新更新