我是一名学生,正在从事“滑梯和梯子”游戏。我正在使用方法来确定应在游戏板上放置多少个滑槽和梯子。我在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处),除非梯形图代码用梯形图覆盖它。

希望能有所帮助。

祝好运!

07-24 19:53