我正在用计算机对一个井字游戏进行单人游戏,想知道如何才能在一个数组中错误的布尔值选择为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]