Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:pgzero:projekt3

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
python:pgzero:projekt3 [2021/05/09 10:15] lutzpython:pgzero:projekt3 [2021/05/09 10:33] (aktuell) – [Aufgaben] lutz
Zeile 4: Zeile 4:
  
 {{:python:pgzero:punkte1.png?600|}} {{:python:pgzero:punkte1.png?600|}}
 +
 +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.
 +
 +{{:python:pgzero:punkte2.png?600|}}
 +
 +Hier ist der kommentierte Quelltext des Programms:
 +
 +<code python 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
 +</code>
 +
 +
 +=====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?linkonly|}} 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.1620548155.txt.gz · Zuletzt geändert: 2021/05/09 10:15 von lutz