5.1 Münzwurfspiel
Das Werfen einer Münze (Abbildung 1) soll programmiert werden.
Regeln des Münzwurfspiels
Der Spieler wählt, ob nach dem Werfen der Münze der Kopf oder die Zahl der Münze oben liegen soll.
Der Computer »wirft« die Münze, indem per Zufall Kopf oder Zahl als oben liegend ermittelt wird.
Anschließend wertet der Computer den Münzwurf aus:
- liegt die vom Spieler gewählte Seite der Münze oben, gibt der Computer aus, dass der Spieler gewonnen hat
- liegt die vom Spieler gewählte Seite der Münze unten, gibt der Computer aus, dass der Computer gewonnen hat
Der Spieler entscheidet, ob das Werfen der Münze wiederholt oder beendet wird.
Programm »muenzwurf.py«
Vom Programm »muenzwurf.py« ist die Callback-Funktion »werfen« gegeben, in der die Regeln des Münzwurfspiels als Algorithmus implementiert sind.
import random
# Callback-Funktion
def werfen():
seite=["Kopf", "Zahl"]
spieler_wahl=entry1.get()
# äußere if-Auswahl
if spieler_wahl!="Kopf" and spieler_wahl!="Zahl":
entry1.delete(0, tk.END)
label2.config(text="Keine korrekte Eingabe!")
else:
computer_wurf=random.choice(seite)
# innere if-Auswahl
if spieler_wahl==computer_wurf:
label2.config(text=\
f"{computer_wurf} oben: Du gewinnst!")
else:
label2.config(text=\
f"{computer_wurf} oben: Computer gewinnt!")
entry1.delete(0, tk.END)
| 1. Zeile | Das Modul »random« wird mit der Methode »choice« in das Programm eingebunden. |
| 4. bis 20. Zeile | Die Callback-Funktion »werfen« mit dem Algorithmus des Münzwurfspiels wird deklariert. |
| 5. Zeile |
Der Variable »seite« wird die Liste »["Kopf", "Zahl"]« als Wert
zugewiesen.
|
| 6. Zeile |
Die Eingabe des Spielers erfolgt über das Entry-Widget (Eingabefeld).
|
| 8. bis 19. Zeile |
Die äußere if-else-Anweisung mitl zwei Bedingungszweigen wird ausgeführt:
|
| 12. Zeile | Die Methode »choice« ermittelt per Zufall in der Liste den Wert »Kopf« oder »Zahl«, der der Variable »computer_wurf« zugewiesen wird. |
| 14. bis 19. Zeile | Die innere if-else-Auswahl mit zwei Bedingungszweigen wird ausgeführt. |
| 15., 16., 18., 19. Zeile | Die jeweilige Auswertung des Spiels wird in f-Strings ausgegeben. |
| 20. Zeile | Das vom Spieler in das Entry-Widget (Eingabefeld) geschriebene Wort »Kopf« oder »Zahl« wird gelöscht, sodass erneut eine Eingabe des Spielers erfolgen kann. |
In der Abbildung 2 ist eine mögliche grafische Benutzeroberfläche – das Hauptfenster mit den darauf platzierten Widgets – des Programms zu sehen.
Aufgabe A81
Implementiere das Programm »muenzwurf.py« am Computer.
Das Programm soll aus zwei Teilen bestehen:
- der grafischen Benutzeroberfläche – dem Hauptfenster mit den darauf platzierten Widgets.
- der Callback-Funktion »werfen« mit dem Algorithmus des Münzwurfspiels, dessen Kern eine äußere und eine innere if-else-Auswahl mit zwei Bedingungszweigen ist
Führe das Programm aus und teste, ob es fehlerfrei läuft und den gestellten Anforderungen entspricht:
- gib mehrmals »Kopf« und »Zahl« ein
- gib etwas Falsches ein