Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:pgzero:projekt3

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:

punkte.py
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: dot.png kannst du sie herunterladen.

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

Aufgabe 2

Erzeuge an Stelle der 10 zufälligen Punkte fünf Punkte ohne Nummerierung die „das Haus vom Nicolaus“ darstellen, in einer Reihenfolge, in der sich das Haus in einem Zug zeichnen lässt. Wenn der Spieler das Haus in der richtigen Punktreihenfolge zeichnet, bleiben die Linien erhalten.

Aufgabe 3

Erweitere Aufgabe 2 derart, dass jede beliebige richtige Reihenfolge akzeptiert wird.

python/pgzero/projekt3.txt · Zuletzt geändert: 2021/05/09 10:33 von lutz