Нажмите ОК, если Вы выражаете свое согласие на обработку Ваших персональных данных в соответствии с Согласием на обработку персональных данных и Политикой конфиденциальности. Вы можете запретить обработку cookies через браузер.
ОК

Как ребенок может сделать игру тетрис
на Python?

Тетрис — одна из тех игр, на которых отлично учиться программированию: здесь есть движение, управление с клавиатуры, границы поля, поворот фигур и «сжигание» заполненных рядов. В этой статье мы пошагово разберем, как ребенок может собрать свою версию тетриса на Python с помощью pygame: настроить падение и ускорение, добавить проверку столкновений, научить фигуры вставать друг на друга и довести проект до полноценной игры. В финале — советы по улучшениям и идея, как превратить учебный код в классный игровой проект.

Попробуйте бесплатно!

Оставьте свой номер: мы позвоним, чтобы записать на бесплатное занятие и ответить на все ваши вопросы.

Введение

Тетрис — популярная аркадная игра, которая была разработана и выпущена русским программистом Алексеем Пажитновым в 1984 году. Она быстро стала мировым хитом и получила огромную популярность по всему миру.

Суть игры довольно проста, но именно это позволяет ей вызывать интерес у людей и по сей день. К тому же ее можно создать самому, используя возможности языка программирования Python («Питон»).

Если программирование для школьников вам не знакомо — не беда. Мы пошагово расскажем о том, что нужно делать для создания игры. Главное — повторять все со 100% точностью. Если вам удобнее воспринимать урок в формате видео, то под статьей мы прикрепили ролик, где преподаватель школы Pixel подробно объясняет, что необходимо установить, запустить и нажать, чтобы ваш проект заработал.
Скидка 10% для новых клиентов при записи в день обращения*
Отправьте заявку, и мы свяжемся с вами для консультации
* Скидка действует по промокоду на покупку первого абонемента от 12 занятий и более в день обращения. Новым считается клиент, прежде ни разу не приобретавший абонемент в школе.

Python для школьников: создаем свой «Тетрис» с нуля

Напоминаем, что для начала кодинга игр на «Пайтоне» нам понадобится модуль Pygame. Для его установки следует запустить Windows PowerShell (приложение доступно по поиску при нажатии кнопки «Пуск») и прописать без кавычек «Pip install pygame», после этого нажать Enter.

Начинаем «Тетрис» на Python с импорта необходимых библиотек: pygame, random, copy. Особенно нам важна библиотека copy, так как она позже поможет нам в создании последних штрихов игры.

После этого запускаем Visual Studio Code, paygame и задаем два параметра: I_max и J_max.

Для первого параметра указываем число 11, а для второго — 21. В итоге у нас появляется 11 и 20 ячеек.

Создание «Тетрис» на Python для детей: добавляем переменные

Следующий шаг для того, чтобы ребенку сделать игру самому — создание переменных. Мы должны добавить их с параметрами экрана 300 на 600.

Затем приступим к формированию экрана, где указываем переменные и описываем класс Clock (), который будет отвечать за управление временем, а в нашем случае — за частоту его обновления. Также установим название экрана.

Кроме того, чтобы самому сделать игру «Тетрис» нужно вычислить ширину и высоту каждой ячейки нашей сетки. Делим параметр screen на I_max - 1 и J_max - 1. Это объясняется тем, что каждая точка в области соответствует одной ячейке, и количество точек на единицу меньше количества ячеек. Для определения частоты обновления кадров мы создаем переменную, равную 60.

Если вы читаете текст здесь и у вас что-то не получается, то внизу страницы будет указан полный код для запуска проекта. Проверьте все данные или скопируйте часть параметров для самопроверки.
Заберите PDF-карту
IT-профессий будущего для школьников:
что реально востребовано и какие навыки развивать уже сейчас
Чтобы получить файл, укажите данные

Продолжаем онлайн-урок на Python для детей: запускаем цикл

Теперь предстоит создать список, в котором будут храниться настройки сетки (именно она и будет отображаться на экране).

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

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

По завершении запускаем бесконечный цикл.

Создание игры на Python с нуля: заливка экрана

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

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

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

«Тетрис» для детей на Python: детали

В верхнем правом углу нажимаем на треугольник (Play), который отобразит написанный код через консоль. Должна быть видна белая сетка на черном фоне. Если это так — вы на правильном пути.

Для более правильной работы кода добавим событие «нажатие на крестик». Это прописывается ниже строки game=True. Чтобы вспомнить о том, какие фигуры (детали) используются в игре, с ними можно ознакомиться в интернете, например, в «Википедии». Всего в «Тетрисе» используются 7 элементов, каждый из которых состоит из 4 кубов.

Рисовать детали мы будем интересным способом: запишем координаты шагов относительно центра, то есть точки 00, и далее будем исходить из того, что 3-й элемент — это 00.

Следующий шаг — сделать список с сущностями деталей. С этой целью мы создаем список det.

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

Сделаем случайный выбор детали из нашего списка и настроим отрисовку детали в программе. Напишем условие, чтобы на каждый кадр запускался цикл по четырем прямоугольникам внутри случайно выбранной детали. То есть в каждый кадр будет прорисовано 4 прямоугольника из списка случайно выбранной детали. Запускаем консоль для проверки — должна появиться деталь вверху экрана. При каждом новом запуске консоли будет появляться случайная фигура — так и должно быть.

Настройка движения детали в игре на языке Python для детей

Чтобы фигура могла двигаться, перед ее отрисовкой снова проходим по четырем квадратам выбранного тетромино. Смысл движения простой: берем текущий det_choice и прибавляем к координатам каждого из 4 квадратов шаги dx и dy.

Если на этапе проверки ты поставишь, например, dx = 1, фигура будет улетать вправо почти мгновенно и визуально это будет похоже на «рывок». Если заменить на dx = -1, она так же быстро сместится влево. Поэтому дальше нам нужно сделать управление через нажатия клавиш и двигать фигуру не постоянно, а короткими шагами.

Следующий шаг — создать событие, которое срабатывает при нажатии кнопки. Когда игрок нажимает стрелку влево, мы просто меняем delta_x на -1. Для стрелки вправо делаем то же самое, только ставим +1. После проверки движение станет более плавным, потому что delta_x будет изменяться только по событию, а не «само по себе» каждый кадр.

Дальше обязательно добавляем ограничение по границам поля. Логика такая: если после предполагаемого сдвига хотя бы один из четырех квадратов фигуры окажется за пределами рабочей области, то мы запрещаем этот ход — обнуляем delta_x, и смещения не происходит. Благодаря этому тетромино не сможет «выползти» за стенки.

Теперь настраиваем движение вниз по оси Y. Если просто задать dy = 1 и применять его каждый кадр, фигура будет падать слишком быстро. Поэтому падение нужно включать не на каждом обновлении, а с задержкой — например, раз в 30 обновлений (или по таймеру). Тогда при запуске фигура будет опускаться сверху вниз с нормальной скоростью, и игра начнет ощущаться как настоящий тетрис.

Добавление ускорения и границ по оси Y

В этом уроке от онлайн-школы Pixel мы решили рассказать о том, как добавить ускорение падения фигуры, чтобы это еще больше напоминало оригинальный «Тетрис». Чтобы клавишу можно было зажать, требуется запустить get_pressed(). Если нажатая кнопка совпадает с pygame. K_DOWN (кнопка, назначенная на движение вниз), то число обновлений должно быть равно 31.

Как ребенок может сделать игру тетрис на Python?

Если сейчас проверить функцию и нажать стрелку вниз, фигура «улетит» за нижнюю границу консоли. Чтобы этого не происходило, обозначим границы экрана по оси Y. После настройки фигура остановится на нижней границе. Проверить это легко: запускаем консоль и дожидаемся падения фигуры.

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

Чтобы закрасить клетки, необходимо определиться с индексами клеток. Следует записать две переменные X и Y - и уже в этих переменных менять заданные параметры. После чего прописываем условие для выбора случайной детали. Проверьте написанный код через консоль — детали должны падать сверху вниз, как в «Тетрисе».

В итоге становится заметна одна проблема — во время игры выпадают исключительно семь фигур, а новые не появляются. Это стало итогом того, как именно происходит сохранение информации при использовании языка программирования «Питон». Когда менялись данные о местоположении, менялся и список. Чтобы исключить проблему, важно сделать копию фигур из списка и изменить данные местоположения копии, а не оригинальной детали. Именно поэтому потребуются возможности библиотеки copy, о которой мы писали в самом начале.

После этого снова потребуется запуск консоли для проверки. Если все выполнено верно, новые фигуры появляются в количестве более 7 штук. Но возникает новая проблема — они не ставятся друг на друга!

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

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

Добавляем возможность поворота в будущую игру

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

Поворот фигуры на 90 градусов по нажатию стрелки вверх

Чтобы фигуры можно было разворачивать, используем классическую идею поворота на 90° вокруг центра. В качестве центра удобно взять один из квадратов тетромино — в вашем варианте это третий элемент, поэтому центр вращения задаем как det_choice[2].
Дальше привязываем поворот к событию клавиатуры: при нажатии стрелки вверх выставляем флаг rotate = True. Когда флаг активен, проходим по всем четырем блокам фигуры и пересчитываем их координаты относительно центра. После поворота обязательно сбрасываем флаг обратно в False, чтобы фигура не крутилась бесконечно на каждом кадре.

Если все сделано верно, тетромино начнут разворачиваться и аккуратнее заполнять пустоты у «дна», как в оригинальном «Тетрисе».

Очистка заполненных линий

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

Логика такая:

  1. Проверяем поле рядами снизу вверх.
  2. Так проще: заполненные линии чаще всего появляются внизу, и их удобнее сразу «снимать».
  3. Внутри каждого ряда считаем, сколько ячеек занято.
  4. В вашей сетке клетка считается занятой, когда параметр заполнения равен 0. Если встречается хотя бы одна незаполненная клетка, этот ряд точно не полный — можно не тратить время и переходить к следующему.
  5. Если число занятых ячеек равно количеству клеток в ряду, запускаем «сдвиг» поля.
  6. Сначала очищаем верхний ряд (делаем его пустым), затем переносим значения всех рядов сверху вниз, начиная с того ряда, который был заполнен. Так заполненная линия исчезает, а блоки над ней «падают» на одну строку.
Финальная проверка

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

Что дальше: как продолжить обучение в Pixel?

На этом примере хорошо видно, как устроено обучение детей IT в школе программирования Pixel: мы даем понятные шаги, закрепляем их практикой и доводим проект до результата, которым можно гордиться. Больше подобных уроков есть на нашем YouTube-канале, а если нужен системный прогресс, удобнее идти по курсу: с разбором ошибок, проектами и понятной траекторией развития. У нас дети изучают Python, Roblox, Scratch и другие направления в онлайн- и офлайн-формате, в группах или индивидуально.

Заключение

Сделать «Тетрис» на Python — это не просто написать игру «по шаблону», а пройти весь путь разработчика: продумать логику, настроить управление, проверить границы, научиться работать с событиями и состояниями, а затем добавить ключевые механики вроде поворота фигур и очистки линий. Когда ребенок видит, как его код превращается в работающую игру, программирование перестает быть абстракцией и становится понятным инструментом: написал — проверил — исправил — улучшил.

Главное, что остается после такого проекта, — навыки. Ученик учится мыслить алгоритмами, находить ошибки, разбивать задачу на шаги и доводить результат до конца. А дальше можно идти глубже: добавить очки, уровни сложности, экран Game Over, «следующую фигуру» и рекорды — или перейти к новым проектам на Python. В Pixel мы как раз строим обучение так, чтобы ребенок двигался системно: от первых игровых механик к более серьезным задачам и уверенности в кодинге.

FAQ

Можно выбрать любой блок как центр, но важно делать это одинаково для всех фигур. Если центр будет «прыгать», тетромино начнет вести себя непредсказуемо. Третий элемент — удобный якорь: он всегда есть и стабильно лежит в структуре фигуры.
Понравилась статья?

Читайте также:

    Подборка курсов

    Заполните заявку
    на доступ
    кбесплатным
    курсам для детей
    После заполнения формы вы получите доступ в личный кабинет
    Понадобится помощь взрослого*