2014-03-31 141 views
-2

我正在使用Java和电脑模式连接4游戏。电脑将随机播放。我编写了代码随机选择列。计算机在一列上随机播放,但之后继续在同一列上播放。随机数循环

我应该怎么做才能让它随时随地在任何列上随机播放。 这是我简单的代码至今:

public static Random rnd = new Random(); 
public static final int row = Row - 1; 
public static int col = rnd.nextInt(7); 

我应该写什么代码,我需要的变量col我这个类

回答

1

你需要调用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)); 

现在看起来这样的事情:

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. 
     } 
} 
+0

如何每次调用nextint?如何更新列? – user3481879

+0

@ user3481879每次您想要一个新的随机数时,在您的随机对象上调用nextInt。 –

+0

非常感谢::) @邹邹 – user3481879

0

产生可repeat.That是problem.So,可以暂时保存生成的随机数,并与检查随机数下一个随机数,如果他们再次相同循环。这是一个宽泛的逻辑。你可以使用Collections.shuffle(); 。那么,重复就不会有头痛。