Если я верну этот метод, он продолжит играть снова и снова. Но я
не знаю также, какой тип возврата мне нужно дать.
Ваш playGame*(
метод вызывает себя рекурсивно в последней строке return playGame()
. Я полагаю, вы сделали это, чтобы вообще что-нибудь вернуть Если вы думаете о своей проблеме, вы можете прийти к выводу, что вам вообще не нужно ничего возвращать (поскольку вы не знаете, что с ней делать). В этом случае вы можете ничего не возвращать void
, как вы делали в main
методе.
А также метод quitGame. Я хочу спросить пользователей, что если они хотят
играть или нет, и в соответствии с ответом я хотел бы запустить "playGame"
метод снова или выйдите из игры
Вы должны думать о том, что вы хотите. Вы хотите вызывать метод снова и снова в зависимости от условия. Для этого вы можете использовать цикл или рекурсию. Например, вы можете немного изменить свой метод main
и добавить цикл do-while.
public static void main(String[] args) {
entrance();
int condition;
do {
playGame();
condition = quitGame();
} while (condition == 1);
Не забудьте изменить метод quitGame
, потому что там вы пытаетесь рекурсивно решить свою проблему (удалите предложение if). Если вы хотите сделать это рекурсивно, игнорируйте вышеприведенное и посмотрите на этот фрагмент:
private static int quitGame() {
System.out.println("Do you want to play again?\nPress 1 for play again\nPress 2 for quit the game!");
Scanner key = new Scanner(System.in);
int userWannaPlay = key.nextInt();
if(userWannaPlay == 1) {
playGame(); // you dont need a println here
} else if (userWannaPlay == 2) {
// you dont need to anything here
System.out.println("Quitting...");
} else {
System.out.println("You entered an invalid number. If you want to play again or quit, you need to click 1 or 2!");
// call quitGame again to ask for the choice again
quitGame();
}
return userWannaPlay; // if you do it like this, this return is also unnecessary and you could use a void method without returning anything
}