Una lista di oggetti
Fa parte della sezione Sprite e immagini del percorso Pygame di Coddy. Lezione 13 di 36.
Due stelle con nome non sono un cielo. Per quaranta serve un’lista: crea gli oggetti in un ciclo e aggiungi ciascuno di essi.
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))Poi un ciclo li aggiorna tutti e un altro li disegna tutti:
for star in stars:
star.update()All’interno di for, star è ciascun oggetto a turno, quindi star.update() sposta quella stella alla propria velocità. Aggiungere altre cento stelle cambia un solo numero; il codice di aggiornamento e disegno resta uguale.
Crea la lista una sola volta, prima del ciclo di gioco. Una lista creata all’interno del ciclo è una nuova lista di nuove stelle a ogni fotogramma, tutte di nuovo al punto di partenza, quindi non si muove mai nulla.
Sfida
Medio- Aggiungi
import randomall'inizio. - Prima del ciclo, crea
stars: una lista di 40 oggetti Star, ognuno con un valore x casuale da 0 a 639, un valore y casuale da 0 a 479 e una velocità casuale da 1 a 3. - Nel ciclo, aggiorna ogni stella in
starse disegna ogni stella dopo il riempimento. Rimuovislowefast.
Provalo tu
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()
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Sprite e immagini
1Caricare immagini
Caricare un'immaginePosizionarla con un rettangoloSpostare l'immagineRipetere uno sfondoPixel trasparenti2Ruota, capovolgi, ridimensiona
Ruotare attorno al centroRivolgiti nella direzione in cui voliRidimensionare un'immagineRuotare dall'originale3Classi per gli oggetti del gioco
La tua prima classeMetodiSelf è l’oggettoUna lista di oggettiOggetti con immaginiUna sottoclasse6Animazione con gli sprite sheet
Ritagliare uno sprite sheetUn contatore di frameAnimare con il tempoUn’esplosione a riproduzione singolaEsercitati da solo: Playground Pygame