Найти в Дзене
MakeBetter[Code] Blog

[🐍] Змейка на Pygame | Python на примере

Оглавление

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

Мы рассмотрим основы создания 2D-игр в PyGame, а затем погрузимся в код, необходимый для создания простой игры в змейку. К концу этого урока у вас будет базовое понимание того, как использовать PyGame для создания собственных игр.

Что такое PyGame?

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

Pygame использует библиотеку Simple DirectMedia Layer (SDL), которая позволяет разрабатывать компьютерные игры в реальном времени без низкоуровневой механики языка программирования C и его производных.

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

Как установить Pygame?

Первым шагом будет проверка того, установлены ли уже Python и PIP. Если нет, их следует установить в первую очередь.

Затем можно установить Pygame, открыв командную строку и набрав

pip install pygame

Змейка

Инициализация Pygame

-2
  1. Код выше импортирует библиотеку Pygame и встроенный модуль random.
  2. С помощью pygame.init() инициализируется библиотека Pygame.
  3. После этого определяются константы WINDOW_WIDTH (Ширина окна) и WINDOW_HEIGHT (Высота окна)
  4. Создается окно дисплея Pygame с этими размерами с помощью pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)).
  5. Устанавливается заголовок окна на "Змейка" с помощью pygame.display.set_caption("Змейка").

Цвета и константы

-3
  1. Здесь мы определяем цветовые константы в значениях RGB: BLACK (Черный), WHITE (Белый) и GREEN (Зеленый).
  2. Устанавливаем константу CELL_SIZE равной 20, которая будет использоваться позже для определения размера отдельных ячеек решетки.
  3. Константы GRID_WIDTH и GRID_HEIGHT задаются на основе установленных ранее констант WINDOW_WIDTH и WINDOW_HEIGHT, деленных на CELL_SIZE. Это определяет количество ячеек, которые поместятся по горизонтали и вертикали на игровой сетке.
  4. Наконец, константа FPS устанавливается равной 10, что определяет скорость игры, ограничивая количество кадров в секунду.

Класс Змейки

-4

Пройдемся по коду метод за методом:

  1. move: Метод под названием "move", который перемещает змею, основываясь на ее текущем направлении. Направление змеи хранится в переменной "self.direction". Переменные dx и dy устанавливаются в зависимости от направления движения змеи и используются для обновления положения сегментов тела змеи. Новая позиция добавляется к передней части тела змеи, а последний сегмент удаляется для имитации движения.
  2. check_for_collision: Этот фрагмент кода проверяет столкновение между головой змеи и ее телом. Сначала он присваивает голову переменной, а затем проверяет, присутствует ли эта голова в остальной части тела. Если да, то функция возвращает True, указывая на то, что столкновение произошло. В противном случае она возвращает False.
  3. grow: Этот метод добавляет новый элемент в тело змеи, делая его на одну единицу длиннее за счет дублирования последнего элемента в списке body.
  4. draw: Метод под названием "draw", который принимает параметр "surface" и рисует на нем змею. Для этого нужно пройтись по каждой ячейке тела змеи, вычислить ее координаты x и y и с помощью Pygame нарисовать на поверхности зеленый прямоугольник по этим координатам с размером CELL_SIZE.

Класс еды

-5
  1. generate_position(self): Это вспомогательный метод, который генерирует случайную позицию на двумерной сетке. Он использует модуль random для генерации случайных целых чисел в пределах сетки и возвращает их в виде кортежа.
  2. draw(self, surface): Этот метод рисует квадрат на заданной поверхности Pygame в текущей позиции пищевого объекта. Он вычисляет пиксельные координаты позиции, используя атрибут self.position и константу CELL_SIZE, а затем использует функцию pygame.draw.rect() для рисования прямоугольника на поверхности.

Основной игровой цикл

-6
  • pygame.event.get(): Функция pygame.event.get() возвращает список всех событий, произошедших с момента ее последнего вызова. Цикл for итерирует этот список событий по одному, позволяя программе реагировать на каждое событие по мере необходимости.
  • pygame.time.Clock(): В программе Pygame цикл игры выполняется непрерывно, обновляя состояние игры и отрисовывая графику. Важно, однако, ограничивать частоту кадров программы, чтобы она не работала слишком быстро или слишком медленно. Объект Clock помогает достичь этого, контролируя количество повторений цикла в секунду. Например, метод clock.tick(60) можно вызывать один раз за итерацию цикла, чтобы ограничить частоту кадров до 60 кадров в секунду. Метод tick() возвращает время, прошедшее с момента последнего вызова, которое можно использовать для расчета частоты кадров в игре и обеспечения того, чтобы она оставалась в желаемом диапазоне.

Результат

Начало игры
Начало игры
Игра в процессе
Игра в процессе

🎉✨ Поздравляю с завершением чтения статьи

Если Вам понравилось, можете подписаться, оставить комментарий и поставить лайк.

Также, можете взглянуть на некоторые из моих других публикаций, чтобы найти еще больше отличного контента 🔥:

[🍀] Тестирование на Python: Обзор Популярных Методологий
MB Magazine14 апреля 2023
[🍃] Отладка и Логирование в Python | Ключевые знания для начинающих
MB Magazine13 апреля 2023
[🍃] f-строки в Python | Ключевые знания для начинающих
MB Magazine9 апреля 2023

Наука
7 млн интересуются