Programming lesson
Bedingte Anweisungen und Schleifen in Python: Ein Guessing-Spiel für Nostalgie-Fans
Lerne, wie du mit Python ein interaktives Ratespiel programmierst – inspiriert von Retro-Games der 80er. Perfekt für Anfänger, um Bedingungen und Schleifen zu üben.
Einführung: Warum dieses Spiel?
Stell dir vor, du arbeitest für Nostalgia-R-Us, ein Unternehmen, das textbasierte Spiele aus den 1980er Jahren neu auflegt. Dein Auftrag: ein einfaches Ratespiel, bei dem ein Spieler eine geheime Zwei-Zeichen-Sequenz errät. Die Buchstaben stammen aus dem Wort bellingham – eine Hommage an die Western Washington University. Dieses Projekt ist perfekt, um Bedingte Anweisungen (if/else) und Schleifen (while) in Python zu üben. Klingt nach einer Zeitreise? Lass uns eintauchen!
Die Spielmechanik verstehen
Bevor du Code schreibst, analysiere die Anforderungen. Der Spieler gibt zuerst die Anzahl der Versuche ein. Dann wählt das Programm zufällig zwei Buchstaben aus bellingham aus – sie können auch gleich sein. Der Spieler rät Buchstaben, und nach jedem Versuch erfährt er, ob er den ersten, zweiten oder keinen Buchstaben getroffen hat. Sobald beide Buchstaben erraten sind, erscheint „You win“ und das Spiel endet. Sind alle Versuche aufgebraucht, wird die Lösung verraten.
Wichtige Python-Konzepte
Bedingte Anweisungen (if, elif, else)
Mit if prüfst du, ob eine Bedingung wahr ist. Zum Beispiel: if guess == secret1:. Vergiss nicht die Doppelpunkte und die Einrückung! In Python wird der Codeblock durch Einrückung definiert. Ein typisches Konstrukt:
if guess == secret1:
print("Erster Buchstabe richtig!")
elif guess == secret2:
print("Zweiter Buchstabe richtig!")
else:
print("Falscher Buchstabe.")Schleifen (while)
Die while-Schleife wiederholt Code, solange eine Bedingung wahr ist. Für unser Spiel: Solange der Spieler noch Versuche hat und nicht gewonnen hat, läuft die Schleife. Beispiel:
while tries_remaining > 0 and not won:
# Spiellogik
tries_remaining -= 1Zufallszahlen mit random
Importiere das Modul random und wähle zufällige Buchstaben aus einer Liste: random.choice(liste). So erzeugst du die geheime Antwort.
Schritt-für-Schritt-Implementierung
1. Programmgerüst und Erklärungen
Beginne mit einem Kommentarblock, der deinen Namen und den Zweck des Programms enthält. Fordere den Spieler auf, die Anzahl der Versuche einzugeben. Nutze input() und wandle die Eingabe in eine ganze Zahl um.
# Guessing Game – Nostalgia-R-Us
# Autor: Dein Name
import random
print("Willkommen beim Buchstaben-Ratespiel!")
tries = int(input("Wie viele Versuche möchtest du? "))2. Geheime Buchstaben wählen
Erstelle eine Liste mit den Buchstaben aus bellingham. Achte auf doppelte Buchstaben? Nein, denn die Auswahl erfolgt unabhängig voneinander. Verwende random.choice() zweimal.
letters = ['b', 'e', 'l', 'l', 'i', 'n', 'g', 'h', 'a', 'm']
secret1 = random.choice(letters)
secret2 = random.choice(letters)3. Variablen für den Spielzustand
Du brauchst Variablen, die sich merken, ob der erste bzw. zweite Buchstabe bereits erraten wurde. Setze sie am Anfang auf False. Zähle die verbleibenden Versuche.
found1 = False
found2 = False
remaining = tries
won = False4. Hauptspiel-Schleife
Solange der Spieler noch Versuche hat und nicht gewonnen hat, frage nach einem Buchstaben. Vergleiche die Eingabe mit den Geheimzeichen und gib entsprechendes Feedback aus. Wichtig: Wenn ein Buchstabe bereits gefunden wurde, erwähne ihn nicht mehr. Das erreichst du mit Bedingungen.
while remaining > 0 and not won:
guess = input("Rate einen Buchstaben: ").lower()
# Prüfe, ob guess dem ersten oder zweiten Geheimzeichen entspricht
# und ob dieses noch nicht gefunden wurde
if guess == secret1 and not found1:
found1 = True
print("Du hast den ersten Buchstaben erraten!")
elif guess == secret2 and not found2:
found2 = True
print("Du hast den zweiten Buchstaben erraten!")
else:
# Prüfe, ob guess überhaupt einer der Geheimzeichen ist
if guess == secret1 or guess == secret2:
# Buchstabe wurde bereits gefunden
print("Diesen Buchstaben hast du schon erraten.")
else:
print("Dieser Buchstabe ist nicht in der Lösung.")
remaining -= 1
# Prüfe auf Gewinn
if found1 and found2:
won = True
print("You win!")
break
if not won:
print("Keine Versuche mehr übrig. Die Lösung war:", secret1, secret2)5. Sonderfall: Doppelte Buchstaben beachten
Da beide Buchstaben gleich sein können, musst du sicherstellen, dass der Spieler den Buchstaben zweimal errät, wenn beide gleich sind? Nein: Die Anforderung besagt, dass beide Buchstaben unabhängig gewählt werden. Wenn beide gleich sind, reicht ein einziger richtiger Versuch, um beide zu finden. Unser Code oben behandelt das korrekt: Wenn secret1 == secret2, dann setzt der erste Treffer found1 auf True, aber found2 bleibt False. Der Spieler muss also noch einmal denselben Buchstaben eingeben, um auch found2 zu triggern. Das ist korrekt, denn die Anforderung sagt: „beide Buchstaben müssen erraten werden“. Also: Ja, der Spieler muss zweimal den gleichen Buchstaben raten, wenn die geheime Antwort aus zwei gleichen Buchstaben besteht.
Testen des Programms
Teste verschiedene Szenarien:
- Gewinn in einem Versuch (beide Buchstaben gleich und richtig geraten)
- Gewinn nach mehreren Versuchen
- Verlust, wenn Versuche aufgebraucht sind
- Eingabe von bereits gefundenen Buchstaben – sollte keine doppelte Meldung geben
Beispiel für einen Verlust:
Anzahl Versuche: 3
Geheimnis: bh
Versuch 1: b -> Erster Buchstabe richtig.
Versuch 2: g -> Nicht in der Lösung.
Versuch 3: h -> Zweiter Buchstabe richtig! You win!Oder bei Verlust:
Versuch 1: x -> Nicht in der Lösung.
Versuch 2: y -> Nicht in der Lösung.
Versuch 3: z -> Nicht in der Lösung.
Keine Versuche mehr. Lösung: b und h.Häufige Fehler und Tipps
- Einrückung: Python ist empfindlich. Stelle sicher, dass alle Codeblöcke korrekt eingerückt sind.
- Variablenbenennung: Verwende aussagekräftige Namen wie
secret1,found1,remaining. Das macht den Code lesbarer. - Eingabevalidierung: Das Spiel geht davon aus, dass der Spieler einen einzelnen Buchstaben eingibt. Du könntest eine Prüfung einbauen, ob die Eingabe genau ein Zeichen ist.
- Groß-/Kleinschreibung: Wandle die Eingabe mit
.lower()in Kleinbuchstaben um, damit 'B' und 'b' gleich behandelt werden.
Erweiterungen für Extra-Credit
In der Challenge-Aufgabe sollst du eine Dezimalzahl in Binär umwandeln. Das ist ein klassisches Problem, das mit Schleifen und Bedingungen gelöst wird. Du kannst den Algorithmus „Teile durch 2 und merke den Rest“ verwenden. Ein Tipp: Sammle die Bits in einer Liste und gib sie in umgekehrter Reihenfolge aus. Aber das ist ein separates Projekt.
Fazit
Dieses Guessing-Spiel vereint grundlegende Programmierkonzepte auf unterhaltsame Weise. Du lernst, wie man mit Bedingungen Entscheidungen trifft und mit Schleifen Wiederholungen steuert. Die Nostalgie-R-Us-Spiele sind ein perfektes Beispiel für den Einsatz von Python in der Spieleentwicklung – auch wenn sie nur textbasiert sind. Viel Erfolg beim Programmieren!