Einen Stern entfernen
Teil des Abschnitts Python in einem Spielfenster der Pygame-Journey von Coddy. Lektion 27 von 32.
Listen schrumpfen auch. stars.pop() entfernt das letzte Element, also das neueste. stars.pop(0) entfernt das erste. stars.remove(item) entfernt das erste Element, das gleich item ist.
Das Entfernen aus einer leeren Liste mit pop führt zu einem Fehler, IndexError: pop from empty list, und das Programm wird angehalten. Prüfe zuerst die Länge:
if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
if len(stars) > 0:
stars.pop()Beachte die beiden if-Anweisungen. Die äußere filtert das Drücken der Leertaste aus den Ereignissen heraus, die innere stellt sicher, dass ein Stern zum Entfernen vorhanden ist.
In einer if-Anweisung gilt eine leere Liste als False und eine Liste mit Elementen als True, daher bedeutet if stars: dasselbe wie if len(stars) > 0:.
Aufgabe
MittelLass die Leertaste einen Stern zurücknehmen:
- Entferne in der Ereignisschleife den neuesten Stern mit
stars.pop(), wenn einKEYDOWN-Ereignis fürK_SPACEeintrifft. - Entferne einen Stern nur, wenn die Liste nicht leer ist, damit die Leertaste nichts bewirkt, wenn keine Sterne vorhanden sind.
Probier es selbst
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
pygame.display.set_caption("Night Sky")
clock = pygame.time.Clock()
# Richte hier alles ein, bevor die Spielschleife beginnt.
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)
# Ändere hier die Dinge einmal pro Frame.
screen.fill((20, 24, 48))
# Zeichne hier, nachdem der Bildschirm gefüllt wurde.
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()
Alle Lektionen in Python in einem Spielfenster
3If und Tasten
Am Rand auf die andere SeiteTasten bewegen den MondElif und ElseUnd, OderWahr oder Falsch6Listen von Dingen
Eine Liste von SternenKlicken zum HinzufügenMit len zählenEinen Stern entfernenZufallszahlenÜbe selbstständig: Pygame-Playground