我最近观看了 Tech with Mike 的太空入侵者视频,我认为组列表很有趣。我尝试用它制作一个粒子列表。它一直有效,直到颗粒落到底部,而我在回收它们时遇到了麻烦。它不会渲染所有内容,仅渲染一个立方体。import pygameimport randompygame.init()win_height=600win_width=800win=pygame.display.set_mode((win_width,win_height))pygame.display.set_caption("List practice")white=(255,255,255)black=(0,0,0)clock=pygame.time.Clock()class particle_class(pygame.sprite.Sprite): def __init__(self): pygame.sprite.Sprite.__init__(self) self.image=pygame.Surface((25,25)) self.image.fill(white) self.rect=self.image.get_rect() self.speed=0 def update(self): self.rect.y+=self.speed particles=pygame.sprite.Group()for i in range(100): particle=particle_class() particle.speed=random.randrange(5,11) particle.rect.y=0 particle.rect.x=random.randrange(0,win_width+1) particles.add(particle)while True: clock.tick(60) for event in pygame.event.get(): if event.type==pygame.QUIT: pygame.quit() win.fill(black) particles.update() particles.draw(win) pygame.display.update() for i in particles: if particle.rect.y>win_height: particle.rect.y=0
1 回答
LEATH
TA贡献1936条经验 获得超6个赞
您想要遍历 的列表particles。该for循环对列表中的每个项目(可迭代)运行,并允许您访问列表中的当前项目。如果这样做for i in particles:,i是列表的一个元素。i只是引用列表中当前项目的变量名称。您可以在此位置使用任何您想要的名称(i、particle、hugo、 ...)。您只需在循环中使用相同的名称(变量)即可访问该项目。参见for声明。
任何一个
for i in particles:
if i.rect.y > win_height:
i.rect.y = 0
或者
for particle in particles:
if particle.rect.y > win_height:
particle.rect.y = 0
添加回答
举报
0/150
提交
取消