Спрайты - это просто объекты в игре, которые могут взаимодействовать с другими спрайтами или чем-то еще. Они могут включать персонажи, здания или другие объекты игры.
Причина, по которой есть подкласс для спрайтов, более удобна. Когда объект наследуется от класса sprite.Sprite
, он может быть добавлен в группу спрайтов.
Пример:
import pygame
class car(sprite.Sprite):
def __init__(self):
sprite.Sprite.__init__() # necessary to initialize Sprite class
self.image = image # insert image
self.rect = self.image.get_rect() #define rect
self.rect.x = 0 # set up sprite location
self.rect.y = 0 # set up sprite location
def update(self):
pass # put code in here
cars = pygame.sprite.Group()# define a group
pygame.sprite.Group.add(car())# add an instance of car to group
Я не могу добавить спрайты спрайт группы, если они не наследуют от класса спрайтов. Это полезно, потому что теперь я могу делать вещи, как обновление всех спрайтов в группе и сделать их все с одной функцией:
cars.update() #calls the update function on all sprites in group
cars.draw(surface) #draws all sprites in the group
Я могу также использовать группы для обнаружения столкновений:
# check to see if sprite collides with any sprite in the car group
collided = pygame.sprite.Sprite.spritecollide(sprite, cars, False)
Примечание: В приведенном выше коде pygame.sprite.Sprite.spritecollide
возвращает список.
В заключение, класс спрайтов полезен для обработки большого количества спрайтов, которые в противном случае занимали бы больше кода для управления. Класс Sprite
предоставляет универсальный набор переменных, которые могут использоваться для определения спрайтов.
Вы найдете исходный код класса 'Sprite' в файле' 'sprite.py' '(https://bitbucket.org/pygame/pygame/src/8bdcd449963fd969c2609dea7134f52d1944ad0f/lib/sprite.py?tat = по умолчанию & FileViewer = файл вида по умолчанию). – sloth