Punkte verbinden

Im folgenden Spiel werden 10 Punkte in einer zufälligen Anordnung erzeugt und nummeriert.

Anschließend muss man mit der Maus in der richtigen Reihenfolge auf die Punkte klicken, um sie zu verbinden. Sobald man einen Fehler macht, muss man von vorn beginnen. Das Spiel ist zu Ende, wenn man alle Punkte verbunden hat.

Hier ist der kommentierte Quelltext des Programms:

from random import randint WIDTH = 800 HEIGHT = 800 dots = [] lines = [] next_dot = 0 # In der Schleife werden 10 Punkte mit zufälliger Position erzeugt und zur Liste dots hinzugefügt for dot in range(0, 10): actor = Actor("dot.png") actor.pos = randint(20, WIDTH-20), randint(20, HEIGHT-20) dots.append(actor) def draw(): # Der Hintergrund wird schwarz gezeichnet screen.fill("black") number = 1 # Die Punkte werden gezeichnet und beschriftet for dot in dots: screen.draw.text(str(number), (dot.pos[0], dot.pos[1] + 12)) dot.draw() number += 1 # Die Linien werden gezeichnet. Da es erst Linien in der Liste lines gibt, wenn man mit der Maus auf die Punkte klickt, wird am anfang noch nichts gezeichnet. for line in lines: screen.draw.line(line[0], line[1], (180, 199, 220)) def on_mouse_down(pos): global next_dot global lines # Hier wird geprüft, ob die Punkte in der richtigen Reihenfolge angeklickt werden. # Wenn das nicht der Fall ist, wird die Linienliste geleert und man muss von vorn beginnen. if dots[next_dot].collidepoint(pos): if next_dot: lines.append((dots[next_dot - 1].pos, dots[next_dot].pos)) next_dot = next_dot + 1 else: lines = [] next_dot = 0

Aufgaben

Aufgabe 1

Teste das Programm und versuche es mit Hilfe der Kommentare zu verstehen!

Beachte, dass sich im Ordner images eine Datei dot.png befinden muss. Hier: python:pgzero:dot.png kannst du sie herunterladen.

Weitere Hilfe findest du hier: https://pygame-zero.readthedocs.io/en/stable/.