所以我试图在java中编写一个tic tac toe游戏。大部分都已完成,但是,如果有人选择已经占用的空间,我无法回复无效的移动。
这是我想弄清楚的代码。我认为,因为空间由数字0表示(我的教授告诉我们这个),有
board[i][j] == 0
if语句中的会阻止玩家重复该空间。
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;
}
答案 0 :(得分:1)
除非我遗漏了一些明显的东西,否则你的循环似乎是不必要的,并且使你的逻辑过于复杂。您已经拥有要检查的行和列,因此没有理由不使用这些:
public static boolean isLegalMove(int[][] board, int row, int col) {
return board[row][col] == 0;
}
这有ArrayIndexOutOfBoundsException
的风险,但这更多是辅助方法getRow
和getCol
的症状,你应该确保那些可以&#39 ; t返回一个越界值。你应该问一下你想要简化的事情。
答案 1 :(得分:1)
您不需要使用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 );
}
是否足够。
def dot(L, K):
if(L == [] or K == []):
return 0
else:
return L[0] + K[0] + dot(L[1:], K[1:])