这是一个非常基本的使用示例Sprite在 pygame 中(另见Sprite https://github.com/Rabbid76/PyGameExamplesAndAnswers/blob/master/documentation/pygame/pygame_sprite_and_sprite_mask.md#sprite):
repl.it/@Rabbid76/PyGame-Sprite
import pygame
pygame.init()
window = pygame.display.set_mode((400, 400))
clock = pygame.time.Clock()
class Player(pygame.sprite.Sprite):
def __init__(self, center_pos, image):
super().__init__()
self.image = image
self.rect = self.image.get_rect(center = center_pos)
def update(self, surf):
keys = pygame.key.get_pressed()
self.rect.x += (keys[pygame.K_d]-keys[pygame.K_a]) * 5
self.rect.y += (keys[pygame.K_s]-keys[pygame.K_w]) * 5
self.rect.clamp_ip(surf.get_rect())
player_surf = pygame.image.load('Bird64.png').convert_alpha()
player = Player(window.get_rect().center, player_surf)
all_sprites = pygame.sprite.Group([player])
run = True
while run:
clock.tick(60)
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
all_sprites.update(window)
window.fill(0)
all_sprites.draw(window)
pygame.display.flip()
pygame.quit()
exit()
图像可以加载到pygame.Surface https://www.pygame.org/docs/ref/surface.html对象与pygame.image.load https://www.pygame.org/docs/ref/image.html#pygame.image.load. See 如何在pygame中绘制图像和精灵? https://stackoverflow.com/questions/8873219/how-to-draw-images-and-sprites-in-pygame/64630591#64630591.
Pygame 使用pygame.sprite.Sprite https://www.pygame.org/docs/ref/sprite.html#pygame.sprite.Spritel物体和pygame.sprite.Group http://www.pygame.org/docs/ref/sprite.html#pygame.sprite.Group要管理的对象Sprites. pygame.sprite.Group.draw() https://www.pygame.org/docs/ref/sprite.html#pygame.sprite.Group.draw and pygame.sprite.Group.update() https://www.pygame.org/docs/ref/sprite.html#pygame.sprite.Group.update是由以下提供的方法pygame.sprite.Group
.
前者委托给update
所含方法pygame.sprite.Sprites https://www.pygame.org/docs/ref/sprite.html#pygame.sprite.Sprite- 你必须实施该方法。看pygame.sprite.Group.update() https://www.pygame.org/docs/ref/sprite.html#pygame.sprite.Group.update:
调用update()
组中所有精灵的方法[...]
后者使用的是image
and rect
所包含的属性pygame.sprite.Sprite
s 绘制对象 - 你必须确保pygame.sprite.Sprite
s 具有所需的属性。看pygame.sprite.Group.draw() https://www.pygame.org/docs/ref/sprite.html#pygame.sprite.Group.draw:
将包含的 Sprite 绘制到 Surface 参数。这使用了Sprite.image
源表面的属性,以及Sprite.rect
. [...]