gpt4 book ai didi

java - 游戏计时器生成随机数而不是倒计时

转载 作者:行者123 更新时间:2023-11-30 03:51:39 27 4
gpt4 key购买 nike

我正在编写一款 Android 游戏。主游戏屏幕有一个倒计时计时器,当倒计时为零时游戏就结束了。下面的代码在用户第一次玩关卡时有效。然而,大约每五次用户玩第二个级别时,产生的数字就会变得随机,例如,它刚从 30 开始,然后变为 -15。谁能提出这样做​​的任何理由?

public class Timer1 {
int time = 120;
int counter = 0;
int startTime = 30; // Change to 2 minutes
Timer timer;

boolean end = false;

World world = new World();

public Timer1() {

}

public void subtractTime() {
startTime = startTime - 15; // Knock off 15 seconds for hint
}

public int getTime() {
return time;
}

public void startTimer() {
timer = new Timer();
time = 120;
startTime = 30;
end = false;
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
counter++;
time = startTime - counter;
if (time == 0) {
world.gameOver = true;
end = true;
timerCancel();
}
}
}, 0, 1000);
}

public void timerCancel() {
timer.cancel();
}

}

最佳答案

您永远不会将计数器重置为 0,如果您不是每次都实例化此类,那么该数字只会不断上升。

public void startTimer() {
timer = new Timer();
time = 120;
startTime = 30;
counter = 0; // NEW CODE
end = false;
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
counter++;
time = startTime - counter;
if (time == 0) {
world.gameOver = true;
end = true;
timerCancel();
}
}
}, 0, 1000);
}

但你正在做的是调用 startTimer,而是你的“重置计时器”。即重置所有变量然后您将启动计时器。如果您每次都执行 new Timer1().startTimer() 会更容易,这也会使您的代码更易于阅读和维护。

此外,如果您的数学不合格且时间不等于 0 但小于 0,则您的计时器会继续运行。当心。 如果(时间 == 0){

试试这个:

 if (time <= 0) {

关于java - 游戏计时器生成随机数而不是倒计时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14069141/

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