我用Java和计算机模式制作连接4游戏。电脑会随机播放。我编写了代码来随机选择列。计算机确实在列上随机播放,但继续在同一列上播放。
我应该怎样做才能让它随时随地在任何列上播放。 到目前为止,这是我的简单代码:
public static Random rnd = new Random();
public static final int row = Row - 1;
public static int col = rnd.nextInt(7);
我应该编写什么代码,我需要变量col
作为此类的下一个方法
答案 0 :(得分:1)
每次计算机播放时都需要调用nextInt
,以重新生成随机数。
您当前拥有的内容会为该列生成一个随机数,但您永远不会更新它。因此,对于每个新游戏,计算机只能在相同的“随机”列中播放。
假设您有一个方法computerTurn()
,您可以在每次轮到计算机时调用它。就这样。
void computerTurn(){
int col = rnd.nextInt(7);
placeInCol(compute, col);
}
请注意,您必须检查是否可以在列中播放。因此,处理此问题的最佳方法是创建一个包含可供播放的列的List。
List<Integer> columnsAvailable = new ArrayList<>(Arrays.asList(1,2,3,4,5,6));
现在它会寻找这样的东西:
void computerTurn(){
int index = rnd.nextInt(columnsAvailable.size());
int col = columnsAvailable.get(index);
if(isAvailableCol(col)){
placeInCol(computer, col);
} else {
columnsAvailable.remove(index);
//get a new random column here.
}
}
答案 1 :(得分:0)
生成的随机数可能会重复。这就是问题。因此,您可以暂时保存生成的随机数,并使用下一个随机数检查它,如果它们是相同的循环它。这是一个宽逻辑。你可以使用Collections.shuffle(); 。然后,重复就不会有头疼。