gpt4 book ai didi

java - 如何逐步提高某事的速度?

转载 作者:行者123 更新时间:2023-11-30 11:23:53 25 4
gpt4 key购买 nike

我正在创建一个 2d 僵尸射击游戏,我正在尝试寻找一种逐渐提高僵尸创建速度的好方法。

我使用以下代码创建了一个僵尸。

    public void createZombies(){

int direction = new Random().nextInt(4);

if (direction == 0) {
// spawn from top
zombies.add(new Zombie(new Random().nextInt(1120), new Random()
.nextInt(1)));
}
if (direction == 1) {
// spawn from left
zombies.add(new Zombie(new Random().nextInt(1), new Random()
.nextInt(640)));
}
if (direction == 2) {
// spawn from bottom
zombies.add(new Zombie(new Random().nextInt(1120), 640));
}
if (direction == 3) {
// spawn from right
zombies.add(new Zombie(1120, new Random().nextInt(640)));
}


}

我基本上想从我的主要方法(连续运行)中调用该方法。我想也许使用模块化并做类似的事情:

    int x = 1;
if(x % 1000 == 0){
createZombies();
}

x++;

但这看起来很困惑 - 而且它不会改变它们的创建频率。

我只是有点难以找到执行此操作的好方法 - 令人惊讶的是我在这里也找不到任何有用的东西。因此,如果有人能指出这样做的好主意,我们将不胜感激!!

最佳答案

Guava 有一个 RateLimiter这可能对您的用例有用。特别是,您可以执行以下操作:

//initially, create one zombie every 10 seconds
final RateLimiter zombieRate = RateLimiter.create(0.1);
Runnable increaseRate = new Runnable() {
@Override public void run() {
//increase rate by 20%
zombieRate.setRate(zombieRate.getRate() * 1.2);
}
};

//then increase the rate every minute
ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
scheduler.scheduleAtFixedRate(increaseRate, 1, 1, TimeUnit.MINUTES);

然后你的僵尸创作变成:

while (true) {
zombieRate.acquire();
createZombie();
}

关于java - 如何逐步提高某事的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20925202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com