Стоп таймер с условно работает только в первый раз?
я пишу "Кто хочет стать миллионером " игра, и у меня все настроено, этоПросто проблема с таймером.
Игра работает так: если пользователь правильно понял вопрос, он / она двигается дальше. Если нет, игра окончена, и они могут играть снова.
Когда игра впервые запускаетсяВсе в порядке, и таймер делает то, что он должен - начать с 30 секунд и отсчет времени, отображая секунды.
Тем не менее, когда пользователь нажимает "играть снова " предыдущий таймер продолжается с новым таймером. Как это:
У -timerA оставалось 20 секунд до того, как пользователь проиграл (обозначено как a).
-timerB начинается в следующий раз, когда в игру играют (обозначено как b).
выход: 20a 29b 19a 28b 18a 27b 17a 26b ....... 2a 11b 1a 10b 9b 8b 7b 6b 5b 4b 3b 2b 1b
Итак, вот мой класс таймера, называемый CountDown:
import java.util.Timer;
import java.util.TimerTask;
public class CountDown {
static Timer timer;
public static int seconds = 30;
public CountDown() {
timer = new Timer();
timer.schedule(new DisplayCountdown(), 0, 1000);
}
class DisplayCountdown extends TimerTask {
int seconds = 30;
public void run() {
if (seconds == 0) {
timer.cancel();
timer.purge();
return;
}
if (seconds > 0) {
PlayFrame.timer.setText("" + seconds); //jLabel used to display seconds
seconds--;
if (seconds < 30) {
if (PlayFrame.right == true) { //check if question was answered correctly
System.out.print("true"); //testing purposes
PlayFrame.right = false;
PlayFrame.showQuestion();
PlayFrame.startTimer();
seconds = 0;
//break;
}
else if (PlayFrame.right == false) {
//break;
}
}
else if (seconds == 0) { //if time runs out its automatic wrong answer
PlayFrame.wrong();
//break;
}
else {
PlayFrame.wrong();
PlayFrame.timer.setText(null);
timer = new Timer();
//break;
}
}
System.out.println(seconds); // for testing purposes only
}
}
}
и вот некоторые из моих PlayFrame:
import java.awt.Color;
import java.util.Timer;
public class PlayFrame extends javax.swing.JFrame {
public static void wrong() {
//determines which losing frame to show
if (count 2 && count