运行 每个循环在不同的时间间隔

Run each loop at a different time interval

我目前正在开发一个让两个模拟战士相互对抗的程序。我现在的方式是,每一轮都完成,输出一次打印出来(几乎是一次打印,因为它计算得很快)。

我将如何采用以下代码并使第二个循环中的操作以伪实时方式发生,其中它执行 x 秒数,其中 x 是随机滚动?任何建议或指导都会很棒。我什至会满足于每三秒左右执行第二个 while 循环。这是目前的原型,模拟会变得更加多样化,因此阅读输出可能会更有趣。

public static void fight(Character player1, Character player2, int roundMax){
        player1.setTempHitPoints(player1.getHitPoints());
        player2.setTempHitPoints(player2.getHitPoints());
        int r = ROUND;
        while(!isFightOver(player1, player2)){
            roundTimer = 0;
            System.out.println("================");
            System.out.println("Round " + r + " FIGHT!");
            System.out.println("================");
            while(roundTimer < roundMax && !isFightOver(player1, player2)){
                roundTimer = roundTimer + Commands.roll(10);
                round(player1, player2);
                timerPrint(roundTimer, roundMax);
            }
            System.out.println("================");
            System.out.println("Round " + r + " OVER!");
            System.out.println("================");
            System.out.println("");

            if(!isFightOver(player1, player2)){
                Commands.rest(player1);
                Commands.rest(player2);
            }
            System.out.println("");
            r++;
        }
            declareWinner(player1, player2);
    }

您可以使用 Thread.sleep() 来减慢处理速度。 例如。 Thread.sleep(1000) 导致当前线程暂停执行一秒钟(1000 毫秒)。您能否明智地使用该方法来延迟代码?您可以使用java.util.Random生成随机数。

Random random = new Random();

Thread.sleep((random.nextInt(6) + 1) * 1000);  // Delays from 1 - 6 secs