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
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 = TrueKommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
