Тетрис на Python с использованием Pygame

KEDU
Автор статьи

Содержание

Дата публикации 27.12.2024 Обновлено 03.01.2025
Тетрис на Python с использованием Pygame
Источник фото: Freepik

Тетрис – это одна из самых популярных видеоигр всех времен. Эта простая, но увлекательная игра была создана Алексеем Пажитновым в СССР в 1984 году и быстро завоевала популярность во всем мире. Игрок управляет падающими фигурами различной формы, пытаясь заполнить горизонтальные линии, чтобы они исчезли и освободить место для новых фигур. Цель игры заключается в том, чтобы как можно дольше поддерживать порядок на игровом поле, избегая заполнения верхней части экрана.

Для разработки Тетриса мы будем использовать язык программирования Python, а также библиотеку Pygame. Python – это высокоуровневый язык программирования, который отличается простотой синтаксиса и легкостью освоения. Pygame – это мощная библиотека для создания видеоигр, которая предоставляет множество инструментов для работы с графикой, звуком и управлением вводом пользователя.

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

Подробнее о Python

Python — это высокоуровневый язык программирования общего назначения, созданный Гвидо ван Россумом и впервые выпущенный в 1991 году. Название «Python» происходит не от названия змеи, а от британского комедийного шоу Monty Python's Flying Circus, поклонником которого был автор языка.

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

Основные черты 

Легкость освоения Python обладает простым и интуитивно понятным синтаксисом, что делает его доступным даже для новичков в программировании. Код выглядит почти как обычный текст, что облегчает его понимание и чтение.
Интерпретируемый язык Является интерпретируемым языком, что означает, что код выполняется построчно, без необходимости предварительной компиляции. Это даёт возможность быстро тестировать и изменять программу.
Мультиплатформенность Программы могут работать на различных операционных системах, таких как Windows, macOS и Linux, благодаря наличию стандартного интерпретатора и библиотеки.
Объектно-ориентированное программирование Поддерживает концепцию классов и объектов, позволяя создавать сложные программы с использованием ООП.
Богатая стандартная библиотека Поставляется с обширной библиотекой модулей, которая охватывает широкий спектр задач, начиная от работы с файлами и заканчивая сетевым взаимодействием.
Активное сообщество Имеет большое и активное сообщество разработчиков, которое постоянно развивает и поддерживает язык, создавая новые пакеты и предоставляя учебные материалы.

История создания

Python был задуман Гвидо ван Россумом в конце 80-х годов прошлого века. Первую версию языка он выпустил в 1991 году. Изначально Python создавался как замена языку программирования ABC, который использовался в Нидерландах. Целью было создание языка, который был бы одновременно простым в освоении и мощным для решения сложных задач.

Философия 

Философию Python можно описать как стремление к красоте, ясности и простоте. Это отражено в документе PEP 20 ("The Zen of Python"), который описывает основные принципы языка. Среди них такие важные идеи, как:

  • Красота важнее уродства.
  • Ясность предпочтительнее неясности.
  • Простота лучше сложности.
  • Сложность лучше запутанности.
  • Важна читабельность кода.

Эти принципы подчёркивают значимость эстетики и логичности кода, делая Python привлекательным для многих разработчиков.

Применение 

  • Веб-разработка: фреймворки вроде Django и Flask позволяют быстро создавать веб-приложения и сайты.
  • Анализ данных и наука о данных: библиотеки Pandas, NumPy и Matplotlib обеспечивают мощный инструментарий для анализа и визуализации данных.
  • Машинное обучение и искусственный интеллект: Scikit-learn, TensorFlow и PyTorch являются популярными инструментами для создания моделей машинного обучения и нейронных сетей.
  • Автоматизация и скриптинг: Python отлично подходит для автоматизации рутинных задач, будь то управление файлами, парсинг веб-страниц или взаимодействие с API.
  • Разработка игр: с помощью библиотек вроде Pygame можно создавать простые игры и интерактивные приложения.
  • Системное администрирование: Python часто используется для написания скриптов, автоматизирующих задачи системного администрирования и управления серверами.

Установка Pygame

Прежде всего нам необходимо установить библиотеку Pygame. Для этого воспользуемся менеджером пакетов pip, который является стандартным инструментом для установки сторонних модулей в Python.

Откройте командную строку или терминал и выполните следующую команду:

pip install pygame

Эта команда установит последнюю доступную версию Pygame. После успешной установки вы можете приступить к написанию кода вашей игры.

Создание основного окна игры

Первым шагом после установки Pygame будет создание и настройка основного окна нашей игры. Для этого нужно импортировать модуль pygame и инициализировать его, а затем создать окно нужного размера.

Вот пример кода для инициализации Pygame и создания окна: import pygame pygame.init() screen = pygame.display.set_mode((300, 600)) # Создаем окно размером 300x600 пикселей

Здесь мы создаем окно размером 300 на 600 пикселей. Вы можете изменить эти значения в зависимости от ваших предпочтений.

Основные элементы игры

Теперь давайте определим основные элементы нашей игры – игровые фигуры, известные как тетромино. Каждая фигура состоит из четырех блоков, соединенных между собой определенным образом. Всего существует семь различных типов тетромино: I, J, L, O, S, T и Z.

Мы можем определить каждую фигуру как список координат относительно её центра. Например, вот определение фигуры типа "I": I = [[0, 0], [0, 1], [0, 2], [0, 3]]

Также нам нужно задать цвет каждой фигуры. Вот пример определения цветов для всех семи типов тетромино: colors = { 'I': (255, 128, 0), # оранжевый 'J': (0, 0, 255), # синий 'L': (255, 165, 0), # золотистый 'O': (255, 255, 0), # желтый 'S': (0, 255, 0), # зеленый 'T': (160, 32, 240), # фиолетовый 'Z': (255, 0, 0) # красный }

Логика игры

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

Обработка пользовательского ввода

Игроки управляют фигурами с помощью клавиш стрелок на клавиатуре. Мы должны обработать нажатия этих клавиш и соответствующим образом перемещать или поворачивать текущую фигуру.

Вот пример кода для обработки событий: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_LEFT: move_figure(-1) elif event.key == pygame.K_RIGHT: move_figure(1) elif event.key == pygame.K_UP: rotate_figure() elif event.key == pygame.K_DOWN: drop_figure()

Функции move_figure, rotate_figure и drop_figure будут отвечать за перемещение, поворот и ускоренное падение текущей фигуры соответственно.

Логика падения фигур

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

def update_game(): global current_figure, next_figure # Проверяем, может ли фигура опуститься еще ниже if can_move(current_figure, 0, 1): move_figure(0, 1) else: # Если фигура больше не может опускаться, фиксируем её на месте fix_figure(current_figure) # 

Проверяем, есть ли заполненные строки clear_lines() # Генерируем новую фигуру current_figure = next_figure next_figure = generate_random_figure() # Если новая фигура не может быть помещена на экран, игра заканчивается if not can_move(current_figure, 0, 0): game_over()

Логика вращения и проверки столкновений

Чтобы повернуть фигуру, мы просто изменяем координаты её блоков. Для проверки столкновений используем функцию can_move, которая проверяет, не выходит ли фигура за пределы игрового поля и не пересекается ли с другими фигурами.

def rotate_figure(): rotated_figure = [] for block in current_figure: x, y = block new_x = -y new_y = x rotated_figure.append([new_x + center_x, new_y + center_y]) if can_move(rotated_figure, 0, 0): current_figure = rotated_figure

Рендеринг и обновление экрана

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

def draw_screen(): screen.fill((0, 0, 0)) # Очищаем экран черным цветом # Рисуем все зафиксированные блоки for i in range(len(fixed_blocks)): for j in range(len(fixed_blocks[i])): if fixed_blocks[i][j]: pygame.draw.rect(screen, colors[fixed_blocks[i][j]], (i * BLOCK_SIZE, j * BLOCK_SIZE, BLOCK_SIZE, BLOCK_SIZE)) # Рисуем текущую фигуру for block in current_figure: x, y = block pygame.draw.rect(screen, colors[current_figure_type], (x * BLOCK_SIZE, y * BLOCK_SIZE, BLOCK_SIZE, BLOCK_SIZE)) pygame.display.flip() # Обновляем экран

Завершение игры

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

def game_over(): font = pygame.font.Font(None, 36) text = font.render("Game Over", True, (255, 255, 255)) screen.blit(text, (100, 250)) pygame.display.flip() time.sleep(3) main_menu()

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

Если вам понравилось создавать игры, попробуйте добавить новые функции в ваш Тетрис. Например, вы можете добавить уровни сложности, систему подсчета очков, сохранение рекордов или даже многопользовательский режим. Возможности ограничены только вашим воображением!

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

Онлайн-ресурсы для самостоятельного изучения

Coursera

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

Stepik

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

Udemy

Udemy — глобальная платформа, предлагающая тысячи курсов по самым разным темам, включая программирование. Курсы на Udemy создаются независимыми инструкторами и могут сильно различаться по качеству и глубине охвата материала.

GeekBrains

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

Codecademy

Codecademy — интерактивная платформа для изучения программирования, которая фокусируется на практической стороне дела. Курсы проходят в форме пошаговых заданий, выполняемых непосредственно в браузере.

Вопрос — ответ
Какие основные шаги при разработке игры Тетрис на Python с использованием Pygame?

Как установить библиотеку Pygame для разработки игры на Python?

Что такое тетромино и как их описать в коде игры Тетрис?

Как обрабатываются события пользовательского ввода в игре Тетрис на Python с использованием Pygame?
Комментарии
Всего
2
2025-01-03T00:00:00+05:00
Код не работает на Linux
2025-01-03T00:00:00+05:00
у вас есть какие-то советы по оптимизации производительности игры?
Читайте также
Все статьи