在屏幕中生成好后每个精灵后,每个精灵各自运行各自的互不干扰,然后每个精灵运行的程序都是第一个写好的
不知道你这个问题是否已经解决, 如果还没有解决的话:要生成多个相同的精灵并让它们独立运行,我们可以使用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类中添加更多的属性和方法。