Nachdem mein erster, nur auf Modulbasis bestehender Versuch ein Hangman-Spiel zu schreiben zwar funktioniert hat, in programmiertechnischer Hinsicht allerdings ein Fiasko war habe ich diesen mit Hilfe des deutschen Python-Forums (nur zu empfehlen!) neu geschrieben bzw. so viel geändert, dass im Grunde genommen ein neuer Code daraus entstanden ist :)
Die wichtigsten zusammenhängenden Funktionen sind in Hauptfunktionen unterteilt, um eine bessere Übersicht und Funktionalität gewährleisten zu können. Zur etwas besseren visuellen Darstellung wird auch eine Funktion ausgeführt, welche in kleines Hangman'chen anzeigt.
Der Code ist mit Sicherheit nicht "gut" oder "perfekt", aber vielleicht hilft es ja dem ein oder anderen. Verbesserungsvorschläge sind natürlich auch gerne gesehen :)
Den Code gibts hier
- from random import shuffle
-
- datei = open('wort.txt', 'r')
- var = datei.read()
- words = var.split(" ")
- datei.close()
-
- def hangman_show(a, b):
- hangman = ["-----", "|/ |", "| o ", "| \O/ ", "| / \ "]
- for i in range(a, b):
- print hangman[i]
-
- def input_char():
- char = raw_input('\nBitte geben Sie einen Buchstaben ein:')
- while len(char) > 1 or char == '':
- char = raw_input('Bitte geben Sie einen EINZELNEN Buchstaben ein:')
- char = char.upper()
- return char.swapcase()
-
- def output_word(wort, buchstaben):
- daneben = 0
- for stelle in wort:
- if stelle in buchstaben:
- print stelle,
- else:
- print "_",
- daneben += 1
- return daneben
-
- def guess_chars(versuche, words):
- shuffle(words)
- wort = words.pop()
- fehler = 0
- buchstaben = ''
- while fehler < versuche:
- char = input_char()
-
- if char in wort:
- print 'Dieser Buchstabe ist richtig!'
- if char not in buchstaben:
- buchstaben += char
- if output_word(wort, buchstaben) == 0:
- print '\nSie haben das Wort erraten!'
- break
- else:
- print 'Dieser Buchstabe ist schon vorhanden!'
- else:
- print 'Dieser Buchstabe ist falsch!'
- hangman_show(0,fehler+1)
- fehler += 1
- if fehler == versuche:
- print '\nSie haben verloren!'
-
- nochmal = ''
- while nochmal == 'j':
- guess_chars(5, words)
- nochmal = raw_input('Wollen Sie noch einmal spielen? (j/n)')
from random import shuffle
datei = open('wort.txt', 'r')
var = datei.read()
words = var.split(" ")
datei.close()
def hangman_show(a, b):
hangman = ["-----", "|/ |", "| o ", "| \O/ ", "| / \ "]
for i in range(a, b):
print hangman[i]
def input_char():
char = raw_input('\nBitte geben Sie einen Buchstaben ein:')
while len(char) > 1 or char == '':
char = raw_input('Bitte geben Sie einen EINZELNEN Buchstaben ein:')
char = char.upper()
return char.swapcase()
def output_word(wort, buchstaben):
daneben = 0
for stelle in wort:
if stelle in buchstaben:
print stelle,
else:
print "_",
daneben += 1
return daneben
def guess_chars(versuche, words):
shuffle(words)
wort = words.pop()
fehler = 0
buchstaben = ''
while fehler < versuche:
char = input_char()
if char in wort:
print 'Dieser Buchstabe ist richtig!'
if char not in buchstaben:
buchstaben += char
if output_word(wort, buchstaben) == 0:
print '\nSie haben das Wort erraten!'
break
else:
print 'Dieser Buchstabe ist schon vorhanden!'
else:
print 'Dieser Buchstabe ist falsch!'
hangman_show(0,fehler+1)
fehler += 1
if fehler == versuche:
print '\nSie haben verloren!'
nochmal = ''
while nochmal == 'j':
guess_chars(5, words)
nochmal = raw_input('Wollen Sie noch einmal spielen? (j/n)')