我正在用计算机对一个井字游戏进行单人游戏,想知道如何才能在一个数组中错误的布尔值选择为false的数组,其中某些值为true,有些为false。我知道使用Math.random(),但我想知道如果所选元素为true而不是false时如何能够选择其他随机元素?或者,如果有人知道更好的方法,而不是使用Math.random()。

最佳答案

我已经为一个很好的tictactoe实现实现了一个小片段,请忽略我以前的实现,因为这非常有问题。在这里,您可以设置起点和适当的枚举,从而可以更正确地遵循木板。这个答案更像是Java的IMO。

public static void main(String[] args) throws Exception {
    Boolean aiStarts = true;
    Integer size = 9, step = 0;
    List<Spot> board = new ArrayList<>(Collections.nCopies(size, Spot.E));

    do {
        int i;
        do {
            i = (int)(Math.random() * size);
        } while (!Spot.E.equals(board.get(i)));
        board.set(i, step++ % 2 == (aiStarts ? 0 : 1) ? Spot.X : Spot.O);
    } while (board.stream().filter(s -> Spot.E.equals(s)).count() > 0);

    System.out.println(board.subList(0, 3));
    System.out.println(board.subList(3, 6));
    System.out.println(board.subList(6, 9));
}

enum Spot {
    X, O, E;
}


当AI使用X并且用户使用'O'时,您可以使用用户的输入替换自动插入逻辑。作为示例打印出来;

[O, X, O]
[X, X, X]
[O, X, O]

10-08 14:54