Python :: Aufgabe #268 :: Lösung #1
2 Lösungen
#268
Galgenraten (hangman)
Anfänger - Python
von JKooP
- 18.04.2020 um 12:18 Uhr
Erstelle ein Konsolenspiel in der Form „Galgenraten“.
Spieler 1 gibt verdeckt ein zu erratenes Wort ein.
Regeln: Buchstaben a-z, keine Zahlen, ä = ae, ö = oe, ü = ue, ß = ss
Spieler 2 muss versuchen die richtigen Buchstaben zu erraten.
Dazu wird am Anfang des Spiels jeder Buchstabe des Lösungsworts als „Unterstrich“ dargestellt.
Errät Spieler 2 einen Buchstaben, wird der Unterstrich an allen Positionen an der sich der gefundene Buchstabe befindet durch den jeweiligen Buchstaben ersetzt.
Es sollen am Ende des Spiels die benötigte Zeit und die Anzahl der Versuche ausgegeben werden.
Die Anzahl der Versuche soll ähnlich wie beim Galgenraten begrenzt werden.
Varianten:
Der Spieler 2 kann auch das Lösungswort eingeben. Ist das Wort falsch, wird es als 2 Fehlversuche gewertet.
Als Hilfe könnten die bereits genutzten Buchstaben angezeigt werden.
Aus der Anzahl der benötigten Versuche und der Zeit könnten Gewinnpunkte generiert werden.
Viel Spaß
Spieler 1 gibt verdeckt ein zu erratenes Wort ein.
Regeln: Buchstaben a-z, keine Zahlen, ä = ae, ö = oe, ü = ue, ß = ss
Spieler 2 muss versuchen die richtigen Buchstaben zu erraten.
Dazu wird am Anfang des Spiels jeder Buchstabe des Lösungsworts als „Unterstrich“ dargestellt.
Errät Spieler 2 einen Buchstaben, wird der Unterstrich an allen Positionen an der sich der gefundene Buchstabe befindet durch den jeweiligen Buchstaben ersetzt.
Es sollen am Ende des Spiels die benötigte Zeit und die Anzahl der Versuche ausgegeben werden.
Die Anzahl der Versuche soll ähnlich wie beim Galgenraten begrenzt werden.
Varianten:
Der Spieler 2 kann auch das Lösungswort eingeben. Ist das Wort falsch, wird es als 2 Fehlversuche gewertet.
Als Hilfe könnten die bereits genutzten Buchstaben angezeigt werden.
Aus der Anzahl der benötigten Versuche und der Zeit könnten Gewinnpunkte generiert werden.
Viel Spaß
#1
von satn1241 (3090 Punkte)
- 24.04.2020 um 12:58 Uhr
Python-Code
def choose_game_mode(): print("Möchtest du gegen den Computer spielen? Drücke (1)") print("Möchtest du gegen eine/n Freund/in spielen? Drücke (2)") game_mode = "" while game_mode != "1": game_mode = input("> ") if game_mode == "2": break print("Falsche Eingabe: Drücke (1) für vs. PC oder (2) für P1 vs. P2") if game_mode == 1: print("Spiel gegen den PC gewählt") elif game_mode == 2: print("Spiel gegen eine/n Freund/in gewählt") return game_mode # 1 or 2 def game_pc(): import random wortliste_pc = ['Akquise', 'nichtsdestotrotz', 'Burgverlies', 'Ouvertuere', 'Chrysantheme', 'Portemonnaie', 'Dekollete', 'Quarzuhr', 'Einfaltspinsel', 'Rueckgrat', 'brillant', 'Bredouille', 'Fronleichnam', 'Schlafittchen', 'Galionsfigur', 'Terrasse', 'hanebuechen', 'unentgeltlich', 'Incentive', 'Verlies', 'Jackett', 'weismachen', 'Kernspintomografie', 'Xanthippe', 'lizenzieren', 'Yuccapalme', 'Mischpoke', 'Zucchini'] i = random.randint(0, len(wortliste_pc)) wort = wortliste_pc[i].lower() #print(wort) return wort def game_player(): print("Gib bitte ein Wort ein") from string import ascii_lowercase erlaubte_buchstaben = list(ascii_lowercase) while True: wort = input("> ").lower() zeichen_checker = 0 for i in wort: zeichen_checker += erlaubte_buchstaben.count(i) if zeichen_checker == len(wort): break else: print("keine Umlaute, Zahlen oder Sonderzeichen erlaubt. Gib ein neues Wort ein") return wort def tippen(): global fehlversuche print(f"Du hast schon {fehlversuche} von max. {fehlversuche_max}") tipp = input("Gib bitte einen Tipp ab: > ") return tipp def eingabe_check(tipp): from string import ascii_lowercase erlaubte_buchstaben = list(ascii_lowercase) check = 0 for i in tipp: check += erlaubte_buchstaben.count(i) if check == len(tipp): return True else: print("keine Umlaute, Zahlen oder Sonderzeichen erlaubt.") return False # Einzelbuchstabe Check auf wiederholte eingabe def wiederholung_check(tipp): global alle_buchstaben if alle_buchstaben.count(tipp) > 0: print("Buchstabe wurden schon eingegeben") return False else: return True def wort_eingabe_check(wort, tipp): global fehlversuche global zeit_start if wort == tipp: zeit_ende = default_timer() print(f"Richtig gelöst! Das Wort war \"{wort}\"") print(f"Du hast {fehlversuche} Fehlversuche benötigt") print(f"Du hast zum Lösen {round(zeit_ende - zeit_start, 1)}s benötigt") return True else: print("Das war falsch! Du erhälst zwei Fehlversuche") fehlversuche += 2 return False def buchstabe_eingabe_check(tipp, wort): global raster global falsche_buchstaben global fehlversuche for i in range(0, len(wort)): if wort[i] == tipp: raster[i] = tipp return True falsche_buchstaben.append(tipp) fehlversuche +=1 print(f"Der Buchstabe {tipp} kommt nicht im Wort vor") return False # Spiel game_mode = choose_game_mode() # Wort festlegen if int(game_mode) == 1: wort = game_pc() elif int(game_mode) == 2: wort = game_player() # Tippen raster = ["_"] * len(wort) from timeit import default_timer zeit_start = default_timer() alle_buchstaben = [] falsche_buchstaben = [] stop = False fehlversuche_max = 8 fehlversuche = 0 while not stop: # a) tippen und tipp auf Eingaberegeln prüfen status = False while not status: print(raster) print(f"falsche Buchstaben: {falsche_buchstaben}") tipp = tippen() if eingabe_check(tipp): if len(tipp) == 1: if wiederholung_check(tipp): status = True elif len(tipp) > 1: status = True # b) abgleichen: if len(tipp) == 1: alle_buchstaben.append(tipp) if buchstabe_eingabe_check(tipp, wort): if raster.count("_") == 0: zeit_ende = default_timer() print(f"Richtig gelöst! Das Wort war \"{wort}\"") print(f"Du hast {fehlversuche} Fehlversuche benötigt") print(f"Du hast zum Lösen {round(zeit_ende-zeit_start,1)}s benötigt") stop = True elif len(tipp) > 1: if wort_eingabe_check(wort, tipp): stop = True # c) verlieren if fehlversuche ==8: print("Leider verloren! - Maximale Fehlversuche erreicht") print(f"Das richtige Wort war \"{wort}\"") stop = True
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1