2016-09-11 5 views
0

그래서 Java에서 tic tac toe 게임을 코딩하려고 시도하고 있습니다. 그러나 대부분의 경우 이미 수행 된 공간을 누군가가 선택하면 잘못된 이동을 되돌릴 수 없습니다.법적 이동 Tic Tac Toe

다음은 알아 내려고하는 코드입니다. 나는 그 공간을 반복에서 플레이어를 중지 할 것 if 문에

board[i][j] == 0 

을 갖는 공간이 숫자 0으로 표시되어 있기 때문에 (내 교수는 우리에게이 말) 생각했다.

public static boolean isLegalMove(int[][] board, int row, int col) { 
    for (int i = 0; i < 3; i++) { 
     for (int j = 0; j < 3; j++) { 
      if (board[i][j] == 0 && row <= 2 && row >= 0 && col <= 2 && col >= 0) { 
       return true; 
      } 
     } 
    } 
    return false; 

} 

답변

1

분명하지 않은 것이 없다면 루프가 불필요하고 논리가 복잡해집니다. 당신은 이미 행과 검사 할 열을, 그래서 그 사용하지 않을 이유가 없다 :

public static boolean isLegalMove(int[][] board, int row, int col) { 
    return board[row][col] == 0; 
} 

이는 ArrayIndexOutOfBoundsException의 위험을 가지고,하지만 그 보조 방법 getRowgetCol의 증상의 더 , 범위를 벗어나는 값을 반환 할 수 없도록해야합니다. 대신 당신이 물건을 단순화하기를 원하는지 물어보십시오.

1

for 루프를 사용할 필요가 없습니다. board [row][col]0인지 확인하는 것만으로 충분합니다.

public static boolean isLegalMove(int[][] board, int row, int col) { 
    return ((row <= 2 && row >= 0 && col <= 2 && col >= 0) && board [ row ] [ col ] == 0); 
}