微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么我的群组列表一次只渲染1个精灵?

我最近观看了Tech和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)
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

解决方法

您要遍历particles的列表。 for循环在列表中的每个项目(可迭代)上运行,使您可以访问列表中的当前项目。如果您执行for i in particles:,则i是列表的元素。 i只是引用列表中当前项目的变量的名称。您可以在此位置使用任何想要的名称(iparticlehugo,...)。您只需要在循环中使用相同的名称(变量)来访问该项目。参见for statements

任何一个

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。