3

我正在创建一个视频游戏,我有一个 for 循环可以恢复你的健康

public void recoverHealth() {
    if (curHealth < finalHealth) {
        for (double i = 0; i < finalHealth; i = i + 0.1) {
            curHealth = curHealth + 0.1;
            System.out.println("health: " + curHealth);
        }
    }
}

但问题是,java 经历这个过程太快了,甚至在游戏开始之前就从 0 到 20。我怎样才能在不减慢整个游戏的情况下减慢 recoverHealth() 方法的速度,例如 Thread.sleep 不起作用..

try {
    Thread.sleep(1000);
} catch (Exception e) {
    e.printStackTrace();
}

有任何想法吗?

4

2 回答 2

6

放入recoverHealth单独的线程中,并Thread.sleep()按照您的描述使用。

于 2014-03-21T04:29:19.657 回答
3

将此添加到您的游戏程序中,其中 curHealth 可以访问。

timer = new Timer();
timer.schedule(new TimerTask (){
    public void run() {
        curHealth = curHealth + 0.1;
    }
}, 1000);
于 2014-03-21T04:44:40.223 回答