Статья Автор: Омарбек Нұр-Мұхаммед

Примеры 1

Пример создания игровых объектов

1. Импорт модуля и создание структуры программы:

import sys
import pygame
pygame.init()

SIZE = WIDTH, HEIGHT = 800, 600
screen = pygame.display.set_mode(SIZE)
clock = pygame.time.Clock()

while 1:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    screen.fill((0, 0, 0))
    pygame.display.update()

    clock.tick(30)

 

2. Описание класса для создания игрового объекта:

class Letter(pygame.sprite.Sprite):
    def __init__(self, x, y, path):
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load(path)
        self.image = pygame.transform.scale(self.image, (64, 64))
        self.rect = self.image.get_rect(center=(x, y))
  • На основе класса Sprite создаётся класс Letter
  • В классе определяются два обязательных свойства:
    • image - изображение (графическое представление спрайта)
    • rect - прямоугольник (положение спрайта)
  • Свойство path используется для указания пути до изображения

 

3. Создание экземпляров класса:

l1 = Letter(272, 300, "images/assets_letterTiles/PNG/Blue/letter_A.png")
l2 = Letter(400, 300, "images/assets_letterTiles/PNG/Blue/letter_B.png")
l3 = Letter(528, 300, "images/assets_letterTiles/PNG/Blue/letter_C.png")

В качестве примера были выбраны изображения из домашнего задания 10.3.1.

 

4. Отображение спрайтов:

screen.fill((0, 0, 0))

screen.blit(l1.image, l1.rect)
screen.blit(l2.image, l2.rect)
screen.blit(l3.image, l3.rect)

pygame.display.update()


5. Анимация спрайтов:

В собранном классе можно определить метод для анимация спрайтов. Например, метод для перемещения объектов по вертикали.

class Letter(pygame.sprite.Sprite):
    ...

    def update(self):
        if self.rect.y < HEIGHT:
            self.rect.y += 5
        else:
            self.rect.y = -64

 

Вызывать метод нужно в главном цикле:

while 1:
    ...

    l1.update()
    l2.update()
    l3.update()

    ...

    clock.tick(30)

5. Анимация спрайтов (продолжение):

Каждый объект перемещается с одинаковой скоростью, поэтому можно добавить дополнительно свойство speed (скорость перемещения).

class Letter(pygame.sprite.Sprite):
    def __init__(self, x, y, speed, path):  # *
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.image.load(path)
        self.image = pygame.transform.scale(self.image, (64, 64))
        self.rect = self.image.get_rect(center=(x, y))
        self.speed = speed  # *

    def update(self):
        if self.rect.y < HEIGHT:
            self.rect.y += self.speed  # *
        else:
            self.rect.y = -64

 

Теперь при создании экземпляра нужно указывать три параметра:

from random import randint

...

l1 = Letter(randint(0, WIDTH - 64), 32, randint(1, 5), "images/assets_letterTiles/PNG/Blue/letter_A.png")
l2 = Letter(randint(0, WIDTH - 64), 32, randint(1, 5), "images/assets_letterTiles/PNG/Blue/letter_B.png")
l3 = Letter(randint(0, WIDTH - 64), 32, randint(1, 5), "images/assets_letterTiles/PNG/Blue/letter_C.png")

...

В этом примере положение спрайта по оси X и скорость перемещения по оси Y задаются случайным образом.

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