Угадать случайное число

pisikot

Пользователь
Сообщения
70
Оценка реакций
49
Рандомно загадывается число от 1 - 10, у вас есть 3 попытки.
*** можно добавить чтоб пользователь сам решал от 1 до n
*** можно добавить чтоб пользователь сам решал кол-во попыток
*** можно добавить счетчик попыток (вы угадали с 1й попытки и т.д.)
 

pisikot

Пользователь
Сообщения
70
Оценка реакций
49
Java:
import java.util.Scanner;

public class Num {
    public static void main(String[] args) {
        System.out.println("Угадайте число от 1 до 10!, у вас 3 попытки.");
        int num = (int) (Math.random() * 10 + 1);
        int userInput;
        Scanner scanner = new Scanner(System.in);

        for (int i = 0; i < 3; i++) {
            System.out.println("Введите " + (i + 1) + "е число: ");
            userInput = scanner.nextInt();
            if (num == userInput) {
                System.out.println("Угадал! это число: " + num);
                break;
            } else if (userInput > num) {
                System.out.println("надо меньше!");
            } else if (userInput < num) {
                System.out.println("Надо больше!");
            }

        }
        System.out.println("Конец игры!");
    }
}
 

mygedz

Администратор
Сообщения
567
Оценка реакций
54
Вот мое решение.
Реализованы все дополнительные задания. Так же добавил проверку на 0 и ввод числа, большего, чем число n.

Java:
import java.util.Scanner;
import java.util.Random;

public class Main {

    public static void main(String[] args) {

        System.out.println("Правило игры: Нужно угадать число, за определенное количество попыток.");
        System.out.println("Настроим условия игры:");

        Scanner in = new Scanner(System.in);
        System.out.print("Выбери промежуток чисел, от 1 до: ");
        int interval = in.nextInt();
        System.out.print("Введи количество попыток: ");
        int attempt = in.nextInt();

        int[] array = new int[interval];
        int rnd = new Random().nextInt(array.length);

        int x = 0;
        while (attempt > 0) {
            x++;
            attempt--;
            System.out.println("Попытка " + x + ". Введите число: ");
            int num = in.nextInt();
            if (num == 0 || num > interval || num < 0) {
                System.out.println("Будь внимательнее! От 1 до " + interval + ".");
            }
            if (num == rnd) {
                System.out.println("Молодец! Ты угадал с " + x + " попытки.");
                break;
            }
            if (attempt == 0) {
                System.out.println("Не угадал, это число " + rnd + ".");
            }
        }
    }
}
 
Последнее редактирование:

mygedz

Администратор
Сообщения
567
Оценка реакций
54
Внес правку, проверка на отрицательные числа:
Java:
if (num == 0 || num > interval || num < 0) {
                System.out.println("Будь внимательнее! От 1 до " + interval + ".");
            }
 

mygedz

Администратор
Сообщения
567
Оценка реакций
54
Так, сделали мне замечания по коду:
  1. наименование переменных не даёт представление об их предназначении (x, array, ...). Код должен читаться как книга )
  2. Ну и нужно сразу приучаться к декомпозиции сложных методов. К примеру, строки вывода задания на игру можно вынести в метод printGreeting() или printRules() или что-то наподобие. Это также повышает читаемость кода.
 

pisikot

Пользователь
Сообщения
70
Оценка реакций
49
Я попробовал сделать по этим рекомендациям.. не знаю правильно или нет)))

Java:
import java.util.Scanner;

public class GuessNumber {
    public static void main(String[] args) {
        printRules();
        System.out.println("Выберите промежуток числел от 1 до: ");
        int interval = inputNumber();

        System.out.println("Введите кол-во попыток");
        int attempt = inputNumber();

        int rndNumber = 1 + (int) (Math.random() * interval);
        System.out.println(game(attempt, rndNumber, interval));

    }

    static String game(int attemp, int rndNumber, int interval) {
        int step = 1;
        while (attemp > 0) {
            System.out.println("Попытка " + step + ". Введите число:");
            int userNumber = inputNumber();
            if (userNumber == 0 || userNumber > interval || userNumber < 0) {
                return "Ошибка! Число должно быть от 1 до " + interval;
            }
            if (userNumber == rndNumber) {
                return "Молодец! Ты угадал с " + step + " попытки.";
            }
            step++;
            attemp--;
        }
        return "Не угадал, это было число: " + rndNumber;
    }

    static void printRules() {
        System.out.println("Правила игры:\nНужно угадать число, за оперделенное кол-во.\nНастроим условия игры:");
    }

    static int inputNumber() {
        Scanner scanner = new Scanner(System.in);
        return scanner.nextInt();
    }
}
 

mygedz

Администратор
Сообщения
567
Оценка реакций
54
Работа над ошибками). Спасибо)
 
Верх Низ