こんにちは、私はJavaが初めてで、Uniでコースを受講しています。プレイヤーが推測するランダムな nr を生成する小さなゲームを作成するタスクを取得しました。推測した後、プレイヤーはもう一度プレイするか、待機して自動的にメイン メニューに戻るかを選択する必要があります。
最初に試してみthread.sleep(5000)
ましたが、ユーザー入力(nextLine)を待っていたためスタックしました。それから友人は、私が使用したタイマーとタイマータスクについて話しましたが、今では私のゲームはほとんど機能しています。
唯一の問題は、メソッドから新しいメソッドを呼び出すときrun()
に、バックグラウンドで実行されている古い (Y/N をもう一度再生する) スレッドが終了しないことです。そのため、メニューが 5 秒後に表示されると、最初の入力は、メイン メニュー オプションではなく、もう一度プレイする Y/N の選択に接続されます。kod パーツは次のとおりです。
public void tryAgain() {
Timer timer = new Timer();
Task timerTask = new Task();
int y = 1;
String yesNo = sc.nextLine();
System.out.println("Try again Y/N");
Statistics.setGames(games);
timer.schedule(timerTask, 5000);
do {
try {
yesNo = sc.nextLine();
if (yesNo.equals("Y") || yesNo.equals("y")) {
guesses = 0;
y = 2;
timerTask.cancel();
playGame();
} else if (yesNo.equals("N") || yesNo.equals("n")) {
y = 3;
timerTask.cancel();
Statistics.setGames(games);
menu.showMainMenu();
} else {
System.out.println("Wrong input, try Y or N:");
}
} catch (Exception e) {
sc.next();
System.out.println("Wrong input, try Y or N:");
}
} while (y == 1);
}
と :
import java.util.TimerTask;
class Task extends TimerTask {
play menu = new play();
public void run() {
Statistics.getGames();
menu.menu.showMainMenu();
cancel();
}
}