在方法中实现计时器

时间:2019-12-10 12:21:14

标签: java

我正在用Java做一个项目(RPG-Game),有一种方法叫做“ sleep()”,如果英雄睡觉他不能与敌人或其他人战斗,并且例如在之后他有1 HP他睡着了,获得最大生命值,然后准备战斗。 我的问题是我需要使用计时器作为睡眠方法,例如英雄“维纳斯”(Venus)睡眠3分钟,而他在那段时间内无法战斗。

我的属性和方法:

public class Superhero {
private String id = UUID.randomUUID().toString();;
private String name;
private int healthPointsMax;
private int healthPointsCurrent;
private int damage;
private int critStrike;
private int critChance;
private String heroRole;
private int experiencePoints;
private String superpowers;
private boolean readyToFight;
private boolean inFight;
private boolean alive;`

和我的方法:

public void sleep() {
    System.out.println("Dein Superheld " + name + " legt sich schlafen.");
    System.out.println(name + " hat wieder volle HP, wenn er/sie wach ist.");
    setHealthPointsCurrent(getHealthPointsMax());
    readyToFight = false;
}

2 个答案:

答案 0 :(得分:1)

您可以尝试在您的方法中使用java.util.Timer,如下所示:

public void sleep() {
    System.out.println("Dein Superheld " + name + " legt sich schlafen.");
    System.out.println(name + " hat wieder volle HP, wenn er/sie wach ist.");
    readyToFight = false;
    Timer timer = new Timer();
    TimerTask task = new TimerTask() {
         public void run() {
              setHealthPointsCurrent(getHealthPointsMax());
              readyToFight = true;
              timer.cancel();
         }
    };

    long delay = 120000L; // 2 minutes delay
    timer.schedule(task, delay);
}

答案 1 :(得分:0)

您可以实例化Java中的实际Timer。在此处查看文档:{​​{3}}