Ваш спрайт-код в основном уже там. Но, как вы говорите, ему нужна функция update()
, чтобы каким-то образом перемещать спрайты.
Идея использования Sprites в PyGame состоит в том, чтобы добавить их в SpriteGroup , затем используйте групповую функциональность для совместной обработки спрайтов.
Возможно, вы захотите изменить класс Zomb ie так, чтобы он занял начальное место для координат:
class ZombieEnemy(pygame.sprite.Sprite):
def __init__( self, x=0, y=0 ):
pygame.sprite.Sprite.__init__(self)
self.image = pygame.image.load('images/zombie.png')
self.rect = self.image.get_rect()
self.rect.center = ( x, y ) # NOTE: centred on the co-ords
, что позволяет игре чтобы создать Zomb ie в определенной начальной точке (возможно, даже случайной).
Итак, чтобы создать группу спрайтов, сначала вам нужно создать контейнер:
all_zombies = pygame.sprite.Group()
Затем, когда вы создаете нового зомба ie, добавьте его в группу. Скажем, вы хотели начать с 3 случайно расположенных зомби:
for i in range( 3 ):
new_x = random.randrange( 0, WINDOW_WIDTH ) # random x-position
new_y = random.randrange( 0, WINDOW_HEIGHT ) # random y-position
all_zombies.add( Zombie( new_x, new_y ) ) # create, and add to group
Затем в главном l oop, позвоните .update()
и .draw()
в группе спрайтов . Это переместит и раскрасит все спрайты, добавленные в группу. Таким образом, вы можете иметь отдельные группы врагов, пуль, фоновых предметов и т. Д. c. Группы спрайтов позволяют легко рисовать и обнаруживать столкновения между другими группами. Подумайте о том, чтобы столкнуть сотню пуль против тысячи врагов!
while running:
for event in pygame.event.get():
# ... handle events
# Move anything that needs to
all_zombies.update() # call the update() of all zombie sprites
playerX += playerX_change
# Draw everything
screen.blit(BackGround.image, BackGround.rect)
player(playerX,playerY)
all_zombies.draw( screen ) # paint every sprite in the group
pygame.display.flip()
РЕДАКТИРОВАТЬ: добавлен параметр screen
в all_zombies.draw ()
Вероятно, стоит определить вашего игрока как спрайта, и для него группа с одним входом .