Higscore
-
- Beiträge: 8
- Registriert: 09.03.2005 14:42
Higscore
also erstmal hi war shon mal hier angemeldet aber is ne weile her!
weis auch net ob higscore richtig geschreibven ist!
wolte nur wisenwie und mit welchen befehlen ich den so progen kanndas der higscor in ner extr datei gespeichert wird das programm die datei aber selbst anlgen kann und auch selbständig nach jeden spiel aktualisirt!
mfg Panter
weis auch net ob higscore richtig geschreibven ist!
wolte nur wisenwie und mit welchen befehlen ich den so progen kanndas der higscor in ner extr datei gespeichert wird das programm die datei aber selbst anlgen kann und auch selbständig nach jeden spiel aktualisirt!
mfg Panter
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
-
- Beiträge: 8
- Registriert: 09.03.2005 14:42
In der Hilfe gibt es ein Beispiel:
Code: Alles auswählen
If CreatePreferences("Preferences.prefs")
PreferenceGroup("Global")
WritePreferenceString("ApplicationName", "MP3 Player")
WritePreferenceString("Version", "1.1b")
PreferenceComment(" This is the Window dimension")
PreferenceComment("")
PreferenceGroup("Window")
WritePreferenceLong ("WindowX", 123)
WritePreferenceLong ("WindowY", 124)
WritePreferenceFloat("WindowZ", -125.5)
ClosePreferences()
EndIf
OpenPreferences("Preferences.prefs")
PreferenceGroup("Window")
Debug ReadPreferenceLong ("WindowX", 0)
Debug ReadPreferenceLong ("WindowY", 0)
Debug ReadPreferenceFloat("WindowZ", 0)
PreferenceGroup("Global")
Debug ReadPreferenceString("ApplicationName", "")
Debug ReadPreferenceString("Version", "")
ClosePreferences()
- Hroudtwolf
- Beiträge: 1416
- Registriert: 30.10.2004 23:33
- Kontaktdaten:
Hier mal ein Beispiel zum Punkte speichern.
Reinschreiben:
Auslesen:
Reinschreiben:
Code: Alles auswählen
Dim Famous$(10),scores(10)
if CreatePreferences ("highscores.dat")
for x=1 to 10
PrefenceGroup (str(x))
WritePreferenceString("spieler", famous$(x))
WritePreferenceLong("punkte", fscores$(x))
next x
closepreferences ()
endif
Code: Alles auswählen
Dim Famous$(10),scores(10)
if openpreferences ("highscores.dat")
for x=1 to 10
PrefenceGroup (str(x))
famous(x)=ReadPreferenceString("spieler","Leer")
Scores(x)=ReadPreferenceLong("punkte", 0)
next x
closepreferences ()
endif
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
entspricht nicht unbedingt meiner erfahrung...PaulchenPanter24 hat geschrieben:wäre es möglich mir ein beispiel zu zeigen so lernt man immer noch am besten
ich erklär dir einfach mal die herangehensweise.
du überlegst dir, wie du die highscore abspeichern willst.
wenn du nur eine einzige zahl speichern willst,
dann bewahrst du sie zur laufzeit in einer variable auf, die aktualisiert wird,
wenn der player eine höhere score erreicht.
wenn jetzt die highscore aktualisiert wird, dann speicherst du sie auch:
Code: Alles auswählen
If Score > Highscore
Highscore = Score
CreateFile(1,"HScore.dat")
WriteLong(Highscore)
CloseFile(1)
EndIf
Code: Alles auswählen
If ReadFile(1,"HScore.dat")
Highscore = ReadLong()
CloseFile(1)
EndIf
die Dateinamenerweiterung ".dat" ist völlig willkürlich, du kannst nehmen was du willst.
wenn du den namen der spielers dazuspeichern willst, musst du eben auch noch einen string dabei haben.
und wenn du einen Highscore-Table verarbeiten willst, musst du halt Arrays benutzen.
ob du dann zwei Arrays, eins Strings, eins Longs verwendest,
oder ob du dafür eine Structure erzeugst, bleibt dir überlassen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
- Beiträge: 8
- Registriert: 09.03.2005 14:42
Hi
Ich habe für mein Spiel mal nen Highscore geproggt. Ist (als Faulheitsgründen mit gadgets realisiert.)
Immerhin (Boahh Eyy) ist die Datei dann (primitiv) verschlüsselt.
Braucht die RC4-Lib zum compilen.
Es fehlen vermutlich ein paar Konstanten (für die Gadgets, aber die kannst Du dir ja selbst zusammensuchen. Ansonsten sollte alles drin sein.
Vielleicht hilft es Dir ja etwas...
Ich habe für mein Spiel mal nen Highscore geproggt. Ist (als Faulheitsgründen mit gadgets realisiert.)
Immerhin (Boahh Eyy) ist die Datei dann (primitiv) verschlüsselt.
Braucht die RC4-Lib zum compilen.
Code: Alles auswählen
; HighScoreList
#PO_HighScore_ListItems = 15 :;anz Einträge highscorelist
#PO_HighScore_MaxChar = 15 ;# char pro name in highscoreliste
#FileTemp = 1
; Filename für HighscoreList
Global HighScore_FileName.s
HighScore_FileName = "scorelist.po" ;Filename für highscoreliste
;Structure für Highscoredaten
Structure hsc
Name.s
pts.l
EndStructure
Dim HighScore.hsc(#PO_HighScore_ListItems)
Procedure Show_Highscore(Player_nr.l)
; zeigt den Higscore-Screen. Wenn Wertung = 1, dann können sich der / die Spieler eintragen, wenn die Punkte ausreichend sind.
Entry.l = 0 ; definiert den Platz, den der Spieler gemacht hat (so er das hat ...)
AppName.s = "Manager"
If OpenWindow(#WND_HighScore, 0, 0, 1024, 768, #PB_Window_BorderLess , "HighScore")
If CreateGadgetList(WindowID())
Dim HighScore.hsc(#PO_HighScore_ListItems + 1)
;Debug "pfad: " + Ownpath + HighScore_FileName
RC4_DecryptBinaryFile(Ownpath + HighScore_FileName, Ownpath + "tmp.txt", AppName) ; decodiere die Liste
DeleteFile(Ownpath + HighScore_FileName) ; das Original löschen
If ReadFile(#FileTemp, Ownpath + "tmp.txt")
; ; lese die Daten in das Array ein
For x = 1 To #PO_HighScore_ListItems
HighScore(x)\Name = ReadString()
HighScore(x)\pts = ReadLong()
; Debug "data file" + Str(x) + " - " + HighScore(x)\Name+ Str(HighScore(x)\pts)
Next
CloseFile(#FileTemp)
DeleteFile(Ownpath + "tmp.txt") ; das temp-file löschen
Else
Restore HighScoreInit
For x = 1 To #PO_HighScore_ListItems
Read HighScore(x)\Name
Read HighScore(x)\pts
; Debug "data read" + Str(x) + " - " + HighScore(x)\Name+ Str(HighScore(x)\pts)
Next
EndIf
For x = 1 To #PO_HighScore_ListItems ; die entsprechende Anzahl Gadgets estellen
StringGadget(7000 + x, 412, 200 + x * 25, 200, 18, HighScore(x)\Name)
TextGadget(7100 + x, 650, 200 + x * 25, 50, 18, Str(HighScore(x)\pts))
DisableGadget(7000 + x, 1) ; alle String-gadgets abschalten
Next
ButtonGadget(#MNG_Start_OK, 940, 735, 74, 23, "OK")
If Player_nr > 0
; checken ob Spieler auf die Liste kommt
Debug "player(Player_nr)\Siegpunkte " + Str(x) + ": " + Str(Player(Player_nr)\Siegpunkte)
If Player(Player_nr)\Siegpunkte > HighScore(#PO_HighScore_ListItems)\pts ; wenn mehr als der niedrigste ...
For y = 1 To #PO_HighScore_ListItems ; wo kommt der spieler rein?
If Player(Player_nr)\Siegpunkte > HighScore(y)\pts
Entry = y
DisableGadget(7000 + Entry, 0) ; gadget anschalten
Debug "entry: " + Str(Entry)
Break
EndIf
Next
EndIf
If Entry > 0 And Entry <= #PO_HighScore_ListItems ; braucht es diese Abfrage überhaupt
; liste an dieser Stelle 1 nach unten rutschen
For y = #PO_HighScore_ListItems - 1 To Entry
HighScore(y+1)\Name = HighScore(y)\Name
HighScore(y+1)\pts = HighScore(y)\pts
Next
HighScore(Entry)\Name = Player(Player_nr)\Name
HighScore(Entry)\pts = Player(Player_nr)\Siegpunkte
; die daten neu setzen
For x = 1 To #PO_HighScore_ListItems
SetGadgetText(7000 + x, HighScore(x)\Name)
SetGadgetText(7100 + x, Str(HighScore(x)\pts))
Next
EndIf
EndIf
Repeat
Event = WaitWindowEvent()
If Event = #PB_EventGadget
GadgetID = EventGadgetID()
If GadgetID = #MNG_Start_OK
Event = #PB_EventCloseWindow
EndIf
EndIf
Until Event = #PB_EventCloseWindow
; den evtl. geänderten Datesatz zurückschreiben
If Entry > 0
HighScore(Entry)\Name = GetGadgetText(7000 + Entry)
EndIf
CloseWindow(#WND_HighScore)
Event = 0 ; nur dieses Fenster
; die Daten zurückschreiben
If Player_nr And Entry
; speichere die Liste
If CreateFile(#FileTemp, Ownpath + HighScore_FileName)
If CreateFile(#FileTemp, Ownpath + "tmp.txt")
; speichere die Daten
For x = 1 To #PO_HighScore_ListItems
WriteStringN(HighScore(x)\Name)
WriteLong(HighScore(x)\pts)
Next
EndIf
CloseFile(#FileTemp)
; datei codieren
If RC4_CryptBinaryFile(Ownpath + "tmp.txt", Ownpath + HighScore_FileName, AppName)
; Datei verstecken
SetFileAttributes_(Ownpath + HighScore_FileName, #FILE_ATTRIBUTE_HIDDEN)
EndIf
DeleteFile(Ownpath + "tmp.txt") ; das temp-file löschen
EndIf
EndIf
EndIf
EndIf
EndProcedure
Vielleicht hilft es Dir ja etwas...