Last active
July 1, 2025 08:33
-
-
Save horstjens/1eb3b89086cd27a1ba5e5e7e8cd1dc9e to your computer and use it in GitHub Desktop.
zahlenraten_paul
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 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("a ........ Schwierigkeitsgrad wählen") | |
print("b ........ spielen") | |
print("c ........ Highscoreliste") | |
print("d ........ Aufhören") | |
while True: | |
eingabe = input(">>>").lower().strip()[0] | |
if eingabe not in ("a","b","c","d"): | |
print("ungültige Eingabe") | |
continue | |
return eingabe | |
def schwierigkeit(): | |
while True: | |
print("negative Zahlen für Untergrenze erlauben ? (j/n)") | |
antwort = input(">>>").lower().strip()[0] | |
if antwort not in "jn": | |
continue | |
break | |
while True: | |
print("bitte eine positive Zahl für Obergrenze eingeben:") | |
eingabe = input(">>>") | |
try: | |
zahl = int(eingabe) | |
except ValueError: | |
print("das war keine Zahl") | |
continue | |
if zahl < 0: | |
print("Zahl muss größer als 0 sein") | |
continue | |
break | |
Game.obergrenze = zahl | |
if antwort == "j": | |
Game.untergrenze = -zahl | |
else: | |
Game.untergrenze = 0 | |
def ist_zahl_vernünftig(zahl): | |
""" | |
liefert True wenn die Zahl vernünftig ist (> 0 etc.) | |
ansonsten liefert False | |
""" | |
#if zahl < 0: | |
# return False | |
#if zahl > 1000: | |
# return False | |
#return True | |
if Game.untergrenze <= zahl <= Game.obergrenze: | |
return True | |
return False | |
def spiel(): | |
start = time.time() | |
versuch = 1 | |
geheimzahl = random.randint(Game.untergrenze, Game.obergrenze) | |
print(f"errate meine Zahl ({Game.untergrenze}-{Game.obergrenze})") | |
while True: | |
eingabe = input(f"versuch: {versuch} zahl: >>>") | |
try: | |
zahl = int(eingabe) | |
except ValueError: | |
print("Bitte nur zahlen eingeben") | |
continue | |
# wir wissen, zahl ist eine zahl (und kein String) | |
# aber: ist die Zahl vernünftig (z.b. > 0) ? | |
if not ist_zahl_vernünftig(zahl): | |
print(f"bitte nur Zahlen eingeben zwischen {Game.untergrenze} und {Game.obergrenze}") | |
continue | |
if zahl == geheimzahl: | |
print("bravo, richtig") | |
break | |
elif zahl < geheimzahl: | |
print("zu klein") | |
elif zahl > geheimzahl: | |
print("zu groß") | |
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}, von: {Game.untergrenze}, bis: {Game.obergrenze}\n") | |
# --------- main ----- | |
name = input("Gib deinen Namen ein: >>>") | |
while True: | |
auswahl = hauptmenü() | |
if auswahl == "a": | |
schwierigkeit() | |
if auswahl == "b": | |
spiel() | |
if auswahl == "c": | |
try: | |
with open("highscore.txt") as myfile: | |
for line in myfile.readlines(): | |
print(line) | |
except FileNotFoundError: | |
print("es gibt noch keine highscoreliste") | |
if auswahl == "d": | |
break | |
print("------- bye bye -------") | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment