Проблемы объявления
Значит разрабатываю игру с помощью библиотеки javaFX. Возникла потребность оптимизации кода, чтобы развить некоторую идею функционала. Решил, чтобы код был более удобным для чтения покидать некоторые вещи в функции, которые изначально просто весели и повторялись, однако как бы не пытался исправить проблему приходил к одному - ошибкам синтаксиса.
Вот код для вывода окна победы:
if (gameLogic.checkWin(currentPlayer)) {
showGameResult(primaryStage, "Победитель: игрок " + currentPlayer);
} else if (gameLogic.allCellsFilled()) {
showGameResult(primaryStage, "Ничья!");
}
if(currentPlayer == player1.getId())
currentPlayer = player2.getId();
else
currentPlayer = player1.getId();
Он представляет собой простое взятие информации из отдельного класса и все работает хорошо, если оно помещено в сам код хода:
if(playWithBot){
}
else {
Click();
if (gameLogic.checkWin(currentPlayer)) {
showGameResult(primaryStage, "Победитель: игрок " + currentPlayer);
} else if (gameLogic.allCellsFilled()) {
showGameResult(primaryStage, "Ничья!");
}
if(currentPlayer == player1.getId())
currentPlayer = player2.getId();
else
currentPlayer = player1.getId();
}
Однако если я добавлю еще логику игры с ботом и будет две такие повторяющиеся конструкции висеть, то это будет перегрузка кода. Поэтому пришел к выводу, что надо выносить, однако если вынести этот код в функцию и за стартовую функцию(start), то идет жалоба на primaryStage:
private void check(){
if (gameLogic.checkWin(currentPlayer)) {
showGameResult(primaryStage, "Победитель: игрок " + currentPlayer);
} else if (gameLogic.allCellsFilled()) {
showGameResult(primaryStage, "Ничья!");
}
if(currentPlayer == player1.getId())
currentPlayer = player2.getId();
else
currentPlayer = player1.getId();
}
В чем проблема моего кода?(даже если в стартовой функции это делать, то он жалуется)
Ответы (1 шт):
Оказалось все не так сложно, просто в эту функцию надо было предавать primaryStage:
public void Check(Stage primaryStage) {
if (gameLogic.checkWin(currentPlayer))
showGameResult(primaryStage, "Победитель: игрок " + currentPlayer);
else if (gameLogic.allCellsFilled())
showGameResult(primaryStage, "Ничья!");
}