<p>如果某个条件是<code>True</code>(在下面的例子中是<code>if random.randrange(100) < 2:</code>),您可以只向组添加新的<code>Ball</code>实例。如果应该有一个最大数量的球,添加<code>and len(balls) < max_balls:</code>。在</p>
<p>另外,别忘了当精灵离开屏幕时<a href="https://www.pygame.org/docs/ref/sprite.html#pygame.sprite.Sprite.kill" rel="nofollow noreferrer">^{<cd5>}</a>。在</p>
<pre><code>import random
import pygame
from pygame.sprite import Sprite
class Ball(Sprite):
"""A class to represent a single ball."""
def __init__(self, bg_settings, screen):
"""Initalize the ball and set its starting position."""
super(Ball, self).__init__()
self.screen = screen
self.bg_settings = bg_settings
self.image = pygame.Surface((30, 30))
self.image.fill((100, 200, 0))
self.rect = self.image.get_rect()
# Start each new ball.
self.rect.x = random.randint(-10, self.bg_settings.screen_width)
self.rect.y = random.randint(-100, -40)
# Store the ball's exact position.
self.y = float(self.rect.y)
def update(self):
"""Move the ball down."""
self.y += 1
self.rect.y = self.y
if self.rect.top > self.bg_settings.screen_height:
self.kill()
class Settings:
screen_width = 640
screen_height = 480
bg_color = pygame.Color('gray12')
def run_game():
pygame.init()
clock = pygame.time.Clock()
bg_settings = Settings()
screen = pygame.display.set_mode(
(bg_settings.screen_width, bg_settings.screen_height))
balls = pygame.sprite.Group()
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
return
balls.update()
if random.randrange(100) < 2:
balls.add(Ball(bg_settings, screen))
screen.fill(bg_settings.bg_color)
balls.draw(screen)
pygame.display.flip()
clock.tick(60)
run_game()
</code></pre>