Last active
July 2, 2025 08:16
-
-
Save horstjens/075f40b135bef6f337cb1fd73a7c6369 to your computer and use it in GitHub Desktop.
paul zahlenraten 5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import time | |
import random | |
class Game: | |
untergrenze = 1 | |
obergrenze = 100 | |
def frage_nach_zahl(prompt="Bitte Zahl eingeben", | |
untergrenze = 1, | |
obergrenze = 100): | |
""" | |
diese Funktion fragt so lange den User nach einer Zahl, | |
bis er eine Zahl eingibt welche den gewünschten Kriterien entspricht. | |
Diese Zahl wird dann zurückgeliefert. (int) | |
""" | |
while True: | |
antwort = input(prompt) # das ist ein String ! | |
try: | |
zahl = int(antwort) # zahl ist jetzt ein integer | |
except ValueError: | |
print("Bitte nur Zahlen eingeben") | |
continue | |
if untergrenze <= zahl <= obergrenze: | |
return zahl | |
print(f"Zahl muss zwischen {untergrenze} und {obergrenze} liegen") | |
def hauptmenü(): | |
print("------------------------------------") | |
print("------- zahlenratenspiel -----------") | |
print(f"Errate Zahlen von {Game.untergrenze} bis {Game.obergrenze} ") | |
print("bitte Menüpunkt wählen und ENTER drücken:") | |
print("1 ........ Schwierigkeitsgrad wählen") | |
print("2 ........ spielen") | |
print("3 ........ Highscoreliste") | |
print("4 ........ Aufhören") | |
return frage_nach_zahl(prompt= "Ihre Auswahl >>>", | |
untergrenze=1, | |
obergrenze=4) | |
def schwierigkeit(): | |
Game.untergrenze = 1 | |
Game.obergrenze = frage_nach_zahl(prompt = "Bitte Obergrenze eingeben", | |
untergrenze=1, | |
obergrenze=1000000000000000000000000) | |
def spiel(): | |
start = time.time() | |
versuch = 1 | |
unten = Game.untergrenze | |
oben = Game.obergrenze | |
geheimzahl = random.randint(Game.untergrenze, Game.obergrenze) | |
while True: | |
zahl = frage_nach_zahl(prompt = f"Errate meine Zahl ({unten}-{oben}) >>>", | |
untergrenze=unten, | |
obergrenze=oben) | |
if zahl == geheimzahl: | |
print("bravo, richtig") | |
break | |
elif zahl < geheimzahl: | |
print("zu klein") | |
unten = zahl | |
elif zahl > geheimzahl: | |
print("zu groß") | |
oben = zahl | |
versuch += 1 | |
print("Game Over") | |
ende = time.time() | |
dauer = ende - start # in Sekunden | |
print(f"Spieldauer: {dauer:.2f} Sekunden") | |
with open("highscore.txt", "a") as myfile: | |
myfile.write(f"Name: {name}, Versuche: {versuch}, Zeit: {dauer:.2f}, von: {Game.untergrenze}, bis: {Game.obergrenze}\n") | |
# --------- main ----- | |
name = input("Gib deinen Namen ein: >>>") | |
while True: | |
auswahl = hauptmenü() | |
if auswahl == 1: | |
schwierigkeit() | |
if auswahl == 2: | |
spiel() | |
if auswahl == 3: | |
try: | |
with open("highscore.txt") as myfile: | |
for line in myfile.readlines(): | |
print(line) | |
except FileNotFoundError: | |
print("es gibt noch keine highscoreliste") | |
if auswahl == 4: | |
break | |
print("------- bye bye -------") | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment