gpt4 book ai didi

Java 我的计时器出了什么问题?

转载 作者:行者123 更新时间:2023-12-02 13:18:08 25 4
gpt4 key购买 nike

我有一个计时器,可以在你的人挨饿时减去一点生命值,如果他挨饿,我希望它每 10 秒减去一个点,但是一旦定时器启动,它就会循环消除生命值,我做了什么错误的?

http://puu.sh/vAu2H.png这是输出来显示什么结果吧。它会在 10 秒结束之前消除生命值。

这是我的计时器代码:

`

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.util.Timer;
import java.util.TimerTask;

public class GUI {

public void tick() {
if(Player.starving) {
Timer timer = new Timer();
int begin = 0; //timer starts after 1 second.
int timeinterval = 10 * 1000; //timer executes every 10 seconds.
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
//This code is executed at every interval defined by timeinterval (eg 10 seconds)
//And starts after x milliseconds defined by begin.
Player.health = Player.health - 1;
System.out.println(Player.health);
}
},begin, timeinterval);
}
}

public void render(Graphics g) {
Font menuFont = new Font( "SansSerif", Font.PLAIN, 18);

g.setFont(menuFont);

g.setColor(Color.green);
g.drawString("Money: " + String.valueOf(Player.money) + " $", 655, 25);

g.setColor(Color.red);
g.drawString("Health: " + String.valueOf(Player.health) + " / 5.0", 10, 25);

g.setColor(Color.white);
g.drawString(String.valueOf(Time.globalTime), Engine.WIDTH * Engine.SCALE / 2 + 30, 25);

if(Player.health <= 0) {
g.setColor(Color.black);
g.fillRect(0, 0, Engine.WIDTH, Engine.HEIGHT);

g.setColor(Color.white);
g.drawString("Your pet is dead :'(", Engine.WIDTH * Engine.SCALE / 2 - 75, Engine.HEIGHT * Engine.SCALE / 2);
}
tick();
}
}

这是我得到的视频:https://www.youtube.com/watch?v=x3JwZh_rpqc&feature=youtu.be

最佳答案

每次调用渲染时,您都会启动一个新的计时器,该计时器会降低生命值。您需要确保计时器是否已经计时,您不会启动另一个计时器。

关于Java 我的计时器出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43701633/

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