为什么我的组列表一次仅渲染 1 个精灵?

我最近观看了 Tech with Mike 的太空入侵者视频,我认为组列表很有趣。我尝试用它制作一个粒子列表。它一直有效,直到颗粒落到底部,而我在回收它们时遇到了麻烦。它不会渲染所有内容,仅渲染一个立方体。


import pygame

import random

pygame.init()

win_height=600

win_width=800

win=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


慕田峪9158850
浏览 78回答 1
1回答

LEATH

您想要遍历 的列表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
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python