Найти в Дзене
Таков путь джуна

Игра Double or Nothing

Необходимо создать игру Double or Nothing, правила игры: Для начала создадим два класса DoubleOrNothing, где будем хранить все методы для игры и DoubleOrNothingGame, откуда будем запускать игру. Начнем с класса DoubleOrNothing: private static int startPoints = 10;
private Scanner scanner = new Scanner(System.in);
private Random random = new Random();
private int current = startPoints;
private boolean isStillPlaying = true; Для начала мы приветствуем пользователя и спрашиваем у него готов ли он продолжить игру и рискнуть своими очками (стартовая точка - 10 очков) public void playGame()
printWelcome();
askUserToContinue(); Для работы этой игры хорошо подойдет цикл (while) и рандомайзер будет пытаться удвоить очки пользователя. Пока пользователь удачлив и не принял решение покинуть игру с текущими очками, игра продолжается. Если полизователь выигрывает, очки удваиваются, в консоль выводится сообщение и мы спрашиваем пользователя не хочет ли он продолжить рисковать? Если пользоват

Необходимо создать игру Double or Nothing, правила игры:

  • Пользователь начинает игру с 10-ю очками.
  • У пользователя есть выбор удвоить свои очки.
  • Если пользователь решается рискнуть, рандомайзер должен определить получает ли пользователь двойные очки или теряет все.

Для начала создадим два класса DoubleOrNothing, где будем хранить все методы для игры и DoubleOrNothingGame, откуда будем запускать игру.

Начнем с класса DoubleOrNothing:

  • Определим поля, которые понадобятся для игры (стартовое количество очков, ввод пользователя, генератор случайных чисел и поля, которые позволят контролировать логику игры).

private static int startPoints = 10;
private Scanner scanner = new Scanner(System.
in);
private Random random = new Random();
private int current =
startPoints;
private boolean isStillPlaying = true;

  • Самый важный блок кода будет содержать методы-помощники, большинство этих методов будут выводить в консоль сообщения для пользователя.

Для начала мы приветствуем пользователя и спрашиваем у него готов ли он продолжить игру и рискнуть своими очками (стартовая точка - 10 очков)

public void playGame()
printWelcome();
askUserToContinue();

Для работы этой игры хорошо подойдет цикл (while) и рандомайзер будет пытаться удвоить очки пользователя. Пока пользователь удачлив и не принял решение покинуть игру с текущими очками, игра продолжается.

Если полизователь выигрывает, очки удваиваются, в консоль выводится сообщение и мы спрашиваем пользователя не хочет ли он продолжить рисковать?

Если пользователь проигрывает раунд, в консоль выводится сообщение и игра на этом заканчивается.

Если пользователь принимает решение покинуть игры с текущими очками, в консоль выводится сообщение о финальном результате и игра заканчивается

while (this.isStillPlaying)
printTryToDouble();
if (shouldDouble())
doubleCurrent();
printCongrats();
askUserToContinue();
else
printLost();
return;
printWalkawayMessage();

  • Первая часть класса будет выглядеть так:

public class DoubleOrNothing {

private static int
startPoints = 10;
private Scanner scanner = new Scanner(System.
in);
private Random random = new Random();
private int current =
startPoints;
private boolean isStillPlaying = true;

public void playGame() {
printWelcome();
askUserToContinue();

while (this.isStillPlaying) {
printTryToDouble();

if (shouldDouble()) {
doubleCurrent();
printCongrats();
askUserToContinue();
} else {
printLost();
return;
}
}
printWalkawayMessage();
}

  • Далее перейдем к реализации методов-помощников, многие из этих методов будут просто выводить сообщение пользователю.

private void printWelcome() {
System.
out.println("Давай сыграем в Double or Nothing. Начнем с " + startPoints + " стартовых очков\n");
}

private void printTryToDouble() {
System.
out.println("Давай попробуем удвоить!");
}

private void printCongrats() {
System.
out.println("Поздравляю! У тебя сейчас " + this.current + " очков!\n");
}

private void printLost() {
System.
out.println("О нет. Ты проиграл. Все очки пропали =(");
}

private void printWalkawayMessage() {
System.
out.println("Поздравляю! Ты закончил с " + this.current + " очками");
}

В методе shouldDouble мы используем экземпляр объекта "random", чтобы сгенерировать число, которое равно единице или нулю. Если значение равно нулю, возвращается "true". Данный метод помогает держать "рандомность" в пределах 50%.


private boolean shouldDouble() {
return this.random.nextInt(2) == 0;
}

private void doubleCurrent() {
this.current = this.current * 2;
}

Если вы удачливы, то программа спросит: "хотите ли вы продолжить?". При вводе "да", в любом из регистров, цикл запустится заново, при любом другом вводе запустится метод "private void printWalkawayMessage()"

protected void askUserToContinue() {
System.
out.println("Хочешь ли ты испытать удачу и удвоить свои очки? Введи 'ДА' чтобы продолжить");
this.isStillPlaying = this.scanner.nextLine().equalsIgnoreCase("ДА");
}

  • Готовый код в классе "DoubleOrNothing" выглядит так:

import java.util.Random;
import java.util.Scanner;

public class DoubleOrNothing {

private static int
startPoints = 10;
private Scanner scanner = new Scanner(System.
in);
private Random random = new Random();
private int current =
startPoints;
private boolean isStillPlaying = true;

public void playGame() {
printWelcome();
askUserToContinue();

while (this.isStillPlaying) {
printTryToDouble();

if (shouldDouble()) {
doubleCurrent();
printCongrats();
askUserToContinue();
} else {
printLost();
return;
}
}
printWalkawayMessage();
}

private void printWelcome() {
System.
out.println("Давай сыграем в Double or Nothing. Начнем с " + startPoints + " стартовых очков\n");
}

private void printTryToDouble() {
System.
out.println("Давай попробуем удвоить!");
}

private void printCongrats() {
System.
out.println("Поздравляю! У тебя сейчас " + this.current + " очков!\n");
}

private void printLost() {
System.
out.println("О нет. Ты проиграл. Все очки пропали =(");
}

private void printWalkawayMessage() {
System.
out.println("Поздравляю! Ты закончил с " + this.current + " очками");
}

private boolean shouldDouble() {
return this.random.nextInt(2) == 0;
}

private void doubleCurrent() {
this.current = this.current * 2;
}
protected void askUserToContinue() {
System.
out.println("Хочешь ли ты испытать удачу и удвоить свои очки? Введи 'ДА' чтобы продолжить");
this.isStillPlaying = this.scanner.nextLine().equalsIgnoreCase("ДА");
}
}

  • В классе DoubleOrNothingGame просто будем запускать игру:

public class DoubleOrNothingGame {
public static void main(String[] args) {
DoubleOrNothing game = new DoubleOrNothing();
game.playGame();
}
}