为大金刚风格游戏制作和使用 pygame 精灵

2024-06-18

对于我的项目,我正在 pygame 中重新创建大金刚,我已经到了需要为梯子、平台和角色提供精灵的阶段,但我不确定如何制作精灵,然后在 pygame 中使用它们。


这是一个非常基本的使用示例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.Sprites 绘制对象 - 你必须确保pygame.sprite.Sprites 具有所需的属性。看pygame.sprite.Group.draw() https://www.pygame.org/docs/ref/sprite.html#pygame.sprite.Group.draw:

将包含的 Sprite 绘制到 Surface 参数。这使用了Sprite.image源表面的属性,以及Sprite.rect. [...]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为大金刚风格游戏制作和使用 pygame 精灵 的相关文章

随机推荐