Python
Как сделать игру на Python: первая консольная игра «Угадай число»
Если вы только начинаете, первую игру на Python лучше сделать в консоли. Это не значит, что игра будет скучной. Просто сначала важнее понять основу: как программа выбирает случайное число, как игрок вводит ответ, как работает цикл, как программа подсказывает «больше» или «меньше» и когда игра заканчивается
Для первого урока подойдет игра «Угадай число». Python загадывает число от 1 до 100, игрок вводит варианты, а программа отвечает, куда двигаться. В этой маленькой игре уже есть почти все базовые элементы программирования: переменные, условия, цикл, ввод, вывод, случайность и проверка ошибок
Что будет в игре
Игрок запускает программу и видит приглашение угадать число. После каждого ответа программа говорит, число больше или меньше. Если игрок угадал, программа поздравляет его и показывает количество попыток
Вот как может выглядеть запуск:
Я загадал число от 1 до 100
Ваш вариант: 50
Мое число меньше
Ваш вариант: 25
Мое число больше
Ваш вариант: 37
Верно! Вы угадали за 3 попытки
Такой формат хорош тем, что его легко повторить дома: достаточно установить Python, создать один файл и запустить его из терминала. Никакие игровые движки на первом шаге не нужны
Полный код игры
Создайте файл guess_number.py и вставьте туда этот код:
import random
secret = random.randint(1, 100)
attempts = 0
print("Я загадал число от 1 до 100")
while True:
user_text = input("Ваш вариант: ")
try:
user_number = int(user_text)
except ValueError:
print("Введите целое число, например 42")
continue
attempts += 1
if user_number < secret:
print("Мое число больше")
elif user_number > secret:
print("Мое число меньше")
else:
print(f"Верно! Вы угадали за {attempts} попытки")
break
Запустите файл командой:
python guess_number.py
На некоторых компьютерах команда может называться python3:
python3 guess_number.py
Если программа запустилась и начала спрашивать варианты, значит первый игровой цикл уже работает
Как работает этот код
Строка import random подключает модуль для случайных чисел. Без него Python не знает функцию random.randint(), которая выбирает число в заданном диапазоне
secret = random.randint(1, 100)
Здесь программа загадывает число от 1 до 100 и сохраняет его в переменную secret. Игрок этого числа не видит, но программа будет сравнивать с ним каждый ответ
attempts = 0
Переменная attempts хранит количество попыток. Сначала попыток ноль, а после каждого нормального числового ввода мы увеличиваем значение на один
while True:
Это игровой цикл. Он повторяет ввод до тех пор, пока игрок не угадает число. Когда правильный ответ найден, команда break останавливает цикл и игра заканчивается
Зачем здесь try и except
Игрок может ввести не число, а слово, пустую строку или случайные символы. Если сразу написать int(input(...)), программа упадет с ошибкой. Поэтому код сначала получает текст, затем аккуратно пробует превратить его в число
try:
user_number = int(user_text)
except ValueError:
print("Введите целое число, например 42")
continue
Если пользователь ввел abc, Python не сможет сделать из этого целое число. Тогда сработает except ValueError, программа покажет понятное сообщение и перейдет к следующей попытке через continue
Такой блок делает игру дружелюбнее. Новичок не видит страшную ошибку интерпретатора, а получает нормальное объяснение, что именно нужно ввести
Как программа понимает, что ответ правильный
После ввода числа идут три проверки:
if user_number < secret:
print("Мое число больше")
elif user_number > secret:
print("Мое число меньше")
else:
print(f"Верно! Вы угадали за {attempts} попытки")
break
Если число игрока меньше загаданного, программа подсказывает двигаться вверх. Если больше — вниз. Если не меньше и не больше, значит число совпало, поэтому игра выводит победное сообщение и выходит из цикла
Как улучшить игру
После первой рабочей версии можно добавить ограничение на количество попыток. Например, дать игроку только 7 попыток, а затем показать загаданное число. Это сделает игру ближе к настоящей задаче, потому что появится проигрыш
import random
secret = random.randint(1, 100)
attempts = 0
max_attempts = 7
print("Я загадал число от 1 до 100")
print(f"У вас есть {max_attempts} попыток")
while attempts < max_attempts:
user_text = input("Ваш вариант: ")
try:
user_number = int(user_text)
except ValueError:
print("Введите целое число")
continue
attempts += 1
if user_number < secret:
print("Мое число больше")
elif user_number > secret:
print("Мое число меньше")
else:
print(f"Победа! Вы угадали за {attempts} попытки")
break
else:
print(f"Попытки закончились. Я загадывал число {secret}")
Здесь появляется конструкция while ... else. Блок else выполнится, если цикл закончился сам из-за условия attempts < max_attempts, а не был остановлен через break. Для новичка это хороший пример того, что else бывает не только у if
Почему не начинать сразу с графики
Многие хотят сразу сделать игру с окном, персонажем, кнопками и картинками. Это нормальное желание, но для первого урока такой путь часто мешает. Вместо логики игры приходится разбираться с установкой библиотек, событиями клавиатуры, координатами, картинками и игровым циклом
Правильнее сначала сделать консольную механику. Когда стало понятно, как работает ввод, условие победы, счетчик попыток и повторение цикла, можно переходить к Pygame или другой библиотеке для графики. Тогда графика будет следующим слоем, а не стеной, в которую упирается первый день обучения
Как повторить на своем компьютере
Откройте любой редактор кода или обычный текстовый редактор, создайте файл guess_number.py, вставьте код и сохраните файл в отдельную папку. Если используете VS Code, проще создать папку python-games, открыть ее в редакторе и уже внутри создать файл
Затем откройте терминал в этой папке. В VS Code это можно сделать через меню Terminal -> New Terminal. На macOS можно открыть Terminal, написать cd с пробелом и перетащить папку в окно терминала, чтобы путь подставился автоматически. На Windows можно открыть папку в проводнике, нажать в адресную строку, написать cmd и нажать Enter
После этого выполните:
python guess_number.py
Если команда python не найдена, попробуйте:
python3 guess_number.py
Когда игра попросит вариант, вводите числа и нажимайте Enter. Если видите подсказки «больше» и «меньше», значит программа работает правильно
Мини-практика
Добавьте выбор сложности. Например, на легком уровне число загадывается от 1 до 50, на среднем от 1 до 100, на сложном от 1 до 500. Для этого можно спросить у игрока уровень перед началом игры и в зависимости от ответа выбрать верхнюю границу для random.randint()
После этого добавьте оценку результата. Если игрок угадал за 3 попытки или меньше, выводите «Отличный результат», если за 4-7 попыток — «Хорошо», если дольше — «Получилось, но можно быстрее». Такая доработка учит превращать простую программу в маленький продукт с правилами и обратной связью
Частые ошибки
Ошибка первая: забыли import random. Тогда строка random.randint(1, 100) выдаст NameError, потому что модуль случайных чисел не подключен
Ошибка вторая: сравниваете строку с числом. input() возвращает текст, поэтому перед сравнением нужно сделать int(user_text). Без этого логика игры будет неправильной или программа упадет
Ошибка третья: не поставили break после победы. Тогда программа поздравит игрока, но цикл продолжит работать, и игра не закончится
Ошибка четвертая: начинаете с большой графической игры. Для первой практики лучше сделать консольную версию, понять правила, а потом переносить идею в Pygame
Что почитать дальше по Python
Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:
- Как сделать Змейку на Python: простая игра на Pygame
- Как сделать калькулятор на Питоне: простой код для начинающих
- Как сделать конвертер валют на Python: простой проект для начинающих
- Как из списка сделать строку в Python: join, map и частые ошибки