DevGang
Авторизоваться

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

Последние выходные я провёл за составлением списка игр, которые можно написать на Python. Но зачем?

Если вы начинающий программист на Python, создание увлекательных игр поможет вам быстрее и лучше освоить язык, не увязнув в синтаксисе и тому подобных вещах. Я создал несколько таких игр, когда изучал Python; мне очень понравился этот процесс!

Первая игра, которую вы можете написать, и самая простая из них - это игра на угадывание чисел (или "Угадай число!"). Поэтому я решил написать пошаговое руководство по кодированию этой игры и помочь новичкам освоить некоторые основы.

Давайте приступим!

Как работает игра "Угадай число"?

В игре "Угадай число" пользователь угадывает случайно сгенерированное секретное число за заданное количество попыток.

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

Кодирование игры "Угадай число"

Приступим к кодированию! Создайте новый Python-скрипт и начинайте его написание.

Шаг 1 - Импорт модуля random

Начнем с импорта встроенного модуля random. Модуль random содержит функции, которые можно использовать для генерации случайного секретного числа в заданном диапазоне:

import random

Примечание: модуль random выдает псевдослучайные, а не истинно случайные числа. Поэтому не используйте его для работы с конфиденциальными приложениями, такими как генерация паролей!

Шаг 2 - Настройка диапазона и максимального количества попыток

Далее необходимо определить диапазон секретного номера и максимальное количество попыток, предоставляемых игроку. Для данного руководства установим lower_bound (нижнюю границу) и upper_bound (верхнюю границу), 1 и 1000 соответственно. Также установим максимальное количество попыток max_attempts, равное 10:

lower_bound = 1
upper_bound = 1000
max_attempts = 10

Шаг 3 - Генерация случайного числа

Теперь сгенерируем случайное число в заданном диапазоне с помощью функции random.randint(). Это и есть секретное число, которое должен угадать пользователь:

secret_number = random.randint(lower_bound, upper_bound)

Шаг 4 - Считывание введённой пользователем информации

Для получения входных данных от пользователя создадим функцию get_guess(). Напомним, что пользователь может ввести некорректный вариант: число вне диапазона [lower_bound, upper_bound], строку или число с плавающей точкой и т.д.

С этим мы справляемся с помощью функции get_guess(), которая постоянно предлагает пользователю ввести число в заданном диапазоне, пока он не введет правильное значение.

Здесь мы используем цикл while, который подсказывает пользователю допустимый вариант ввода до тех пор, пока пользователь не введёт целое число между lower_bound и upper_bound:

def get_guess():
    while True:
        try:
            guess = int(input(f"Guess a number between {lower_bound} and {upper_bound}: "))
            if lower_bound <= guess <= upper_bound:
                return guess
            else:
                print("Invalid input. Please enter a number within the specified range.")
        except ValueError:
            print("Invalid input. Please enter a valid number.")

Шаг 5 - Проверка предположения пользователя

Далее зададим функцию check_guess(), которая принимает секретное число и предположение пользователя в качестве входных данных и выдает информацию о том, является ли предположение правильным, слишком большим или слишком малым.

Функция сравнивает угаданное игроком число с секретным и выводит соответствующее сообщение:

def check_guess(guess, secret_number):
    if guess == secret_number:
        return "Correct"
    elif guess < secret_number:
        return "Too low"
    else:
        return "Too high"

Шаг 6 - Отслеживание количества попыток и определение условий окончания игры

Теперь создадим функцию play_game(), которая обрабатывает логику игры и собирает всё воедино. Функция использует переменную attempts для отслеживания количества попыток, сделанных пользователем. С помощью цикла while пользователю предлагается ввести отгадку, которая обрабатывается функцией get_guess().

Вызов функции check_guess() обеспечивает обратную связь с предположением пользователя:

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

Здесь представлена функция play_game():

def play_game():
    attempts = 0
    won = False

    while attempts < max_attempts:
        attempts += 1
        guess = get_guess()
        result = check_guess(guess, secret_number)

        if result == "Correct":
            print(f"Congratulations! You guessed the secret number {secret_number} in {attempts} attempts.")
            won = True
            break
        else:
            print(f"{result}. Try again!")

    if not won:
        print(f"Sorry, you ran out of attempts! The secret number is {secret_number}.")

Шаг 7 - Сыграйте в игру!

Наконец, вы можете вызывать функцию play_game() при каждом запуске Python-скрипта:

if __name__ == "__main__":
    print("Welcome to the Number Guessing Game!")
    play_game()

Соединяем все вместе

Теперь наш Python-скрипт выглядит следующим образом:

# main.py
import random

# define range and max_attempts
lower_bound = 1
upper_bound = 1000
max_attempts = 10

# generate the secret number
secret_number = random.randint(lower_bound, upper_bound)

# Get the user's guess
def get_guess():
    while True:
        try:
            guess = int(input(f"Guess a number between {lower_bound} and {upper_bound}: "))
            if lower_bound <= guess <= upper_bound:
                return guess
            else:
                print("Invalid input. Please enter a number within the specified range.")
        except ValueError:
            print("Invalid input. Please enter a valid number.")

# Validate guess
def check_guess(guess, secret_number):
    if guess == secret_number:
        return "Correct"
    elif guess < secret_number:
        return "Too low"
    else:
        return "Too high"

# track the number of attempts, detect if the game is over
def play_game():
    attempts = 0
    won = False

    while attempts < max_attempts:
        attempts += 1
        guess = get_guess()
        result = check_guess(guess, secret_number)

        if result == "Correct":
            print(f"Congratulations! You guessed the secret number {secret_number} in {attempts} attempts.")
            won = True
            break
        else:
            print(f"{result}. Try again!")

    if not won:
        print(f"Sorry, you ran out of attempts! The secret number is {secret_number}.")

if __name__ == "__main__":
    print("Welcome to the Number Guessing Game!")
    play_game()

Вот результат пробного запуска скрипта:

Welcome to the Number Guessing Game!
Guess a number between 1 and 1000: 500
Too low. Try again!
Guess a number between 1 and 1000: 750
Too high. Try again!
Guess a number between 1 and 1000: 625
Too low. Try again!
Guess a number between 1 and 1000: 685
Too low. Try again!
Guess a number between 1 and 1000: 710
Too low. Try again!
Guess a number between 1 and 1000: 730
Congratulations! You guessed the secret number 730 in 6 attempts.

Подведение итогов

Поздравляем! Вы успешно создали игру по угадыванию чисел на Python. Просмотрите наши статьи о создании игр «Камень, ножницы, бумага» и «Игра в слова» и начинайте кодить! Успехов Вам в создании собственных проектов!

Источник:

#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу