Zum Hauptinhalt springen

Hangman

Bottom-up Funktionen

Funktionen

def show():
pass
def is_valid(inp):
return True
def eingabe():
pass
def auswerten(valid_inp):
pass
def gewonnen():
return False
def game_over():
pass
def play():
pass

Funktionskörper

for buchstabe in gesucht:
if buchstabe not in gefunden:
return False
return True
if valid_inp in gesucht:
gefunden.append(valid_inp)
else:
falsch_geraten.append(valid_inp)
buchstabe = input('Buchstabe? ')
while not is_valid(buchstabe):
buchstabe = input('Buchstabe? ')
return buchstabe.lower()
print('Falsche Buchstaben:', falsch_geraten)
for buchstabe in gesucht:
if buchstabe in gefunden:
print(buchstabe, end=' ')
else:
print('_', end=' ')
print('')

Variablen

# Variablen
gesucht = 'test'

gefunden = []
falsch_geraten = []
Hangman

Dateiname

EF-Informatik/exercises/hangman.py

  1. Ordnen Sie die vorhandenen Funktionskörper den richtigen Funktionsdefinitionen zu und fügen Sie die Variablen ganz oben im Skript ein.

  2. Wo werden die verschiedenen Variablen verwendet? Was wird darin gespeichert?

  3. Kommentieren Sie die Funktionen. Was machen Sie?

    1. Bei Eingaben: Was für Parameter werden erwartet?

    2. Bei Rückgabewerten: Was wird zurückgegeben

  4. Machen Sie einen ersten Commit

  5. Implementieren Sie die Funktion play gemäss dem Top-down Entwurf

  6. Implementieren Sie die Funktion game_over. Die Funktion gibt True zurück, falls mehr als 10 mal falsch geraten wurde oder falls das Spiel gewonnen wurde.

  7. Das Spiel funktioniert 🥳 Doch was soll passieren, wenn mehr als ein Buchstabe oder eine Zahl eingegeben wird? Setzen Sie diese Richtlinien in der Funktionen is_valid um. Folgender Link könnte hilfreich sein

  8. Commit & Push

  9. ⭐ Generieren Sie zufällige Wörter: 👉 Zufällige Wörter

  10. ⭐ Zeigen Sie ASCII-Bilder für den Spielstand an: 👉 ASCII-Bilder

  11. Markieren Sie die Aufgabe als erledigt.

SSR
SSR
SSR
Erneut Spielen

Sobald man verloren hat, soll man gefragt werden, ob man erneut spielen möchte.

Weiterspielen

1) Neues Wort setzen (siehe Kapitel Zufällige Wörter generieren)

2) Spielstände zurücksetzen

3) Wieder spielen

Programm beenden

mit dem Befehl exit() das ganze Programm sofort beenden

⭐ Zufällige Wörter generieren

Um zufällige, deutsche Wörter zu generieren, kann man die Bibliothek zufallsworte installieren, indem im Python-Terminal von VS Code folgender Befehl eingegeben wird:

pip3 install zufallsworte

Anschliessend kann wie folgt ein zufälliges Wort abgefragt werden:

import zufallsworte as zufall

wort = zufall.zufallswoerter(1)[0] # gibt ein Zufallswort zurück

⭐ Hangman ASCII-Bilder


HANGMANS_RAW = ''' 18 Zeichen ergeben ein Bild...
__________ __________ __________ __________ __________ __________ __________ __________ __________
| | |/ |/ | |/ | |/ | |/ | |/ | |/ | |/ |
| | | | | O | O | O | O | O | O
| | | | | | | | -| | -| | -|- | -|-
| | | | | | | | \ | \ | / \
| | | | | | | | | | GAME OVER
_________ _|_______ _|_______ _|_______ _|_______ _|_______ _|_______ _|_______ _|_______ _|_______ _|_______
___/ \___ ___/ \___ ___/ \___ ___/ \___ ___/ \___ ___/ \___ ___/ \___ ___/ \___ ___/ \___ ___/ \___ ___/ \___
'''.split('\n')[1:-1] # ohne erste und letzte Zeile

# enthält 11 ASCII-Bilder, für jeden Spiel-Zustand einen
HANGMANS = ['\n'.join([line[i : i + 18] for line in HANGMANS_RAW]) for i in range(0, 11 * 18, 18)]

def get_hangman(nr):
'''
nr: int values from 0 to 10
'''
return HANGMANS[nr]

print(get_hangman(6))