我正在用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;
}
答案 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}}