Una lista de objetos
Parte de la sección Sprites e imágenes del Journey de Pygame de Coddy. Lección 13 de 36.
Dos estrellas con nombre no forman un cielo. Cuarenta necesitan una lista: crea los objetos en un bucle y añade cada uno.
stars = []
for i in range(40):
x = random.randint(0, 639)
y = random.randint(0, 479)
speed = random.randint(1, 3)
stars.append(Star(x, y, speed))Después, un bucle las actualiza a todas y otro las dibuja a todas:
for star in stars:
star.update()Dentro de for, star es cada objeto por turno, así que star.update() mueve esa estrella a su propia velocidad. Añadir cien estrellas más cambia un solo número; el código de actualización y dibujo sigue igual.
Crea la lista una vez, antes del bucle del juego. Una lista creada dentro del bucle es una nueva lista de estrellas nuevas en cada fotograma, todas de vuelta en sus posiciones iniciales, así que nunca se mueve nada.
Desafío
Intermedio- Agrega
import randomal principio. - Antes del bucle, crea
stars: una lista de 40 objetos Star, cada uno con un valor x aleatorio de 0 a 639, un valor y aleatorio de 0 a 479 y una velocidad aleatoria de 1 a 3. - En el bucle, actualiza cada estrella de
starsy dibuja cada estrella después del relleno. Eliminaslowyfast.
Pruébalo tú mismo
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Falling Stars")
clock = pygame.time.Clock()
class Star:
def __init__(self, x, y, speed):
self.x = x
self.y = y
self.speed = speed
def update(self):
self.y += self.speed
if self.y > 480:
self.y = 0
def draw(self, screen):
pygame.draw.circle(screen, (255, 255, 255), (self.x, self.y), 4)
slow = Star(200, 0, 1)
fast = Star(440, 0, 3)
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
slow.update()
fast.update()
screen.fill((20, 22, 40))
slow.draw(screen)
fast.draw(screen)
pygame.display.flip()
clock.tick(60)
pygame.quit()
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Sprites e imágenes
1Cargar imágenes
Cargar una imagenColocarla con un rectánguloMover la imagenRepetir un fondo en mosaicoPíxeles transparentes2Girar, voltear y escalar
Girar alrededor del centroApuntar en la dirección del vueloEscalar una imagenGirar desde la imagen original5Colisiones precisas a nivel de píxel
Los rectángulos parecen injustosMáscarasSprites precisos a nivel de píxelHitboxes circulares3Clases para objetos del juego
Tu primera claseMétodosSelf es el objetoUna lista de objetosObjetos con imágenesUna subclase6Animación con hojas de sprites
Recortar una hoja de spritesUn contador de fotogramasAnimar con el tiempoUna explosión de una sola vezPractica por tu cuenta: Playground de Pygame