커넥트 포에서 승리 방법을 찾는 방법을 이해하지 못합니다. 어떻게 생각해야하는지, 커넥트 포에서 우승자를 찾을 수있는 방법을 알려주세요. 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- 4 개의 게임 코딩 퍼즐 알고리즘 -Java / 또는 2D 배열 대각선 검사가있는 Connect4 게임
그래서 찾기가 아주 쉽습니다. 동일한 작업을 수행하는이 Scala 구현도 있습니다. 그 후에 만 다른 언어로 : https://github.com/Green7izard/AP-ASE/blob/master/Scala/src/Day1.scala
기본적으로 승리하는 방법에는 3 가지가 있습니다.
마지막 옵션은 Diagonally입니다. 확인해야 할 방향이 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이 아니면 승자가됩니다! 그러나이 위업을 수행하는 더 좋은 방법이 있습니다!
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다