Как создать игру на угадывание чисел в Python?

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

Давайте научимся создавать игру на угадывание чисел с нуля.

Игра в угадывание чисел

Игра проста. Пользователь должен угадать случайно сгенерированное число, лежащее в диапазоне от 1 до 100. Вот и все.

Игра настолько проста?

Да это оно.

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

Мы можем сделать его более захватывающим, добавив дополнительные функции, такие как максимальное количество шансов угадать, увеличить диапазон, установить таймер и т. д.,

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

Я хочу, чтобы вы попробовали создать игру без слепого копирования кода. Итак, сначала я объясню алгоритм. Это поможет вам кодировать самостоятельно или быстро понять код.

Давайте рассмотрим алгоритм создания игры «Угадай число».

Алгоритм

Убедитесь, что вы понимаете алгоритм, прежде чем переходить к части кодирования.

  • Определите диапазон чисел. По умолчанию это 1-100, но вы можете изменить его по своему усмотрению.
  • Сгенерируйте случайное целое число из указанного выше диапазона (1-100).
  • Запустите игру, показав пользователю сообщение «Угадай число от X до Y». Вы можете обновить сообщение по своему усмотрению.
  • Инициализируйте переменную равным 0, чтобы подсчитать общее количество шансов, которые пользователь предпринял, чтобы правильно угадать число.
  • Напишите бесконечный цикл.
    • Попросите пользователя угадать число.
    • Если текущее угаданное число равно случайно сгенерированному числу, то поздравить пользователя сообщением можно как угодно. Примером может быть «-> Ура! Вы получили это за 5 шагов!».
    • Разорвите цикл после поздравления пользователя.
    • Если текущее угаданное число меньше случайно сгенерированного числа, дайте пользователю сообщение «-> Ваше число меньше, чем случайное число» или пользовательское сообщение, имеющее тот же смысл.
    • Если текущее угаданное число больше, чем случайно сгенерированное число, то дайте пользователю сообщение «-> Ваше число больше, чем случайное число» или обычай с тем же значением.
    • Наконец, увеличьте шансы пользователя угадать.

Вы бы получили код в уме после того, как увидели алгоритм. Не волнуйтесь, даже если вы не получите полный код. Но убедитесь, что вы понимаете приведенный выше алгоритм.

Пришло время приступить к работе с кодом. Войдите в код без дальнейших церемоний.

Код

Вы пробовали писать код?

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

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

Итак, давайте посмотрим код.

import random


class NumberGuessingGame:

    def __init__(self):
        ## define the range
        self.LOWER = 1
        self.HIGHER = 100

    ## method to generate the random number
    def get_random_number(self):
        return random.randint(self.LOWER, self.HIGHER)

    ## game start method
    def start(self):
        ## generating the random number
        random_number = self.get_random_number()

        print(
            f"Guess the randomly generated number from {self.LOWER} to {self.HIGHER}")

        ## heart of the game
        chances = 0
        while True:
            user_number = int(input("Enter the guessed number: "))
            if user_number == random_number:
                print(
                    f"-> Hurray! You got it in {chances + 1} step{'s' if chances > 1 else ''}!")
                break
            elif user_number < random_number:
                print("-> Your number is less than the random number")
            else:
                print("-> Your number is greater than the random number")
            chances += 1

## instantiating and starting the game
numberGuessingGame = NumberGuessingGame()
numberGuessingGame.start()

Есть некоторые вещи, которые вы понимаете из кода.

  • Диапазон определяется внутри метода __init__, поэтому его можно использовать в методах класса.
  • Мы можем легко изменить его в одном месте, которое соответственно изменится во всем приложении.
  • Существует отдельный метод генерации случайного числа, который следует принципу «разделения проблем». Здесь у нашего метода мало кода, но он может увеличиться в будущем.
  • Наконец, мы использовали класс, чтобы каждый метод, связанный с игрой, находился внутри него. И его можно легко повторно использовать в некоторых других приложениях.

Все пункты, которые обсуждались выше, относятся к написанию чистого кода. Мы должны попытаться написать чистый код, который вы понимаете даже через несколько X лет.

Пример вывода игры выглядит следующим образом.

$ python number_guessing_game.py 
Guess the randomly generated number from 1 to 100
Enter the guessed number: 50
-> Your number is less than the random number
Enter the guessed number: 75
-> Your number is less than the random number
Enter the guessed number: 90
-> Your number is greater than the random number
Enter the guessed number: 85
-> Your number is greater than the random number
Enter the guessed number: 80
-> Hurray! You got it in 5 steps!

Я предполагаю, что у вас установлен Python, чтобы попробовать приведенный выше код.

Дополнительная функция

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

Как мы добавим его?

Это простой двухэтапный процесс. Давайте посмотрим шаги.

  • Определите максимальное количество шансов, которое пользователь может угадать число.
  • Проверьте, есть ли у пользователя шансы или нет, прежде чем запрашивать ввод. И завершить игру, если у пользователя нет шансов.

Следующий дополнительный код завершит функцию.

  • Добавьте следующий код в метод __init__.
self.MAX_CHANCES = 10
  • Добавьте следующее условие, прежде чем пользователь введет следующее предположение.
if chances == self.MAX_CHANCES:
                print("-> Phew! You lost the game. You are out of chances")

Теперь попробуйте игру, не угадывая правильное число. Вы должны увидеть аналогичный вывод, как показано ниже.

$ python number_guessing_game.py 
Guess the randomly generated number from 1 to 100. You have 10 chances to guess.
Enter the guessed number: 1
-> Your number is less than the random number
Enter the guessed number: 2
-> Your number is less than the random number
Enter the guessed number: 3
-> Your number is less than the random number
Enter the guessed number: 4
-> Your number is less than the random number
Enter the guessed number: 5
-> Your number is less than the random number
Enter the guessed number: 6
-> Your number is less than the random number
Enter the guessed number: 7
-> Your number is less than the random number
Enter the guessed number: 8
-> Your number is less than the random number
Enter the guessed number: 9
-> Your number is less than the random number
Enter the guessed number: 10
-> Your number is less than the random number
-> Phew! You lost the game. You are out of chances

Ура! мы добавили дополнительную функцию в нашу игру. Это еще не конец. Вы можете добавить некоторые дополнительные функции, чтобы сделать его более привлекательным для пользователей. Сейчас ваше время. Давай, сделай его еще красивее :).

Вывод

Мы создали простую игру на угадывание чисел. Теперь ваша очередь подумать об играх, в которые вы играли, когда были молоды. Создавайте их с помощью языка программирования и делитесь ими с друзьями. Мы можем оцифровать большинство наших детских игр.

Затем изучите Python IDE и онлайн-компилятор для запуска кода Python.

Удачного кодирования 🙂

Если вам не хватает вирусных словесных игр, вот как добиться большего успеха в Wordle.

Понравилось читать статью? Как насчет того, чтобы поделиться с миром?