2016-09-11 61 views
0

所以我試圖編寫一個在java中的tic tac腳趾遊戲。大部分工作已經完成,但是,如果有人選擇了已經佔用的空間,我無法回覆無效的舉動。法律移動Tic Tac腳趾

這是我想弄明白的代碼。我想,既然空間是由數字0代表(我的教授告訴我們這一點),if語句具有

board[i][j] == 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); 
}