Highscore - Tool
Verfasst: 09.06.2007 17:12
Ich habe mir für ein Projekt ein Highscore-Tool geschrieben, dass ich hier mal
reinstelle. Ist sicher nicht perfekt, macht aber, was es soll.
Kommentare sind hoffentlich genügend im Code, so dass sich jeder das ganze erweitern kann.
Es ist aber alles drin, was man normalerweise für einen Highscore braucht.
Wer's brauchten kann, bitte sehr
reinstelle. Ist sicher nicht perfekt, macht aber, was es soll.
Kommentare sind hoffentlich genügend im Code, so dass sich jeder das ganze erweitern kann.
Code: Alles auswählen
; HighScore
;
; Original von STARGATE (aus dem deutschen Forum)
; modifiziert und erweitert von michel51 im Juni 2007
;
; erstellt mit Mac PB V.4.00 Beta 1
; getested unter Mac OS X und Windows XP
; Linux nicht getestet, sollte aber gehen, da nur PB-eigene Commands verwendet
;
;
Procedure ShowHighScore(Datei.s)
If OpenWindow(10, 0, 0, 260, 300, "Highscore", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(10))
ListIconGadget(0, 10, 10, 240, 240, "Pos", 50, #PB_ListIcon_GridLines)
AddGadgetColumn(0, 1, "Name", 100)
AddGadgetColumn(0, 2, "Punkte", 60)
If ReadFile(1, Datei)
; ------- Hier gewünschte Schleife aktivieren -----------------
; While Eof(1) = 0 ; es wird alles angezeigt
For I = 1 To 10 ; es werden nur die ersten 10 angezeigt
String.s = ReadString(1)
Name.s = Left(String, 10)
Punkte.s = Mid(String, 11, 5)
pos+1
AddGadgetItem(0, -1, Str(pos)+Chr(10)+Name + Chr(10) + Punkte)
Next ; es werden nur die ersten 10 angezeigt
; Wend ; es wird alles angezeigt
; -------------------------------------------------------------
EndIf
CloseFile(1)
EndIf
EndIf
EndProcedure
Procedure HighScore(Datei.s, Name.s, Punkte.l)
If OpenFile(1, Datei) ; Datei wird geöffnet oder neu angelegt.
If CreateFile(2, "_"+Datei) ; Hilfsdatei erzeugen
; ------- Hier gewünschte Schleife aktivieren -----------------
; Repeat ; Alle werden gespeichert
For i = 1 To 10 ; nur die ersten 10 - 11 Besten
String.s = ReadString(1)
HS_Punkte = Val(Trim(Mid(String, 11, 10)))
If HS_Punkte < Punkte And Eingetragen = 0: ; vergleichen und richtig einsortieren
WriteStringN(2, LSet(name, 10, " ")+" "+Str(Punkte))
Eingetragen = 1
EndIf
WriteStringN(2, String)
Next ; Nur die ersten 10 - 11 Besten
; Until String = "" ; Alle werden gespeichert
; -------------------------------------------------------------
CloseFile(2)
EndIf
CloseFile(1)
EndIf
CopyFile("_"+Datei, Datei)
DeleteFile("_"+Datei) ; fertig, Highscoreliste ist gespeichert
EndProcedure
;
HSFile.s = "HScore.score"
; der Datei-Name sollte nach eigenem Geschmack angepasst werden
;
; Beispielaufrufe
HighScore(HSFile, "Test 1", 23)
HighScore(HSFile, "martin", 4)
HighScore(HSFile, "Stargate", 124)
HighScore(HSFile, "LOL", 1)
HighScore(HSFile, "baum", 2341)
HighScore(HSFile, "Namesehrlang", 55) ; überlanger Name
HighScore(HSFile, "Klaus", 198)
ShowHighScore(HSFile) ; ... und mal anzeigen
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
End
Wer's brauchten kann, bitte sehr
