Seite 1 von 1

Highscore?

Verfasst: Mittwoch 16. Juni 2004, 19:51
von Yggdrasil
Und gleich noch ne Frage....
Wie kann ich einen Highscore für ein einfaches Matheübungsprogramm schreiben? Geht das mit open?
Nur versteh ich das mit readline() nicht. :(
Vielen Dank

Re: Highscore?

Verfasst: Mittwoch 16. Juni 2004, 19:53
von NOTZE
Yggdrasil hat geschrieben:Und gleich noch ne Frage....
Wie kann ich einen Highscore für ein einfaches Matheübungsprogramm schreiben? Geht das mit open?
Nur versteh ich das mit readline() nicht. :(
Vielen Dank
Und ich versteh deine frage nicht :?: :?:

Verfasst: Mittwoch 16. Juni 2004, 20:00
von Yggdrasil
Oh...tut mir leid, war wohl ein bischen wirr.
Ich hab ein kleines Rechenübungsprogramm geschrieben bei dem du Punkte bekommst. (Je schneller du bist usw. desto mehr)
Ich würd jetzt gerne meinen Punktestand in einen Highscore eintragen können.
Es gab da auf einer Seite so etwas ähnliches, und da wurde es mit open(Test.txt,r) und readlines() oder so ähnlich gemacht.
Es war aber zu kurz gefasst als dass ich es verstanden hätte.
Kann mir jemand nen Tipp geben?

Verfasst: Mittwoch 16. Juni 2004, 20:30
von Dookie
Hi Yggdrasil,

open ist veraltet, dafür gibts seit 2.0 file. Ich gehe mal davon aus, daß du die Scores intern in einem Dictionary hast.

schreiben einer Datei

Code: Alles auswählen

score = {"Hans" : 100, "Frieda" : 120, "Max" : 80}
f = file("score.txt", "w") # Datei öffnen
for key, value in score.items(): # Schlüssel-Werte-Paare aus Dictionary lesen
    f.write("%s\t%i\n" % (key, value)) # Als String in Datei schreiben
f.close() # Datei schließen
lesen einer Datei

Code: Alles auswählen

score = {}
f = file("score.txt", "r") # Datei öffnen
for line in f: # Jede Zeile der Datei lesen
    data = line.strip().split("\t") # Whitespaces und "\n" am Ende löschen und am "\t" aufsplitten
    score[data[0]] = int(data[1]) # Daten ins Dictionary score einfügen
f.close() # Datei schließen
print score # zum Testen
Gruß

Dookie

Verfasst: Mittwoch 16. Juni 2004, 20:32
von Der Gast
Ich vermute mal, dass du das hier meinst, aber so ganz klar ist mir dein Problem auch nicht.

Hier mal ein Beispiel, wie du einen Wert in eine Datei schreibst:

Code: Alles auswählen

file = open("C:/Test.txt", "w")
highscore = "5"
file.write(highscore)
file.close()
Um den entsprechenden Wert wieder auszulesen, würde ich es dann so machen:

Code: Alles auswählen

file = open("C:/Test.txt")
highscore = file.readline()
file.close()
Vielleicht habe ich ja damit den Nagel auf den Kopf getroffen ;-)

MfG
Der Gast

Verfasst: Mittwoch 16. Juni 2004, 21:20
von Gast
Danke Dookie.....ich glaub ich bin einfach zu doof :lol:
Was meinst du mit: in einem internen Dictionary?
Ich hab die Punkte einfach als eine Variable definiert...

Verfasst: Mittwoch 16. Juni 2004, 21:28
von Dookie
ich dachte du hast da mehrere Leute, die das Programm auf dem gleichen Rechner verwenden. Dann könntest Du die Scores für jeden in einem Dictionary wie bei meinem Beispiel gezeigt speichern. wenns nur eine Variable ist, ists noch einfacher.

Code: Alles auswählen

def write_score(score):
    f = file("score.txt","w")
    f.write(str(score))
    f.close()

def read_score():
    f = file("score.txt", "r")
    score = int(f.read()) # falls score eine Fliesskommazahl ist score = float(f.read())
    f.close()
    return score

Gruß

Dookie

open is file

Verfasst: Freitag 25. Juni 2004, 12:56
von Grögh de Helsen
Dookie hat geschrieben:open ist veraltet, dafür gibts seit 2.0 file.
>>> open is file
True

Verfasst: Freitag 25. Juni 2004, 15:01
von Milan
Hi. Das denkt man so... in Wirklichkeit ist es umgekehrt: die Funktion open gibts nicht mehr und open ist nur noch ein Alias für die Klasse file. Diesen Alias gibt es aber auch nur wegen Abwärtskompatibilität und er kann in späteren Versionen wegrationalisiert werden. So kann so nämlich von file eigene Klassen ableiten, von open in früheren Pythonversionen nicht.

Verfasst: Dienstag 29. Juni 2004, 17:59
von Leonidas
Also wenn dann kommt erstmal DeprecationWarning, bevor es rausgenommen wird.