Quita una estrella
Parte de la sección Python en una ventana de juego del Journey de Pygame de Coddy. Lección 27 de 32.
Las listas también se reducen. stars.pop() elimina el último elemento, el más reciente. stars.pop(0) elimina el primero. stars.remove(item) elimina el primer elemento igual a item.
Quitar un elemento de una lista vacía es un error, IndexError: pop from empty list, y el programa se detiene. Comprueba primero la longitud:
if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
if len(stars) > 0:
stars.pop()Fíjate en los dos if. El externo selecciona la pulsación de la barra espaciadora entre los eventos; el interno se asegura de que haya una estrella para eliminar.
En un if, una lista vacía cuenta como False y una lista con elementos como True, así que if stars: significa lo mismo que if len(stars) > 0:.
Desafío
IntermedioHaz que la barra espaciadora quite una estrella:
- En el bucle de eventos, cuando llegue un evento
KEYDOWNparaK_SPACE, elimina la estrella más reciente constars.pop(). - Solo elimina una estrella si la lista no está vacía, para que pulsar la barra espaciadora cuando no haya estrellas no haga nada.
Pruébalo tú mismo
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# Configura todo aquí, antes del bucle del juego.
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)
# Haz los cambios aquí, una vez por fotograma.
screen.fill((20, 24, 48))
# Dibuja aquí, después de rellenar la pantalla.
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()
Todas las lecciones de Python en una ventana de juego
6Listas de cosas
Una lista de estrellasHaz clic para añadirCuenta con lenQuita una estrellaNúmeros aleatoriosPractica por tu cuenta: Playground de Pygame