我正在制作的游戏遇到一些问题。我正在尝试实现一个转向结构,但是我似乎无法让一个类等到另一个类完成。
主Game类需要等到用户按下GameView类中的按钮才能继续计算发生的事情然后再次调用turn方法。
我尝试过使用wait()和notify()方法但是GameView GUI没有加载,或者它不会通知Game类继续。有人可以帮忙吗?感谢
if (player1.isPlayerFinsihed() == false && player1.getPlayersTurn() == true) {
//Check for if the game has just been started
if (player1.getDifficulty() == 0) {
player1.setDifficulty(currentDifficulty);
turn();
}
else {
int number = questionArray1.getNumber(player1.getDifficulty());
int playerCategory = player1.getCategory();
int playerQuestionNumber = player1.getQuestionNumber();
Question newQuestion = questionArray1.getQuestion(number,playerCategory);
Answer newAnswer = questionArray1.getAnswer(number,playerCategory);
GameView newGameView = new GameView(number, playerQuestionNumber, 1, newQuestion, newAnswer);
//INSERT WAIT METHOD HERE
if (newGameView.getCorrect() == true) {
//add score based on question position
System.out.println("Correct");
}
//False
else {
//finish game for player
player1.setGameOver(true);
}
//display and wait
//while (//main screen is not returning that the player is done) {
// do nothing
//}
turn();
}
}
答案 0 :(得分:0)
答案 1 :(得分:0)
正如Sotirios Delimanolis在评论中指出的那样,一个班级不会等待,也不会跑。类是一段代码和数据,因此没有 execution 的概念。执行代码的是线程。线程是独立的,并行运行代码 (同时)。因此,它们具有允许它们之间同步的若干机制。因此,如果您希望同时执行2个类,则需要为每个类生成一个线程。然后你只需处理其中一个线程,等待另一个线程使用Thread#join()
完成。
您可以查看official tutorials以了解有关Java的并发性的更多信息。