zahlenratespiel
Verfasst: Montag 8. Juni 2009, 11:39
Hallo. Habe mal als erstes Programm ein Zahlenratespiel geschrieben. Nur irgendwie kriege ich das mit dem "pickle" nicht so richtig hin, und ich finde den Fehler nicht. Kann mir jemand helfen?
Code: Alles auswählen
#!/usr/bin/python
import random
import pickle
def zufall():
spiel = 1
menu = 0
x = 0
while spiel == 1:
versuche = 0
counter = 0
# Spiel starten, beenden, oder Highscore anzeigen
print "\nZahlen raten"
print "_-_-_-_-_-_-_-"
print "(1) Neues Spiel"
print "(2) Highscores"
print "(3) Beenden"
menu = int(raw_input(" > "))
# Nun wird der Schwierigkeitsgrad gewaehlt
if menu == 1:
print "\nSchwierigkeitsgrad waehlen:"
print "_-_-_-_-_-_-_-_-_-_-_-_-_-_-"
print "(1) leicht"
print "(2) mittel"
print "(3) schwer"
schwgrad = int(raw_input(" > "))
if schwgrad == 1:
x = random.randint(1,100)
versuche = 10
elif schwgrad == 2:
x = random.randint(1,1000)
versuche = 11
elif schwgrad == 3:
x = random.randint(1,10000)
versuche = 11
else:
print "\nDieser Schwierigkeitsgrad existiert nicht."
continue
# Hier wird die Eingabe ausgewertet. Solange man weniger Versuche hat,
# darf man weiterraten
while versuche != 0:
guess = int(raw_input("Bitte Zahl eingeben: "))
if guess < x:
print "Zu niedrig."
counter += 1
versuche -= 1
elif guess > x:
print "Zu hoch."
counter += 1
versuche -= 1
# Wenn richtig geraten, dann wird man per pickle in die
# Highscoreliste eingetragen.
elif guess == x:
counter += 1
versuche -= 1
print "Super, nach %i Versuchen geschafft!" % counter
name = raw_input("\nBitte Name eingeben: ")
highscore = {name : counter}
f = open("highscore.txt", "a")
pickle.dump(highscore, f)
f.close()
print "Noch einmal versuchen?"
spiel = int(raw_input("(1) Ja\n(2) Nein\n> "))
if spiel == 2:
print "Spiel beendet!"
break
break
if versuche == 0:
print "Leider nicht geschafft!"
print "Noch einmal versuchen?"
spiel = int(raw_input("(1) Ja\n(2) Nein\n> "))
if spiel == 2:
print "Spiel beendet!"
break
# Highscores laden und anzeigen
elif menu == 2:
l = open("highscore.txt")
data = pickle.load(l)
print data
# Spiel beenden
elif menu == 3:
print "\nSpiel wurde beendet."
break
zufall()