Galgenraten
Verfasst: Samstag 18. Januar 2025, 23:43
Ich habe ein kleines Ratespiel programmiert und würde mich über Lob und Kritik freuen.
Gleichzeitig wüßte ich gerne, ob ich meine Wörtersammlung nicht irgendwie anders abspeichern kann - ich meine das Lesen geht ja schnell. sieht aber komisch aus
Code: Alles auswählen
from random import randint
def filter_word(instring):
result = ""
for character in instring:
if character in "abcdefghijklmnopqrstuvwxyzäöüß":
result += character
return result
list_book = []
n = 0
with open("tomsawyers-deu.txt") as file:
for line in file:
n += 1
if 36 <= n <= 3549:
sentence = line.strip().split()
for word in sentence:
list_book.append(filter_word(word.lower()))
# print(len(list_book))
guess_word = ""
while not (4 <= len(guess_word) <= 12):
guess_word = list_book[randint(0, len(list_book) -1)].lower()
list_book = []
# print(guess_word)
points = 0
tries = 0
def display():
result = ""
for letter in guess_word:
if letter in actual:
result += letter
else:
result += "_"
result += " "
print("\n" + result, 10*" ", "Versuche:", tries, "Punkte:", points)
def game_over():
if len(correct) == len(good):
print("\nDas Wort >>>", guess_word, "<<< ist richtig, Du hast gewonnen !!!")
else:
print("\nDu hast verloren, geraten werden sollte:", guess_word)
exit()
actual = set ()
correct = set ()
good = set ()
for letter in guess_word:
correct.add(letter)
# print(correct)
while len(good) != len(correct):
display()
check = input("\nGib einen Buchstaben ein: ").lower()
if len(check) == 0:
game_over()
# double input, but not empty word
if check in actual:
if len(good) > 0:
points -= 5
# first time right letter
elif check in correct:
points += 10
good.add(check)
# wrong, but not empty word
elif len(good) > 0:
points -= 3
if points < 0:
game_over()
tries +=1
actual.add(check)
# print("actual=", actual)
# print("good=", good)
game_over()