Перейти к содержимому
#АйДаКодить
#АйДаКодить
школа программирования
ИТ-лагерь с 25 октября
Создание игры на Python

Создание 2D и 3D игр на Python

Создадим игру «Поймай монеты» на Python с нуля — без опыта в разработке. Игрок управляет корзинкой, которая ловит падающие монеты. Считаем очки, добавляем скорость. Весь код — меньше 80 строк, а собрать его можно за один вечер.

Шаг 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 — бесплатный сервис для хранения кода, которым пользуются профессиональные разработчики. Ссылку на репозиторий легко добавить в школьное портфолио или показать в резюме на будущее — так первый опыт не теряется, а остаётся зафиксированным.

Частые вопросы о первом проекте

Нужны ли специальные знания математики?
Для «Поймай монеты» хватает сложения и вычитания — считать очки и менять координаты. Более сложные проекты используют больше математики (векторы, углы, физику), но начинать можно и без неё.
В каком редакторе писать код?
Подойдёт любой бесплатный редактор кода — например, VS Code. После установки редактора саму библиотеку для окна и графики ставят одной командой в терминале.
Что делать, если код выдаёт ошибку?
Ошибки — обычная часть работы, даже у опытных людей. Текст ошибки почти всегда указывает конкретную строку и тип проблемы: опечатка, лишний отступ, забытая скобка. Со временем читать такие сообщения становится заметно проще.
Можно ли работать над проектом вдвоём с другом?
Да, и вдвоём часто получается быстрее и веселее: один пишет логику, другой рисует картинки или придумывает уровни. Главное — заранее договориться, кто за что отвечает, чтобы не переписывать одну и ту же часть дважды.

Курс для детей

Python для детей — создаём проекты

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

Подробнее о курсе
Пробный урок — 500 ₽
500 ₽ · полный урок 60 минут
Формат
Ваш телефон
В каком классе учится ребёнок? Выберите класс — так подберём группу и формат первой встречи