pygame怎么生成多个相同精灵(语言-python)

在屏幕中生成好后每个精灵后,每个精灵各自运行各自的互不干扰,然后每个精灵运行的程序都是第一个写好的

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7467850
  • 这篇博客也不错, 你可以看下【Pygame小游戏】Python原来还能这么学:还算能玩儿的飞机射击类游戏~(不好玩儿直到写出你满意的)
  • 您还可以看一下 程序员学院老师的Python专项训练 巩固语法+数据分析+商城开发课程中的 Pygame开发实战之搭建主框架小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    要生成多个相同的精灵并让它们独立运行,我们可以使用pygame.sprite.Group()来管理精灵,创建多个对象,并将它们添加到Group中,然后在主循环中遍历Group,调用每个精灵的update()方法来更新它们的状态并绘制。

    下面是一个生成10个相同的精灵的示例代码:

    import pygame
    import random
    
    # 定义精灵类
    class MySprite(pygame.sprite.Sprite):
        def __init__(self):
            super().__init__()
            self.image = pygame.Surface((50, 50))
            self.image.fill(pygame.Color('red'))
            self.rect = self.image.get_rect()
            self.rect.x = random.randint(0, 600)
            self.rect.y = random.randint(0, 400)
    
        def update(self):
            self.rect.x += random.randint(-5, 5)
            self.rect.y += random.randint(-5, 5)
            # 确保精灵不会移动出屏幕外
            if self.rect.left < 0:
                self.rect.left = 0
            elif self.rect.right > 640:
                self.rect.right = 640
            if self.rect.top < 0:
                self.rect.top = 0
            elif self.rect.bottom > 480:
                self.rect.bottom = 480
    
    # 初始化pygame
    pygame.init()
    
    # 设置窗口大小
    size = (640, 480)
    
    # 创建窗口
    screen = pygame.display.set_mode(size)
    
    # 创建精灵组
    sprites_group = pygame.sprite.Group()
    
    # 创建10个精灵并添加到组中
    for i in range(10):
        sprite = MySprite()
        sprites_group.add(sprite)
    
    # 游戏主循环
    running = True
    while running:
        # 处理事件
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                running = False
    
        # 更新并绘制精灵
        screen.fill(pygame.Color('white'))
        sprites_group.update()
        sprites_group.draw(screen)
    
        # 刷新屏幕
        pygame.display.flip()
    
    # 退出程序
    pygame.quit()
    

    在上面的代码中,我们先定义了一个MySprite类来表示每个精灵,该类继承自pygame.sprite.Sprite类。在MySprite的构造函数中,我们创建一个50*50的Surface对象作为精灵的图像,使用pygame.Color('red')来填充颜色,图像的矩形区域初始化为随机位置。update()方法用来更新精灵的状态,每次调用时,精灵会随机移动一定的距离,并且确保不会移动出屏幕外。

    在主程序中,我们首先创建一个pygame.sprite.Group()对象来管理精灵。然后使用一个循环来创建10个MySprite对象,并添加到Group中。在主循环中,我们处理事件并更新并绘制精灵。sprites_group.update()调用每个精灵的update()方法,sprites_group.draw(screen)将所有精灵绘制到屏幕上。

    需要注意的是,每个精灵都是相同的,因此它们的update()方法是一样的。如果你想让每个精灵的行为不同,可以在MySprite类中添加更多的属性和方法。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^