Игра на угадывание числа на 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
.
- Проверяйте пользовательский ввод и организуйте понятный для пользователя интерфейс с подсказками.