Шаг 1: установка и создание окна
Сначала устанавливаем Pygame и создаём окно проекта:
import pygame
import random
pygame.init()
ШИРИНА, ВЫСОТА = 600, 500
экран = pygame.display.set_mode((ШИРИНА, ВЫСОТА))
pygame.display.set_caption("Поймай монеты!")
ОРАНЖЕВЫЙ = (255, 140, 0)
БЕЛЫЙ = (255, 255, 255)
ЧЁРНЫЙ = (0, 0, 0)
ЖЁЛТЫЙ = (255, 220, 0) Библиотека Pygame — стандартный инструмент, с которого начинают писать интерактивные проекты на Python: она отвечает за окно, графику, звук и обработку нажатий клавиш. Первые строки кода создают окно и задают палитру цветов, которые пригодятся дальше. Уже на этом шаге видно, что за окном скрывается настоящая аркада, а не просто рисунок.
Шаг 2: создаём игрока и монету
игрок = pygame.Rect(280, 450, 60, 15) монета = pygame.Rect(random.randint(0, 550), 0, 20, 20) скорость_монеты = 4 счёт = 0 шрифт = pygame.font.Font(None, 36)
Здесь появляются два главных объекта проекта: прямоугольник-игрок и прямоугольник-монета. Функция random.randint выбирает, в каком месте экрана появится новая монета — благодаря этому при каждом запуске всё выглядит немного по-другому. Такой приём разработчики используют постоянно: он экономит время и не требует рисовать уровни заранее, каким бы ни был будущий проект.
Шаг 3: игровой цикл
часы = pygame.time.Clock()
запущено = True
while запущено:
for событие in pygame.event.get():
if событие.type == pygame.QUIT:
запущено = False
# Управление игроком
клавиши = pygame.key.get_pressed()
if клавиши[pygame.K_LEFT] and игрок.left > 0:
игрок.x -= 6
if клавиши[pygame.K_RIGHT] and игрок.right < ШИРИНА:
игрок.x += 6
# Движение монеты
монета.y += скорость_монеты
# Поймана?
if игрок.colliderect(монета):
счёт += 1
скорость_монеты += 0.3 # ускоряем
монета = pygame.Rect(random.randint(0, 550), 0, 20, 20)
# Упала мимо?
if монета.y > ВЫСОТА:
монета = pygame.Rect(random.randint(0, 550), 0, 20, 20)
# Рисуем
экран.fill(ЧЁРНЫЙ)
pygame.draw.rect(экран, ОРАНЖЕВЫЙ, игрок)
pygame.draw.circle(экран, ЖЁЛТЫЙ,
(монета.x + 10, монета.y + 10), 10)
текст = шрифт.render(f"Счёт: {счёт}", True, БЕЛЫЙ)
экран.blit(текст, (10, 10))
pygame.display.flip()
часы.tick(60)
pygame.quit() Запустите файл — всё работает! Каждая пойманная монета ускоряет следующую. Это уже настоящая механика прогрессии, знакомая по десяткам простых аркад.
Технически сложнее не становится, зато играть намного интереснее.
Шаг 4: добавляем жизни и финальный экран
Пока что раунд никогда не заканчивается — монеты падают бесконечно. Добавим жизни: если монета долетела до низа экрана, жизнь теряется, а когда жизни кончаются — появляется финальный экран.
жизни = 3
# внутри блока "Упала мимо?" вместо старого варианта:
if монета.y > ВЫСОТА:
жизни -= 1
монета = pygame.Rect(random.randint(0, 550), 0, 20, 20)
if жизни <= 0:
запущено = False
# после выхода из игрового цикла, перед pygame.quit():
экран.fill(ЧЁРНЫЙ)
текст_конец = шрифт.render(f"Игра окончена! Счёт: {счёт}", True, БЕЛЫЙ)
экран.blit(текст_конец, (170, 240))
pygame.display.flip()
pygame.time.wait(2000) Теперь у игрока есть три попытки, а не бесконечное количество — это делает риск в игре ощутимее: пропустить монету становится по-настоящему рискованно. Такой приём — жизни, очки, экран поражения — используют почти все аркады: это стандартный набор механик, от простых мобильных приложений до больших проектов на Unity.
Шаг 5: добавляем звук
Звук — один из самых простых способов улучшить ощущения от игры. В Pygame для этого есть модуль pygame.mixer.
pygame.mixer.init()
звук_монеты = pygame.mixer.Sound("coin.wav")
# внутри блока "Поймана?", после скорость_монеты += 0.3:
звук_монеты.play() Файл coin.wav нужно положить в ту же папку, что и основной файл, — подойдёт любой короткий звук в формате WAV. Даже такой мелкий штрих сильно меняет ощущение от прохождения: тестируйте изменения по одному, чтобы понимать, какое из них сработало лучше.
Шаг 6: заменяем прямоугольники на картинки
Прямоугольники отлично подходят для тестирования логики, но готовая игра приятнее смотрится, когда его показываешь друзьям с настоящими картинками.
картинка_игрока = pygame.image.load("basket.png")
картинка_монеты = pygame.image.load("coin.png")
# вместо pygame.draw.rect и pygame.draw.circle:
экран.blit(картинка_игрока, игрок)
экран.blit(картинка_монеты, монета) Картинки можно нарисовать самостоятельно в любом графическом редакторе или взять из открытых наборов спрайтов для инди-разработчиков — главное, чтобы размер картинки совпадал с размером прямоугольника в коде. Финальная картинка почти не меняет код, зато сразу видно, что перед тобой настоящая игра, а не черновик.
Какие ещё проекты можно написать на Python
«Поймай монеты» — простая аркада, но на Python получится создать игру практически любого жанра для начинающих:
- Викторина — игрок отвечает на вопросы, программа считает правильные ответы
- Змейка — классика, где змейка растёт с каждым съеденным яблоком
- Платформер — герой прыгает по платформам, собирает предметы, избегает врагов
- Крестики-нолики — простая логическая игра для двух игроков
- Память (Memory) — игра на запоминание пар карточек
Логика большинства таких проектов похожа на «Поймай монеты»: игровой цикл, объекты, столкновения, счёт. Разобравшись с одной, со следующей будет заметно проще — переиспользовать получится и структуру кода, и приёмы работы с Pygame. У каждой свой набор правил, но общий принцип разработки один и тот же.
Почему Python подходит для первого проекта
Python — один из самых простых языков для начинающих: минимум лишних символов, код читается почти как обычный текст. Первую рабочую программу пишут за один вечер, а не за неделю, как бывает с более сложными языками. У Python огромное сообщество: если что-то не работает, решение почти наверняка уже есть в интернете. Даже если ребёнок раньше никогда не писал код, к концу знакомства с Python у него на экране будет работать настоящая игра. Через Pygame открывается быстрый переход от простых текстовых программ к настоящим проектам с графикой — это и делает язык таким популярным выбором для первого знакомства с разработкой.
Из чего состоит процесс разработки
Любая разработка начинается не с кода, а с идеи. Сначала описывают, что делает игрок и чем заканчивается партия, затем выбирают жанр и рисуют схему уровня. Этап подготовки к разработке у профессионалов занимает больше времени, чем сам код: чем яснее правила на бумаге, тем меньше переделок потом.
Дальше начинается работа над игрой. Она идёт по кругу: написали кусок кода, запустили, посмотрели на результат, поправили. Этот цикл повторяют десятки раз, и именно он делает из простой идеи готовый проект. Занимаясь разработкой, полезно двигаться маленькими шагами: добавили один элемент, проверили, только потом взялись за следующий.
В крупных студиях над игрой трудятся команды: программисты, художники, звукорежиссёры и тестировщики. Годы уходят на разработку одного большого проекта, но начинающему хватает одного человека и одного вечера. Именно в этом ценность небольших учебных проектов: результат видно сразу, а основные приёмы те же, что и в большой разработке.
Тестирование и отладка
Ошибки в коде — не признак неудачи, а обычная часть разработки. Когда программа ведёт себя не так, как задумано, помогает простой порядок действий: воспроизвести ошибку, найти строку, где она появляется, исправить и снова запустить. Полезно проверять проект в разных сценариях: что будет, если корзина стоит у края экрана, если монета упала за границу, если очки перевалили за сотню.
Такая проверка — важная часть разработки и для профессионалов: в компаниях этим занимаются отдельные специалисты-тестировщики. При работе над учебной игрой достаточно спросить друга или родителя, чтобы они поиграли и сказали, где им было непонятно.
Идеи для доработки проекта
Когда игра работает, её можно развивать. Вот несколько простых идей:
- Уровни сложности: с каждым уровнем монеты падают быстрее
- Разные типы монет: обычные и «плохие», которые отнимают жизнь
- Таблица рекордов: лучший счёт сохраняется в файл
- Меню: стартовый экран с кнопкой «Начать»
- Бонусы: замедление времени или дополнительная жизнь
Каждая доработка — небольшое упражнение, которое закрепляет знакомые приёмы и добавляет один новый. Так одна небольшая программа превращается в основу для собственных экспериментов и первых шагов в разработке.
От учебного проекта к профессиональной разработке
Многие программисты начинали именно с таких небольших проектов. Навыки, полученные при создании учебной программы на Python, пригодятся и в веб-разработке, и в анализе данных, и в работе с искусственным интеллектом. Язык один, а направлений много: Python используют в сайтах, аналитике, автоматизации и обучении нейросетей. Поэтому первая игра — не тупик, а точка входа.
Какие понятия встретятся в коде
Пока вы пишете «Поймай монеты», вы неявно знакомитесь с основными понятиями, на которых держится любой проект на Python. Вот самые важные из них:
- Переменная — «коробка» с именем, где хранится число, текст или позиция объекта, например счёт или количество жизней
- Условие — проверка вида «если монета коснулась корзины, то добавить очко»
- Цикл — повторение действий: главный цикл проекта перерисовывает экран много раз в секунду
- Функция — именованный кусок кода, который можно вызвать в любой момент, например «нарисовать монету»
- Событие — нажатие клавиши или закрытие окна, на которое программа должна отреагировать
Эти пять понятий встречаются в любом языке, поэтому вы учите не просто одну программу, а основу, которая пригодится дальше.
Что делать, если застряли
Если игра не запускается или ведёт себя странно, не спешите переписывать всё заново. Сначала прочитайте текст ошибки: он подскажет строку и причину. Потом проверьте отступы и скобки — новички чаще всего ошибаются именно там. Если не помогло, сравните свой код с примером из статьи по одной строке, а затем попробуйте описать проблему словами: часто решение находится в момент, когда вы объясняете задачу вслух.
Полезно также запускать код маленькими кусками. Добавили одну строку — запустили. Так сразу видно, какое изменение помешало игре работать, и искать ошибку гораздо проще.
Помощь можно найти в документации Pygame, на форумах для программистов и в видеоуроках. А если нужен живой ответ, лучше всего работает наставник: преподаватель на курсе быстро находит причину ошибки и объясняет, на что смотреть в следующий раз. Ошибки, которые сегодня кажутся непонятными, через месяц занятий решаются за минуту. Главное — не бросать проект на середине: даже незаконченный вариант учит больше, чем идеальная, но так и не начатая затея, а готовая игра, которую можно запустить и показать, придаёт уверенности для следующих проектов.
От 2D к трёхмерным проектам: куда двигаться дальше
Проект «Поймай монеты» — двумерный (2D): всё действие происходит на плоскости экрана. Такой формат — стандартная стартовая точка для разработки: логика движения, столкновений и счёта остаётся такой же, как и в более сложных работах, а интерес к процессу сохраняется в любом измерении. Когда ребёнок освоит создание 2D-проектов на Python и захочет пойти дальше — в трёхмерные миры, следующий шаг — курс Unity, где на языке C# работают как с 2D-, так и с 3D-сценами. Первый семестр там посвящён 3D-моделированию, а второй — языку C#.
Ещё не решили, какую игру написать на Python?
«Поймай монеты» — только один пример; на Python есть простор почти для любого замысла. Проекты на этом языке разрабатывают по-разному: кто-то начинает с простой идеи вроде этой, а дальше уходит в платформер, викторину или змейку — Python одинаково подходит и для простых аркад, и для больших работ. Такие задачи заодно учат математике и логике, а результат виден сразу — его можно показать друзьям в тот же день. Примеров на Python в открытом доступе очень много: от учебных вариантов вроде «Поймай монеты» до полноценных проектов с сотнями строк кода — Pygame одинаково хорошо подходит для обоих случаев. Если хочется системного обучения, а не одного примера — на курсе Python школьники доходят до более сложных проектов уже через несколько занятий и постепенно учатся создавать их самостоятельно, от идеи до готового кода.
Что нужно, чтобы начать
Для старта хватает четырёх вещей: компьютер, бесплатный редактор кода, интернет для установки библиотеки и час свободного времени. Возраст ребёнка тоже не критичен — начать можно и в 10 лет, и в 15: код одинаковый, разница только в темпе объяснения. Родителям не обязательно самим уметь программировать, чтобы поддержать ребёнка на этом этапе — важнее не мешать пробовать и ошибаться.
Готовой игрой можно поделиться через GitHub — бесплатный сервис для хранения кода, которым пользуются профессиональные разработчики. Ссылку на репозиторий легко добавить в школьное портфолио или показать в резюме на будущее — так первый опыт не теряется, а остаётся зафиксированным.
Частые вопросы о первом проекте
Нужны ли специальные знания математики?
В каком редакторе писать код?
Что делать, если код выдаёт ошибку?
Можно ли работать над проектом вдвоём с другом?
Курс для детей
Python для детей — создаём проекты
На курсе дети изучают Python и создают проекты с нуля: от простых механик до полноценных работ на Pygame. Опыт нескольких проектов за учебный год закрепляет и синтаксис Python, и общую логику работы с кодом. Живые занятия, малые группы, реальные работы в портфолио.
Подробнее о курсе