我是一名学生,正在从事“滑梯和梯子”游戏。我正在使用方法来确定应在游戏板上放置多少个滑槽和梯子。我在main使用参数中为每个参数指定了10,但是我一直在从6到11的范围内保持不变。
两种方法相互干扰是否发生了什么?
还是我为随机放置设置for循环的方式存在问题?
我是这个网站的新手,如果您需要更多说明,请告诉我,我不想将整个程序放在这里。谢谢。
//main
ChutesAndLadders cl = new ChutesAndLadders();
cl.setBoard(new String[100]);
cl.makeChutes(10);
cl.makeLadders(10);
//methods
public String [] board;
private int chutes, ladders;
public int position;
public Random rand = new Random();
//set board
public void setBoard(String [] n){
board = n;
for(int i = 0; i < board.length; i++)
board[i] = " ";
}
//set and place chutes
public void makeChutes(int n){
chutes = n;
for(int i = 0; i <= chutes; i++)
board[rand.nextInt(board.length)] = "C" + chutes;
}
//set and place ladders
public void makeLadders(int n){
ladders = n;
int lcell = 0;
for(int i = 0; i <= ladders; i++)
board[rand.nextInt(board.length)] = "L" + ladders;
最佳答案
首先,您写道:
for(int i = 0; i <= chutes; i++)
board[rand.nextInt(board.length)] = "C" + chutes;
循环中的赋值语句将运行1次。 (在您的情况下为11次。)[改为使用
i < chutes
。]这与您的阶梯代码相同。这就解释了为什么在代码运行完后可能会有多达11个斜槽或梯子。其次,您不小心防止多次向同一空间分配溜槽或梯子。不能保证
rand.nextInt(board.length)
每次运行时都会生成唯一值(否则,它并不是真正随机的。)这解释了为什么在代码运行完后可能看不到多达11个斜槽和梯子。为了使这一点更清楚,在其中放置一个常量值:
for(int i = 0; i < chutes; i++)
board[11] = "C" + chutes;
并请注意,您最终将得到一个斜道(在空间11处),除非梯形图代码用梯形图覆盖它。
希望能有所帮助。
祝好运!