Блог онлайн школы Пиксель

Бесплатный гайд программирования для детей: как сделать тетрис на Python

Кто из нас не играл в тетрис? Рискнем предположить: таких людей мало. Во всяком случае, они не среди тех, кто читает эту статью.

История тетриса не менее любопытна, чем сама игра. Вот несколько занимательных фактов:

  • Тетрис появился в 1984 году. В основу легла головоломка «Пентамино», популярная в СССР еще с 60-х.
  • Автор игры — советский изобретатель Алексей Пажитнов. Это не первое творение гейм-дизайнера — за пару лет до тетриса Алексей сконструировал Muddled Casino, головоломку для микроЭВМ «Электроника-60».
  • Название происходит от слов «тетрамино» и «теннис». Тетрамино — геометрические фигуры, состоящие из 4-х квадратов, соединённых сторонами.
  • Сегодня в тетрис играют на 50-ти языках и платформах: плеерах, смартфонах и даже калькуляторе.
  • Тетрис стал первой игрой, вывезенной из-за железного занавеса. В награду Пажитнов получил от государства компьютер и квартиру.

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

Говорят, что программистом человек становится только после того, как напишет собственный тетрис. Звучит как вызов, но уверяем, что конструирование этой игры — не так сложно, как кажется. Разработка тетриса поможет кодеру-новичку усовершенствовать умения и приобрести новые знания.

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

Приступим к проектированию тетриса на Питоне

В первую очередь важно установить фреймворк Pygame в среду программирования Python — иначе не выйдет начать разработку. Воплотить это легко: введем pip install pygame.

Затем нужно произвести импорт необходимых библиотек, которые помогут сконструировать игру: pygame, random, copy.

Обозначаем 2 параметра сетки: I_max и J_max. Число ячеек сетки равняется количеству точек -1. Для проверки пересчитаем ячейки и точки:
Задаем число точек I_max и J_max — 11 и 21: получаем 11 и 20 ячеек.

Продолжаем программирование на Python для школьников: прописываем переменные

Время задать 2 переменные с разрешением экрана 300 на 600. Следом нужно внести в экран переменные и сделать класс Clock(). Он пригодится для определения частоты появления на дисплее кадров.

Подсчитаем шаг по x и y: ширина и высота ячейки. Далее делим на I_max -1 J_max -1: область разделим на количество ячеек, а это меньше числа точек на 1. Задаем переменную для частоты кадров.
Применение циклов и списков
Формируем список для хранения параметров сетки. Прибавляем по списку на каждом элементе как по ширине, так и по высоте. Внесем туда 1, сущности прямоугольников (rect) и их цвета.

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

Время выполнить бесконечный цикл, наполнить дисплей с целью обновления и отрисовать сетку. Третья составляющая списка — 2: цвет. Второй — 1: сущность спроектированного прямоугольника. Выставим тип заполнения — 0.

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

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

Далее следует вывести в консоль, чем наполняется список. Должны получиться 7 списков, в них — по 4 прямоугольника.

Установим рандомный отбор фигуры и ее отображение. Кадры проводятся циклами по 4-м прямоугольникам детали.

Задаем перемещения в ходе программирования на Python для детей

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

Если прописать 1*dx, деталь уйдет направо. При смене на -1 — налево. Замещаем параметры с 0 на 1 и -1 при клике стрелок вправо и влево. Сделаем event соприкосновения с клавишей: при зажимании стрелки влево надлежит поменять переменную delta_x на -1. Так же и для правой стрелки, но +1.

Ограничим возможность выхода фигур за границы: если это происходит, delta_x зануляется, и движения не случается.

Аналогично настроим движение по y. Замедленный ход включается через 30 обновлений. Зафиксируем цифру обновлений в переменной.

Проработаем и такой вариант, при котором игрок хочет ускорить движение и направить деталь вниз. Понадобится функция get_pressed(). Число обновлений — 31.

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

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

Вносим исправления в тетрис на Python

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

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

Внедряем последние доработки

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

Поворот можно воплотить по формуле поворота на 90 градусов касательно центра в (0,0). Прописываем как центр 2 индекс det_choice[2].

При надавливании на стрелку, указывающую наверх, переменная rotate должна равняться True. Сместим компоненты квадратика по центру вращения, затем перепишем rotate на False.

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

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

Игра тетрис на Python создана: что потом

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

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

  • Подросткам 10–14 лет приглянется курс по программированию для детей на языке Python. Ребенок постигнет основы разработки и познакомится с IT-терминами. Школьник сделает при помощи кода увлекательные проекты вроде квеста и чат-бота, а еще захватывающую игру.
  • Поклонникам вселенной Minecraft подойдет курс по кодингу на Пайтоне в Майнкрафте. Юный программист использует знания и усилит собственные позиции в игре, спроектировав внутриигровые программы и героя с искусственным интеллектом.

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

Какой бы способ овладения Пайтоном ни выбрал школьник, результат будет один: прокачка личностных качеств и приобретение полезных умений, которые понадобятся при дальнейшем продвижении в области IT.
Python для детей Бесплатные видеоуроки