Java 如何在if语句中使用计时器
我需要每x时间更新游戏中的食物量。我想使用if语句,但它不会工作,因为计时器和int不能一起工作,我猜Java 如何在if语句中使用计时器,java,timer,int,Java,Timer,Int,我需要每x时间更新游戏中的食物量。我想使用if语句,但它不会工作,因为计时器和int不能一起工作,我猜 Timer timer = new Timer(200, this); public void update() { double dt = 0; timer += dt; if(timer > 1000) { food++; timer = 0;
Timer timer = new Timer(200, this);
public void update()
{
double dt = 0;
timer += dt;
if(timer > 1000)
{
food++;
timer = 0;
}
}
我建议在这方面使用实时。要做到这一点,您只需要有两个变量(上次馈送的时间和现在的时间)。只需计算时间差并将其置于if条件中。参考以下示例:
import java.util.Date;
public class Main {
public static Date lastDate = new Date();
public static int food = 0;
public static void main(String args[]) {
System.out.println("Food was added on " + lastDate.toString() + ". Food now is " + food);
while (food < 5) {
update();
}
}
public static void update() {
Date dateNow = new Date();
// in milliseconds
long diff = dateNow.getTime() - lastDate.getTime();
long diffSeconds = diff / 1000 % 60;
// long diffMinutes = diff / (60 * 1000) % 60;
// long diffHours = diff / (60 * 60 * 1000) % 24;
// long diffDays = diff / (24 * 60 * 60 * 1000);
// If more than 5 seconds have passed
if (diffSeconds > 5) { // just change this to your desired interval
lastDate = new Date(); // get the time now
food++; // increment food
System.out.println("Food was added on " + lastDate.toString() + ". Food now is " + food);
}
}
}
定时器+=0
??对于我的钱,我会考虑计算从“最后一次进食”过去的时间量,然后使用它,因为计时器天生不准确,但那就是我。这并不能真正回答我所需要的问题,但它可能对我在开发中的另一个游戏有用。谢谢你?但是我需要计时器与Int一起工作。知道这是如何工作的吗?作为“一般”规则,基于时间的比较比增加计数器更好,因为它们将更好地考虑系统开销和可能发生的延迟,这可能会导致计时器变得“不规则”,只是说;)@TassoPsaltakis如果它有帮助,那么请不要忘记接受它作为一个答案,并投票支持它!:)好啊非常感谢你。它工作得很好,我调整它来配合我的游戏,它运行得令人惊讶。有一件事,游戏现在闲置时,这是工作。有没有办法解决这个问题?@TassoPsaltakis你只需要在另一个线程中运行代码。有关如何创建线程的信息,请参阅本节->
Food was added on Fri Mar 29 09:15:08 SGT 2019. Food now is 0
Food was added on Fri Mar 29 09:15:14 SGT 2019. Food now is 1
Food was added on Fri Mar 29 09:15:20 SGT 2019. Food now is 2
Food was added on Fri Mar 29 09:15:26 SGT 2019. Food now is 3
Food was added on Fri Mar 29 09:15:32 SGT 2019. Food now is 4
Food was added on Fri Mar 29 09:15:38 SGT 2019. Food now is 5