Verfasst: 02.09.2006 16:17
... soll heißen das du die Variablen in meine Procedure ändern musst
die Fehlermeldung besagt, dass es sich um die Variablen handelt, die derSTARGÅTE hat geschrieben:... soll heißen das du die Variablen in meine Procedure ändern musst
Code: Alles auswählen
Structure hsc ; Structure+List
name.s
punkte.l
date.l
EndStructure
NewList Score.hsc()
Procedure LoadHighScore() ; Hier wird ein Highscore geladen um bearbeitet zu werden
If ReadFile(0,"HighScores.high") ; Datei in der der Highscore gespeichert wird
For x = 0 To 9 ; Eintrag für eintrag laden
hname.s = ""
For y = 0 To 9 ; Buchstabe für Buchstabe "entschlüsseln"
Word.w = ReadWord()
If Word <> 1
hname.s + Chr(Word/3)
EndIf
Next
AddElement(Score())
Score()\name = hname
Score()\punkte = ReadLong()
Score()\date = ReadLong()
Next
CloseFile(0) ; Zu damit
ProcedureReturn 1
Else
ProcedureReturn 0 ; Misserfolg
EndIf
EndProcedure
Procedure SortHighScore(namei$,pointis) ; Hier kann man einen neuen Eintrag in den zuvor mit LoadHighScore geöffneten Highscore einsortieren
; der Erste Parameter ist der Name, der Zweite die Punktzahl, Rückgabewert ist welcher Platz erreicht wurde
SelectElement(Score(),0)
ForEach Score() ; hier wird der Highscore durchgegangen...
If Score()\punkte < pointis ; ...und bei bedarf einsortiert
If ListIndex(Score()) = 0
ResetList(Score())
Else
PreviousElement(Score())
EndIf
pltz = ListIndex(Score())+2
AddElement(Score())
Score()\name = namei$
Score()\punkte = pointis
Score()\date = Date()
LastElement(Score()) ; Und hier wird das überstehende Element...
DeleteElement(Score()) ; ...gelöscht
Break
EndIf
Next
ProcedureReturn pltz ; Und hier wird der erreichte Platz ausgegeben (0 = kein highscore)
EndProcedure
Procedure SaveHighScore() ; Das hier einfach zum speichern nach Load und Sort Highscore
If CreateFile(0,"HighScores.high") ; Datei in der der Highscore gespeichert wird
For x = 0 To 9 ; 10 Einträge werden gemacht (also 0-9)
SelectElement(Score(),x)
For y = 0 To 9 ; Jeder Eintrag wird ein bisschen Amatörverschlüsselt
If Mid(Score()\name,y+1,1)
WriteWord(Asc(Mid(Score()\name,y+1,1))*3)
Else
WriteWord(1)
EndIf
Next
WriteLong(Score()\punkte) ; Punkte schreiben
WriteLong(Score()\date) ; Datum schreiben
Next
CloseFile(0) ; Zu damit
ProcedureReturn 1
Else
ProcedureReturn 0 ; Misserfolg
EndIf
EndProcedure
Procedure CreateHighScore() ; Zum erstellen oder löschen eines Highscores
If CreateFile(0,"HighScores.high") ; Datei in der der Highscore gespeichert wird
hname.s = "KeyKon" ; Name den jeder Eintrag kriegt (Kann natürlich einfach leer gelassen werden...)
For x = 0 To 9 ; 10 Einträge werden gemacht (also 0-9)
For y = 0 To 9 ; Jeder Eintrag wird ein bisschen Amatörverschlüsselt
If Mid(hname,y+1,1)
WriteWord(Asc(Mid(hname,y+1,1))*3)
Else
WriteWord(1)
EndIf
Next
WriteLong(100-(x*10)) ; Hier kommt hin wieviel Punkte jeder eintrag kriegen soll (Hier mit nach ansteigend von 100 bis 10)
WriteLong(ParseDate("%dd.%mm.%yyyy %hh:%ii","03.06.2005 01:00")) ; Und hier kann man ein Datum reinschreiben, z.B. das erstellungsdatum das spieles als gag oder so...
Next
CloseFile(0) ; Zu damit
ProcedureReturn 1
Else
ProcedureReturn 0 ; Misserfolg
EndIf
EndProcedure