Menu
CoddyTech

Rimuovi una stella

Fa parte della sezione Python in una finestra di gioco del percorso Pygame di Coddy. Lezione 27 di 32.

Anche le liste si accorciano. stars.pop() rimuove l’ultimo elemento, quello più recente. stars.pop(0) rimuove il primo. stars.remove(item) rimuove il primo elemento uguale a item.

Rimuovere un elemento da una lista vuota è un errore, IndexError: pop from empty list, e il programma si interrompe. Verifica prima la lunghezza:

if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
    if len(stars) > 0:
        stars.pop()

Nota i due if. Quello esterno seleziona tra gli eventi la pressione della barra spaziatrice, quello interno verifica che ci sia una stella da rimuovere.

In un if, una lista vuota viene considerata False e una lista con elementi True, quindi if stars: significa lo stesso di if len(stars) > 0:.

challenge icon

Sfida

Medio

Fai in modo che la barra spaziatrice rimuova una stella:

  1. Nel ciclo degli eventi, quando arriva un evento KEYDOWN per K_SPACE, rimuovi la stella più recente con stars.pop().
  2. Rimuovi una stella solo se la lista non è vuota, così premere la barra spaziatrice quando non ci sono stelle non fa nulla.

Provalo tu

import pygame

pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()

# Prepara tutto qui, prima del ciclo di gioco.
stars = []
font = pygame.font.Font(None, 36)

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.MOUSEBUTTONDOWN and len(stars) < 10:
            stars.append(event.pos)

    # Modifica gli elementi qui, una volta per fotogramma.

    screen.fill((20, 24, 48))
    # Disegna qui, dopo aver riempito lo schermo.
    for star in stars:
        pygame.draw.circle(screen, (255, 255, 255), star, 5)
    text = font.render(f"Stars: {len(stars)}", True, (230, 230, 240))
    screen.blit(text, (20, 20))

    pygame.display.flip()
    clock.tick(60)

pygame.quit()

Tutte le lezioni di Python in una finestra di gioco

Esercitati da solo: Playground Pygame