Java 随机数循环
我正在用Java和vs计算机模式制作connect 4游戏。电脑将随机播放。我编写了随机选择列的代码。电脑确实在一个栏目上随机播放,但之后继续在同一个栏目上播放 我该怎么做才能让它在电脑轮到的时候在任何专栏上随机播放呢。 这是我迄今为止的简单代码:Java 随机数循环,java,random,Java,Random,我正在用Java和vs计算机模式制作connect 4游戏。电脑将随机播放。我编写了随机选择列的代码。电脑确实在一个栏目上随机播放,但之后继续在同一个栏目上播放 我该怎么做才能让它在电脑轮到的时候在任何专栏上随机播放呢。 这是我迄今为止的简单代码: public static Random rnd = new Random(); public static final int row = Row - 1; public static int col = rnd.nextInt(7); 我应该写
public static Random rnd = new Random();
public static final int row = Row - 1;
public static int col = rnd.nextInt(7);
我应该写什么代码?我需要变量
col
,用于我的下一个此类方法每次计算机播放时,您需要调用nextInt
,以重新生成一个随机数
您当前拥有的将为列生成一个随机数,但您从未更新它。因此,对于每一个新游戏,计算机将只在同一个“随机”列中玩
假设您有一个方法computerTurn()
,每次轮到计算机播放时都会调用该方法。差不多吧
void computerTurn(){
int col = rnd.nextInt(7);
placeInCol(compute, col);
}
请注意,您必须检查您是否可以在该列中播放。所以最好的方法是创建一个列表,其中包含可播放的列
List<Integer> columnsAvailable = new ArrayList<>(Arrays.asList(1,2,3,4,5,6));
生成的随机数可能会重复。这就是问题所在。因此,您可以暂时保存生成的随机数,并与下一个随机数进行检查,如果它们相同,则再次循环。这是一个广泛的逻辑。您可以使用Collections.shuffle()。这样,就不会因为重复而头痛。@user3481879每当你想要一个新的随机数时,就给你的随机对象打个电话。非常感谢::)@ZouZou
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.
}
}