Перейти к содержанию

🗒 Задача

Напиши небольшую консольную игру, в которой нужно угадать число в промежутке от 1 до 9. Игроку дается 5 попыток, чтобы угадать это число.

– если игрок угадывает число, выводится сообщение “Это была великолепная игра!” и программа завершает работу;

– если не угадывает, то отображается "Неверно" или что-то на твое усмотрение и оставшееся количество попыток;

– после истечения попыток выводится сообщение “Было загадано число N”.

❌ Ошибки

  • объявляют вместо 5 попыток любое другое значение — нужно именно 5 и под это число выстраивать решение

  • декремент используется неправильно (постфикс вместо инфикса)

✏️ Комментарии

Согласно [конвенции стиля Котлин](https://kotlinlang.org/docs/coding-conventions.html) циклы лучше обосабливать пустыми разделяющими строками сверху и снизу. Чтобы код не выглядел таким монолитным)
Думаю можно попробовать использовать do while. В условии проверять сразу два условия – что попытки еще не окончены и инпут пользователя не равен загаданному числу
Декремент можно еще поместить прямо в условие, чтобы сэкономить строку
Для рандома можно использовать запись с помощью экстеншн функции `random()`. И импорт использовать не придется. Она применяется, например, к диапазону `1..9`
Лучше не "спамить" пустыми принтами для дополнительной пустой строки, а использовать символ переноса строки)
Дается 5 попыток, значит объявлять нужно именно это значение)
И выстраивать условие от него. Это нужно для поддержки и расширяемости, если придется быстро поменять только количество попыток.

🧾 Решение

fun main() {
    val number = (1..9).random()
    var counter = 5

    do {
        println("Введите число от 1 до 9!")
        val numberEnter = readln().toInt()

        if (numberEnter == number) {
            println("Это была великолепная игра!")
            return

        } else {
            --counter
            println("Неверно! Осталось $counter попыток.")
        }
    } while (counter > 0)

    println("Было загадано число $number.")
}