Highscore erstellen!!
... soll heißen das du die Variablen in meine Procedure ändern musst
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
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
Procedure als Parameter übergeben werden. Im besten Fall muss man also
nur diese ändern.
@St@ndFurz:
Welche PB-Version verwendest Du? Schreib's am besten in Deine Signatur.
Grüße ... Kiffi
a²+b²=mc²
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- KeyKon
- Beiträge: 1412
- Registriert: 10.09.2004 20:51
- Computerausstattung: Laptop: i5 2,8 Ghz, 16GB DDR3 RAM, GeForce 555GT 2GB VRAM
PC: i7 4,3 Ghz, 32GB DDR3 RAM, GeForce 680 GTX 4GB VRAM
Win10 x64 Home/Prof
PB 5.30 (64bit) - Wohnort: Ansbach
- Kontaktdaten:
Hab das Beispiel gefunden is aber PB 3.90 glaub ich, uralt
Ich geb ja zu es ist unübersichtlich, und es ist vielleicht auch nicht die beste Variante, aber es ist dynamisch und mit speichern, laden und mit einem "Leseschutz"...
Ich hoffe du kannst vll was abguggen oder übernehmen...
KeyKon
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
Ich hoffe du kannst vll was abguggen oder übernehmen...
KeyKon
(\/) (°,,,°) (\/)