法律移动Tic Tac Toe

时间:2016-09-11 03:30:27

标签: java

所以我试图在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;

}

2 个答案:

答案 0 :(得分:1)

除非我遗漏了一些明显的东西,否则你的循环似乎是不必要的,并且使你的逻辑过于复杂。您已经拥有要检查的行和列,因此没有理由不使用这些:

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

这有ArrayIndexOutOfBoundsException的风险,但这更多是辅助方法getRowgetCol的症状,你应该确保那些可以&#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:])