import java.util.Scanner;
import java.util.Timer;
import java.util.TimerTask;
public class Boggle {
Board board;
Player player;
Timer timer;
boolean active;
static Scanner in = new Scanner(System.in);
public Boggle() {
board = new Board(4);
timer = new Timer();
}
public void newGame() {
System.out.println("Please enter your name: ");
String line = in.nextLine();
player = new Player(line);
active = true;
board.shuffle();
System.out.println(board);
timer.schedule(new timesUP(), 20000);
while(active) {
String temp = in.nextLine();
player.addGuess(temp);
}
}
public void endGame() {
active = false;
int score = Scoring.calculate(player, board);
System.out.println(score);
}
class timesUP extends TimerTask {
public void run() {
endGame();
}
}
public static void main(String[] args) {
Boggle boggle = new Boggle();
boggle.newGame();
}
}
У меня есть вышеуказанный класс, который должен выполнять цикл в течение заданного промежутка времени, а затем вызывать метод экземпляра. По сути, мне нужно, чтобы цикл в newGame () запускался в течение минуты или около того, прежде чем endGame () будет вызван в текущем экземпляре. Однако, используя класс Timer, я не уверен, как бы я вызвал метод, который мне нужен, в текущем экземпляре, так как я не могу передать какие-либо параметры методу запуска timertasks?
Есть ли простой способ сделать это или я поступаю неправильно? (примечание: это только консольный проект, без графического интерфейса)
==========
код отредактирован
Я изменил код на приведенный выше, следуя рекомендациям, и он работает почти так, как я ожидаю, однако поток по-прежнему не завершается должным образом. Я был в то время как цикл умрет, и контроль в конечном итоге вернется к основному методу. Есть идеи?