为什么我的组列表一次只渲染 1 个精灵?
Why is my group list only rendering 1 sprite at a time?
我最近看了 Tech with Mike 的 space 入侵者视频,我觉得组列表很有趣。我试图用它制作一个粒子列表。它一直有效,直到颗粒落到底部,我在回收它们时遇到了麻烦。它不会渲染所有内容,只会渲染一个立方体。
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
您想遍历 particles
的列表。 for
循环在列表中的每个项目上运行(可迭代)并使您可以访问列表中的当前项目。如果你做 for i in particles:
,i
是列表的一个元素。 i
只是引用列表中当前项目的变量的名称。您可以在此处使用任何您想要的名称(i
、particle
、hugo
、...)。您只需要在循环中使用相同的名称(变量)即可访问该项目。参见 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
我最近看了 Tech with Mike 的 space 入侵者视频,我觉得组列表很有趣。我试图用它制作一个粒子列表。它一直有效,直到颗粒落到底部,我在回收它们时遇到了麻烦。它不会渲染所有内容,只会渲染一个立方体。
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
您想遍历 particles
的列表。 for
循环在列表中的每个项目上运行(可迭代)并使您可以访问列表中的当前项目。如果你做 for i in particles:
,i
是列表的一个元素。 i
只是引用列表中当前项目的变量的名称。您可以在此处使用任何您想要的名称(i
、particle
、hugo
、...)。您只需要在循环中使用相同的名称(变量)即可访问该项目。参见 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