나는 play 및 hasWon 메서드를 사용하여 Tic Tac Toe 게임 클래스를 만들려고했습니다. 메인 클래스에서 호출 할 때NXN Tic Tac Toe 게임에서 승자 결정
public class TicTacToe {
private enum State{Blank, X, O}
private int grid;
private State[][] board = new State[grid][grid];
private int moves;
//Default Constructor
public TicTacToe(int grid){
board = new State[grid][grid];
moves = 0;
}
public void play(State s, int m, int n){
if (board[m][n] == State.Blank){
board[m][n] = s;
}
moves++;
}
public boolean hasWon(State[][] board){
//check winner in rows
boolean state = false;
int j = 0;
int i = 0;
while(j <= grid) {
for (i = 0; i <= grid; i++) {
if (board[j][i] == board[j][i + 1])
state = true;
else state = false;
break;
}
if(state == false)
j++;
else return true;
}
//check winner in columns
while(j <= grid) {
for (i = 0; i < grid; i++) {
if (board[i][j] == board[i + 1][j])
state = true;
else state = false;
break;
}
if (state == true)
j++;
else return true;
}
//check winner in top diagonal
while(j <= grid && i <= grid){
if (board[i][j] == board[i+1][j+1])
state = true;
else state = false;
break;
i++;
j++;
return true;
}
//check winner in bottom diagonal
int k = grid;
int l = grid;
while(k >= 0 && l >= 0){
if (board[k][l] == board[k-1][l-1])
state = true;
else state = false;
break;
k--;
l--;
return true;
}
return false;
}
}
그러나 프로그램이 비정상적으로 동작합니다. 코드에 논리적 인 문제가 있습니까?
for (i = 0; i < n; i++) {
if (board[j][i] == board[j][i + 1])
state = true;
}
하여 행을 검사 할 때 행의 마지막 두 문자는 독립적으로 해당 행의 이전 문자의 같은 경우
무엇을 " 엉뚱한 "뜻은 정확히? – Todd
어떤 경우에는 그렇지 않은 사람에게 승자를줍니다. –
몇 번이나 연속으로 들어야합니까? 삼? – Bubletan