我不明白如何在四连冠中找到获胜方式,请告诉我应该怎么想以及如何在四连冠中找到赢家。我应该如何使用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- Java /或带有4D数组对角线检查的Connect4游戏中的四个游戏编码难题算法
所以它很容易找到。还有这个Scala实现也可以做到这一点。然后只有另一种语言:https : //github.com/Green7izard/AP- ASE/blob/master/Scala/src/Day1.scala
基本上有3种取胜方式:
最后一个选项是对角线。这一个比较难,因为您还要检查2个方向。
这意味着您无法一次性检查完成情况。但是您可以创建一个将检查所有值的函数,例如:
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,您将有赢家!但是有更好的方法来执行此壮举!