繁体   English   中英

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

[英]Run each loop at a different time interval

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM