# Игра в несколько строк: как создать консольный проект на Python и снова полюбить программирование

# Игра в несколько строк: как создать консольный проект на Python и снова полюбить программирование

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

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

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

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

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

Почему маленькая консольная игра полезнее большого проекта

Небольшие программы часто недооценивают. Кажется, что в них нет ничего сложного и они не могут дать серьезного опыта. Однако именно такие проекты позволяют сосредоточиться на логике, не отвлекаясь на второстепенные задачи.

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

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

Такая обратная связь поддерживает интерес и помогает не потерять мотивацию.

Консольная игра также дает возможность безопасно экспериментировать. Если что-то пошло не так, проект легко переписать или дополнить.

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

Что понадобится для работы

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

Проверить это можно командой:bash python --version На некоторых системах вместо нее используется вариант:bash python3 --version Если терминал показывает номер версии, среда готова к работе.

Для написания кода можно использовать любой редактор: Visual Studio Code, Sublime Text, PyCharm или даже стандартный текстовый редактор. Главное - сохранить файл с расширением `. py`, например `guess_game. py`. Запуск выполняется из папки, где находится файл:bash python guess_game.

py После этого программа начнет взаимодействовать с пользователем прямо в терминале. Такой способ запуска хорошо показывает, что Python-программа не обязательно должна иметь графическое окно: полноценная логика может работать в обычной командной строке.

Создаем основу игры на Python

Сначала сформулируем правила. Компьютер выбирает случайное число в определенном диапазоне, например от 1 до 100. Игрок вводит свой вариант, а программа сообщает, было ли предположение слишком большим или слишком маленьким.

Игра продолжается до тех пор, пока пользователь не угадает правильное значение. Для генерации случайного числа понадобится встроенный модуль `random`.

Подключим его в начале файла:python import random Теперь выберем число:python secret_number = random. randint(1, 100) Функция `randint()` возвращает случайное целое число в заданном диапазоне. В данном случае границы равны 1 и 100, причем оба значения могут выпасть.

Полученный результат сохраняется в переменной `secret_number`.

Игрок его не видит, поэтому именно эта переменная будет хранить секрет ответа. Далее добавим приветствие и объясним правила:python print("Добро пожаловать в игру!") print("Я загадал число от 1 до 100. ") print("Попробуйте его угадать. ") Функция `print()` выводит текст в терминал.

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

Получаем ввод и сравниваем значения

Для чтения данных от пользователя в Python применяется функция `input()`. Она возвращает введенное значение в виде строки.

Поскольку нам требуется сравнивать числа, результат нужно преобразовать в целое число с помощью `int()`:python guess = int(input("Введите число: ")) Сначала программа выводит приглашение, затем ожидает ввода.

После нажатия клавиши Enter полученная строка преобразуется в число и сохраняется в переменной `guess`. Теперь можно сравнить предположение с загаданным значением:python if guess < secret_number:print("Загаданное число больше.

") elif guess > secret_number:print("Загаданное число меньше. ") else:print("Поздравляем!

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

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

Чтобы игрок мог делать новые попытки, понадобится цикл. Для этой задачи удобно использовать `while`, который повторяет блок команд, пока выполняется указанное условие. Полный базовый вариант может выглядеть так:python import randomsecret_number = random. randint(1, 100)print("Добро пожаловать в игру!") print("Я загадал число от 1 до 100.

")while True:guess = int(input("Введите число: "))if guess < secret_number:print("Загаданное число больше. ")elif guess > secret_number:print("Загаданное число меньше. ")else:print("Поздравляем! Вы угадали. ")break Конструкция `while True` создает бесконечный цикл.

Он остановится только тогда, когда программа встретит команду `break`. В нашем примере это происходит после правильного ответа. Пока пользователь ошибается, цикл повторяется и программа снова запрашивает число.

Делаем игру удобнее и надежнее

Базовая версия уже работает, но ее можно улучшить. Например, полезно сообщать игроку количество сделанных попыток. Это добавляет соревновательный элемент и позволяет оценить результат.

Для подсчета введем переменную `attempts` перед началом цикла:python attempts = 0 После каждого ввода будем увеличивать ее на единицу:python attempts += 1 При победе выведем итог:python print(f"Вы угадали за {attempts} попыток!") Буква `f` перед строкой позволяет вставлять в текст значения переменных.

Такой формат называется f-строкой. В результате пользователь увидит не название переменной, а ее фактическое значение.

Обновленная версия программы:python import randomsecret_number = random. randint(1, 100) attempts = 0print("Добро пожаловать в игру!") print("Я загадал число от 1 до 100. ")while True:guess = int(input("Введите число: "))attempts += 1if guess < secret_number:print("Загаданное число больше. ")elif guess > secret_number:print("Загаданное число меньше. ")else:print(f"Поздравляем! Вы угадали за {attempts} попыток.

")break Теперь игра стала интереснее, но у нее остается одна проблема. Если пользователь введет не число, а слово или случайный символ, программа завершится с ошибкой `ValueError`.

Для настоящего взаимодействия лучше предусмотреть такую ситуацию.

Обрабатываем неправильный ввод

Для защиты от ошибок используется конструкция `try` и `except`. Внутри `try` размещаются команды, которые потенциально могут завершиться исключением. Если пользователь введет некорректное значение, управление перейдет в блок `except`.

python while True:try:guess = int(input("Введите число: "))except ValueError:print("Пожалуйста, введите целое число. ")continue Команда `continue` пропускает оставшуюся часть текущей итерации и возвращает программу к началу цикла. Благодаря этому некорректный ввод не завершает игру, а просто предлагает пользователю повторить попытку.

Можно также проверить, находится ли число в допустимом диапазоне:python if guess < 1 or guess > 100:print("Введите число от 1 до 100. ")continue Итоговый вариант получится таким:python import randomsecret_number = random. randint(1, 100) attempts = 0print("Добро пожаловать в игру!") print("Я загадал число от 1 до 100.

")while True:try:guess = int(input("Введите число: "))except ValueError:print("Пожалуйста, введите целое число. ")continueif guess < 1 or guess > 100:print("Число должно быть от 1 до 100.

")continueattempts += 1if guess < secret_number:print("Загаданное число больше. ")elif guess > secret_number:print("Загаданное число меньше. ")else:print(f"Поздравляем! Вы угадали за {attempts} попыток. ")break Обратите внимание: счетчик увеличивается только после проверки диапазона.

Поэтому случайные слова и числа за пределами правил не считаются полноценными попытками.

Как развить проект и превратить его в полноценную игру

Даже такой маленький проект можно расширять практически без ограничений. Самое очевидное улучшение - несколько уровней сложности. На легком уровне число можно загадывать от 1 до 50, на среднем - от 1 до 100, а на сложном - от 1 до 1000.

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

Может быть интересно: Организация локального сервера для видеонаблюдения: отказ от облачных услуг

Это меняет стратегию: пользователю приходится внимательнее анализировать подсказки. Еще одна интересная возможность - добавить повторный запуск.

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

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

Не менее полезно изменить саму механику.

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

Чему учит этот небольшой пример

Консольная игра показывает, как отдельные элементы Python объединяются в работающую систему.

Модуль `random` отвечает за случайность, переменные хранят состояние, `input()` получает информацию от пользователя, условия выбирают дальнейшее действие, а цикл обеспечивает повторение процесса. Кроме того, проект демонстрирует важность обработки ошибок.

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

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

При этом проект остается достаточно маленьким, чтобы не перегрузить начинающего разработчика.

Простое программирование не означает примитивное или бесполезное. Наоборот, именно в небольших проектах особенно хорошо видны базовые принципы разработки.

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