Игра Угадай Число на Java

Игра на угадывание числа на Java — это простая программа, в которой компьютер случайным образом выбирает число, а пользователь должен угадать его за ограниченное количество попыток. Программа подсказывает, было ли предположение слишком большим или слишком маленьким, направляя пользователя к правильному ответу.

Этот проект отлично подходит для новичков, чтобы потренировать циклы, условные операторы, обработку пользовательского ввода и генерацию случайных чисел в Java.

Правила игры:

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

Подробности реализации

  • Программа генерирует случайное число в заданном диапазоне (например, от 1 до 100).
  • Пользователь имеет ограниченное количество попыток (K попыток) для угадывания числа.
  • После каждого предположения программа даёт подсказку:
    • Если число больше загаданного — подсказывает «попробуйте меньше».
    • Если число меньше загаданного — подсказывает «попробуйте больше».
  • Если пользователь угадал — он выигрывает.
  • Если попытки закончились — игра показывает правильный ответ.

Подход к реализации:

Для создания игры следует выполнить следующие шаги:

  • Сгенерировать случайное число с помощью метода Math.random().
  • Собрать ввод от пользователя с помощью класса Scanner.
  • Сравнить предположение с загаданным числом и выдать отзыв.
  • Ограничить количество попыток с помощью цикла.
  • Обработать крайние случаи (например, неверный ввод).

Реализация:

Ниже приведён пример программы на Java, реализующей игру на угадывание числа:

// Java Program to demonstrates the Number guessing game
import java.util.Scanner;

public class Geeks {
    
    public static void guessingNumberGame() {
        Scanner sc = new Scanner(System.in);

        // Генерируем случайное число от 1 до 100
        int number = 1 + (int)(100 * Math.random());

        // Количество попыток
        int K = 5;

        System.out.println("Загадано число от 1 до 100.");
        System.out.println("У вас есть " + K + " попыток, чтобы угадать число.");
        
        // Цикл на K попыток
        for (int i = 0; i < K; i++) {
            System.out.print("Введите ваше предположение: ");
            int guess = sc.nextInt();

            // Проверяем условия
            if (guess == number) {
                System.out.println("Поздравляем! Вы угадали число.");
                sc.close();

                // Выход из функции при правильном угадывании
                return;
            } else if (guess < number) {
                System.out.println("Загаданное число больше " + guess);
            } else {
                System.out.println("Загаданное число меньше " + guess);
            }
        }

        // Если попытки закончились
        System.out.println("Все попытки исчерпаны. Правильное число было: " + number);
        sc.close();
    }

    public static void main(String[] args) {
        guessingNumberGame();
    }
}

Результат работы:

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

Обратите внимание: вместо метода Math.random() для генерации случайных чисел в Java можно использовать класс Random из пакета java.util:

Random random = new Random();
int number = random.nextInt(100) + 1;

Игра на угадывание числа с неограниченным количеством раундов и подсчётом очков

Подход:

  • После исчерпания K попыток пользователю предоставляется возможность продолжить игру.
  • Ведётся подсчёт очков — количества попыток, затраченных на правильное угадывание.
  • Игра продолжается, пока игрок не угадает число.

Реализация:

Ниже представлен пример Java-программы с неограниченными раундами и учётом очков:

// Number guessing game with
// Unlimited Rounds and Score Tracking
import java.util.Scanner;

public class Geeks {
    public static void guessingNumberGame() {
        Scanner sc = new Scanner(System.in);

        // Генерируем случайное число от 1 до 100
        int number = 1 + (int)(100 * Math.random());

        // Подсчёт количества попыток
        int attempts = 0;

        // Максимальное количество попыток за раунд
        int K = 5;

        boolean guessedCorrectly = false;

        System.out.println("Загадано число от 1 до 100.");
        System.out.println("У вас есть " + K + " попыток за раунд, чтобы угадать число.");

        while (!guessedCorrectly) {

            // Пользователь получает K попыток за раунд
            for (int i = 0; i < K; i++) {
                System.out.print("Введите ваше предположение: ");
                int guess = sc.nextInt();
                attempts++; // Увеличиваем счётчик попыток

                if (guess == number) {
                    System.out.println("Поздравляем! Вы угадали число за " + attempts + " попыток.");
                    guessedCorrectly = true;
                    break;
                } else if (guess < number) {
                    System.out.println("Загаданное число больше " + guess);
                } else {
                    System.out.println("Загаданное число меньше " + guess);
                }
            }

            if (!guessedCorrectly) {

                // Спрашиваем пользователя, хочет ли он продолжать после K попыток
                System.out.println("Вы исчерпали все " + K + " попыток.");
                System.out.print("Хотите продолжить угадывать? (да/нет): ");
                String response = sc.next();

                if (!response.equalsIgnoreCase("да")) {
                    System.out.println("Игра окончена! Правильное число было: " + number);
                    break;
                }
            }
        }

        sc.close();
    }

    public static void main(String[] args) {
        guessingNumberGame();
    }
}

Результат работы:

Программа даёт пользователю несколько раундов из K попыток и ведёт подсчёт общего количества попыток до правильного ответа. Пользователь может прекратить игру после каждого раунда.

---

🔑 Ключевые моменты:
- Игра на угадывание числа демонстрирует основные конструкции Java: циклы, условные операторы, ввод с клавиатуры, генерацию случайных чисел.
- Для ограниченного количества попыток используйте цикл с счётчиком, который прерывается при успехе.
- Для более сложной версии добавьте возможность неограниченного количества раундов и подсчёт попыток.
- При генерации случайных чисел можно применять как Math.random(), так и класс Random.
- Проверяйте пользовательский ввод и организуйте понятный для пользователя интерфейс с подсказками.

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *