Highscore liste für Blitz Basic
Übersicht

![]() |
bruce185Betreff: Highscore liste für Blitz Basic |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi,
für die jenigen die probleme mit dem Highscore im Spiel haben so wie ich ![]() ich habe ein bisschen gegoogelt und sofort eine web seite gefunden in dem Die Highscore liste erklärt wird, ist eigentlich ausführlich beschrieben: hier ist der link: http://www.funforge.org/Tutori...Einleitung andreas |
||
Belekamus |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi,
jo ist echt supi! bei mir klappt auch alles, bis auf eines: wenn der spieler z.b. rein theoretisch platz 5 erreicht, werden auch alle nachfolgenden anderen plätze , wie 6. , 7. usw. , mit dem gleichen namen und punktestand überschrieben. ich weiss, das ich ihm irgendwie begreiflich machen muss, das er nur die position überschreiben soll, die der spieler auch erreicht hat, aber wie? kann mir da jemand helfen bitte? |
||
![]() |
Hummelpups |
![]() Antworten mit Zitat ![]() |
---|---|---|
Toll die Leute, die keinerlei Quelltext zur verfügung stellen und
Hilfe erwarten ^^ IMurDOOM |
||
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus |
![]() |
otta |
![]() Antworten mit Zitat ![]() |
---|---|---|
IMurDOOM hat Folgendes geschrieben: Toll die Leute, die keinerlei Quelltext zur verfügung stellen und
Hilfe erwarten ^^ IMurDOOM Ich nehme an das er den Quelltext aus dem obigen Tutorila nutzt und dort ist der gesammte Quelltext der Highscore enthalten. |
||
AthlonXP 2800+, Radeon 9600XT,160GBHDD,512 MB DDR Ram (neuer Rechner neues Glück;))
Aktuelles Projekt: momentan Projektlos |
Belekamus |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
richtig , aber nagut mach ich es halt nochmal
Code: [AUSKLAPPEN] ;Highscore laden
Function HighScoreLoad() Datei = ReadFile("Highscore.dat") ;Wenn Liste fehlt, eine neue Blancoliste erstellen If Datei = 0 Then For i = 1 To 10 points(i) = i*100: names$(i) = "Belekamus " + i Next HighScoreSort() ;Liste sortieren EndIf ;Liste laden (falls vorhanden) If Not Datei = 0 Then For i = 1 To 10 names$(i) = ReadLine(Datei) points(i) = ReadLine(Datei) Next CloseFile Datei ;Datei schließen EndIf End Function ;Highscore speichern Function HighScoreSave() Datei = WriteFile("Highscore.dat") For i = 1 To 10 WriteLine Datei, names$(i) WriteLine Datei, points(i) Next CloseFile Datei End Function ;Highscore sortieren Function HighScoreSort() For I = 1 To 11 For J = I To 11 If points(I) < points(J) Then ; "<" = größter zuerst bzw ">" = kleinster zuerst MerkerA = points(I) : points(I) = points(J) : points(J) = MerkerA MerkerB$ = names$(I) : names$(I) = names$(J) : names$(J) = MerkerB$ EndIf Next Next End Function ;Highscore eingeben Function HighScoreInput() ;s.spieler = First spieler ;HighScoreView() ;HighScore Platzierung ermitteln For i = 11 To 1 Step - 1 ;If s\Punkte > points(i) Then HighScorePlatz = i If punkte > points(i) Then HighScorePlatz = i Next If HighScorePlatz = 0 Then HighscorePlatz = 11 ;kein Highscore erreicht If HighscorePlatz = 11 Then ;kein Highscoreplatz erreicht highscore ;Zum Hauptmenü und Score anzeigen EndIf ;Neuen Highscore eingeben If HighScorePlatz < 11 Then ;Color 0,0,0 Rect 80, 200+(HighScorePlatz*19), 200, 20 ;Color 200,200,200 ;Text 265-(Len(s\Punkte)*8), 200+(HighScorePlatz*19), s\Punkte ; Punkte anzeigen ;Text 265-(Len(punkte)*8), 200+(HighScorePlatz*19), punkte ;Flip 1 ; Double Buffering! ;Color 255,255,255 ;Locate 95, 200+(HighScorePlatz*19) names$(11) = name points(11) = punkte HighScoreSort() HighScoreSave() EndIf End Function Function highscore() Repeat Cls TileImage hinter DrawImage zurueckg, 430,700 DrawImage highscoresr, 430,300 DrawImage cursor, MouseX(),MouseY() Color 255,255,255 ; Namen For i = 1 To 9 Text 410, 350+(i*19), i + ". " + names$(i) Next Text 402, 350+190, "10. " + names$(10) ; Punkte For i = 1 To 10 Text 600-(Len(points(i))*8), 350+(i*19), points(i) Next If leben=0 Text 380, 600, "Deine ebend erreichten Punkte: " + punkte EndIf Flip Until MouseHit(1) And ImageRectCollide(zurueckg,430,700,0,MouseX(),MouseY(),1,1) hauptmenue End Function so, wie gesagt , funzt fast einwandfrei die highscore, musste etwas ändern, weil ich keine types benutze, wie dem auch sei, kleines problem halt, das er immer auch alle anderen bisher erreichten punkte überschreibt.... ich bitte nochmals um hilfe! mfg belekamus |
||
Belekamus |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
sorry wegen doppelpost,aber kann mir da keiner helfen bitte?
mfg bele edit: hab schon mehere sachen ausprobiert,aber komme nicht weiter |
||
Wir werden vielen Steinen auf unserem Weg begegnen und es liegt an uns, ob wir daraus Brücken oder Mauern bauen!
www.lemedia.de.vu |
AvaGast |
![]() Antworten mit Zitat |
|
---|---|---|
Wenn Du etwas nicht überschreiben willst, dann musst Du es halt vorher überprüfen und ggf. dann lassen... ![]() |
||
Belekamus |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] Function HighScoreLoad()
Datei = ReadFile("Highscore.dat") ;Wenn Liste fehlt, eine neue Blancoliste erstellen If Datei = 0 Then For i = 1 To 10 points(i) = i*100: names$(i) = "Belekamus " + i Next HighScoreSort() ;Liste sortieren EndIf ;Liste laden (falls vorhanden) If Not Datei = 0 Then For i = 1 To 10 names$(i) = ReadLine(Datei) points(i) = ReadLine(Datei) Next CloseFile Datei ;Datei schließen EndIf End Function ;Highscore speichern Function HighScoreSave() Datei = WriteFile("Highscore.dat") For i = 1 To 10 WriteLine Datei, names$(i) WriteLine Datei, points(i) Next CloseFile Datei End Function ;Highscore sortieren Function HighScoreSort() For I = 1 To 11 For J = I To 11 If points(I) < points(J) Then MerkerA = points(I) : points(I) = points(J) : points(J) = MerkerA MerkerB$ = names$(I) : names$(I) = names$(J) : names$(J) = MerkerB$ EndIf Next Next End Function ;Highscore eingeben Function HighScoreInput() For i = 11 To 1 Step - 1 If punkte > points(i) Then HighScorePlatz = i Next If HighScorePlatz = 0 Then HighscorePlatz = 11 If HighscorePlatz = 11 Then highscore EndIf ;Neuen Highscore eingeben If HighScorePlatz < 11 Then names$(11) = name$ points(11) = punkte HighScoreSort() HighScoreSave() EndIf End Function Function highscore() Repeat Cls TileImage hinter DrawImage banner, 220,50 DrawImage zurueckg, 430,700 DrawImage highscoresr, 430,300 DrawImage cursor, MouseX(),MouseY() Color 255,255,255 ; Namen For i = 1 To 9 Text 410, 350+(i*19), i + ". " + names$(i) Next Text 402, 350+190, "10. " + names$(10) ; Punkte For i = 1 To 10 Text 600-(Len(points(i))*8 ), 350+(i*19), points(i) Next If leben=0 Text 380, 600, "Deine ebend erreichten Punkte: " + punkte EndIf Flip Until MouseHit(1) And ImageRectCollide(zurueckg,430,700,0,MouseX(),MouseY(),1,1) hauptmenue End Function hm , das hilft mir leider gar nicht weiter....kannste das bitt etwas konkretisieren? in der funktion highscoreinput wird doch eigentlich die genau erreichte platzierung ermittelt, diese wird dann aufgrund der If HighScorePlatz < 11 Then names$(11) = name$ points(11) = punkte HighScoreSort() HighScoreSave() bedingung in die liste übernommen,sortiert und gespeichert, tja und weiter weiss ich nicht. wie gesagt hab schon meheres probiert, aber finde den fehler weiterhin nicht. danke trotzdem schonmal für deine hilfe ava. mfg bele |
||
Wir werden vielen Steinen auf unserem Weg begegnen und es liegt an uns, ob wir daraus Brücken oder Mauern bauen!
www.lemedia.de.vu |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
sry für die späte antwort, ich hatte im moment sehr viel zu tun -.-
also ich schreibe jetzt mal ein eigenes Highscore liste: Code: [AUSKLAPPEN] Graphics 640,480
SetBuffer BackBuffer() ;Highscore liste mit 10 einträgen da ;die 11 für das sortieren benötigt wird Dim Name$(11) Dim Score(11) ;beim ersten start wird die Highscore liste ;geladen und anschließend Sortiert HighscoreLoad() HighscoreSort() Repeat Cls ;Highscore liste anzeigen HighscoreView() ;Leertaste Drücken um Punkte und Name einzugeben If KeyHit(57) Then Locate 34,240 Punkte = Input("Punkte eingeben: ") ;wenn die Punkte grösser sind die du grad eingegeben ;hast, dann dein Name eingeben If Punkte > Score(10) Then Score(11) = Punkte ;Die Punkte der liste übergeben Locate 34,260 Eingabe$ = Input("Name eingeben: ") Name(11) = LSet(Eingabe$, 15) ;Den Name der liste übergeben, es werden nur max. 15 zeichen gespeichert HighscoreSort() ;Highscore sortieren HighscoreSave() ;Highscore speichern EndIf EndIf Flip Until KeyHit(1) End ;--- Highscore anzeigen --- Function HighscoreView() For i=1 To 10 If i < 10 Then Text 40,(i*20)+20, i If i > 9 Then Text 32,(i*20)+20, i Text 60,(i*20)+20,Name$(i) Text 200,(i*20)+20,Score(i) Next End Function ;--- Highscore laden --- Function HighscoreLoad() ;Highscore Datei lesen Datei = ReadFile("Highscore.txt") ;Highscore erstellen If Datei = 0 Then For i=1 To 10 Name$(i) = "Leer" Score(i) = i*10 Next EndIf ;Highscore laden falls vorhanden If Not Datei = 0 Then For i=1 To 10 Name$(i) = ReadLine(Datei) Score(i) = ReadLine(Datei) Next CloseFile Datei EndIf End Function ;--- Highscore speichern Function HighscoreSave() Datei = WriteFile("Highscore.txt") For i=1 To 10 WriteLine Datei, Name$(i) WriteLine Datei, Score(i) Next CloseFile Datei End Function ;--- Highscore sortieren Function HighscoreSort() For I=1 To 11 For J=I To 11 ;Grössere Punkte zuerst If Score(I) < Score(J) Then MerkerA = Score(I) : Score(I) = Score(J) : Score(J) = MerkerA MerkerB$ = Name$(I) : Name$(I) = Name$(J) : Name$(J) = MerkerB$ EndIf Next Next End Function also wenn man die Leertaste drückt, dann kann man eine beliebige Zahl eingeben, ist die Zahl grösser als die Punkte in Highscore Liste, dann muss man noch seinen Namen eingeben, dann wird der Name und die Zahl in Highscore eingetragen und dann Wird die Highscore Liste sortiert und gespeichert, und man sieht dann auch schon sein Name und die Punkte in der Liste ![]() Gruss Andreas |
||
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab da auch nochmal einen Highscore betrachter geschrieben. Durch die Funktion ' load_highscore' wird die Highscore in Dim Variabeln 'high_name$(n)' und 'high_score(n)' geschrieben(Es handelt sich hierbei natürlich um den Namen, sowie der Punktestand).
Durch die Funktion 'save_highscore' wird die Highscore wieder abgespeichert. Der Code: [AUSKLAPPEN] Global max_eintrag = 20 Dim high_name$(max_eintrag) Dim high_score(max_eintrag) Repeat SeedRnd(MilliSecs()) punkte = Rnd(1000,12000) ; Per Zufall ein Punktestand geben(nur zum testen) Print "--------------------------------------------------------" Print "Deine Punkte:"+punkte dein_name$ = Input$("Bitte Name angeben:") save_highscore(dein_name$,punkte) For a=1 To max_eintrag ; Die Highscore ausgaben(Im Graphicmodus Text natürlich verwenden) Print high_name$(a)+" "+high_score(a) Next Forever Function save_highscore(name$,score) load_highscore ; Highscore laden For eintrag=1 To max_eintrag If score>=high_score(eintrag) ; Wenn die Punkte Größer als der Eintrag ist For neu=max_eintrag To eintrag+1 Step -1 ; Von dort aus neu einfügen high_name$(neu)=high_name$(neu-1) ; Und alte Werte um ein nachunten sortieren high_score(neu)=high_score(neu-1) Next high_name$(eintrag)=name$ ; Die Punkte an Position 'eintrag' neu hineinschreiben high_score(eintrag)=score Exit End If Next f = WriteFile("highscore.dat") ; Punkte sowie Namen speichern For eintrag=1 To max_eintrag WriteString(f,high_name$(eintrag)) WriteInt(f,high_score(eintrag)) Next CloseFile f End Function Function load_highscore() If FileType("highscore.dat") ; Punkte laden f = ReadFile("highscore.dat") For eintrag=1 To max_eintrag high_name$(eintrag)=ReadString$(f) high_score(eintrag)=ReadInt(f) Next End If CloseFile f End Function Ich hoffe das reicht für deine Anforderungen. Bei Verständnisproblemen, einfach fragen. Mfg, TheMatrix |
||
°_° °.° °~° °v° .. -.- |
![]() |
orpheus_2003 |
![]() Antworten mit Zitat ![]() |
---|---|---|
bruce85 hat Folgendes geschrieben: Code: [AUSKLAPPEN] Graphics 640,480
SetBuffer BackBuffer() ;Highscore liste mit 10 einträgen da ;die 11 für das sortieren benötigt wird Dim Name$(11) Dim Score(11) ;beim ersten start wird die Highscore liste ;geladen und anschließend Sortiert HighscoreLoad() HighscoreSort() Repeat Cls ;Highscore liste anzeigen HighscoreView() ;Leertaste Drücken um Punkte und Name einzugeben If KeyHit(57) Then Locate 34,240 Punkte = Input("Punkte eingeben: ") ;wenn die Punkte grösser sind die du grad eingegeben ;hast, dann dein Name eingeben If Punkte > Score(10) Then Score(11) = Punkte ;Die Punkte der liste übergeben Locate 34,260 Eingabe$ = Input("Name eingeben: ") Name(11) = LSet(Eingabe$, 15) ;Den Name der liste übergeben, es werden nur max. 15 zeichen gespeichert HighscoreSort() ;Highscore sortieren HighscoreSave() ;Highscore speichern EndIf EndIf Flip Until KeyHit(1) End ;--- Highscore anzeigen --- Function HighscoreView() For i=1 To 10 If i < 10 Then Text 40,(i*20)+20, i If i > 9 Then Text 32,(i*20)+20, i Text 60,(i*20)+20,Name$(i) Text 200,(i*20)+20,Score(i) Next End Function ;--- Highscore laden --- Function HighscoreLoad() ;Highscore Datei lesen Datei = ReadFile("Highscore.txt") ;Highscore erstellen If Datei = 0 Then For i=1 To 10 Name$(i) = "Leer" Score(i) = i*10 Next EndIf ;Highscore laden falls vorhanden If Not Datei = 0 Then For i=1 To 10 Name$(i) = ReadLine(Datei) Score(i) = ReadLine(Datei) Next CloseFile Datei EndIf End Function ;--- Highscore speichern Function HighscoreSave() Datei = WriteFile("Highscore.txt") For i=1 To 10 WriteLine Datei, Name$(i) WriteLine Datei, Score(i) Next CloseFile Datei End Function ;--- Highscore sortieren Function HighscoreSort() For I=1 To 11 For J=I To 11 ;Grössere Punkte zuerst If Score(I) < Score(J) Then MerkerA = Score(I) : Score(I) = Score(J) : Score(J) = MerkerA MerkerB$ = Name$(I) : Name$(I) = Name$(J) : Name$(J) = MerkerB$ EndIf Next Next End Function Hi. Danke. Dein Code hat mir sehr geholfen. Mit den Merken. Toll. Allerdings ist ein kleiner Fehler drin. Es muss heißen: Name$(11) Code: [AUSKLAPPEN] ;Leertaste Drücken um Punkte und Name einzugeben If KeyHit(57) Then Locate 34,240 Punkte = Input("Punkte eingeben: ") ;wenn die Punkte grösser sind die du grad eingegeben ;hast, dann dein Name eingeben If Punkte > Score(10) Then Score(11) = Punkte ;Die Punkte der liste übergeben Locate 34,260 Eingabe$ = Input("Name eingeben: ") Name$(11) = LSet(Eingabe$, 15) ;Den Name der liste übergeben, es werden nur max. 15 zeichen gespeichert HighscoreSort() ;Highscore sortieren HighscoreSave() ;Highscore speichern EndIf EndIf |
||
GazerStar - the beginning
http://gazerstar.lexigame.de/ Wizard (Worktitel) http://wizard.lexigame.de |
![]() |
Blackside |
![]() Antworten mit Zitat ![]() |
---|---|---|
Guck mal aufs Datum ![]() MFG Blackside |
||
Hier sollte eigentlich eine Signatur stehen! |
![]() |
orpheus_2003 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Und.
Jetzt soll ich mir was denken? ![]() Wenn ein Fehler drin ist. Und ich es gerade brauchen konnte! Hab mir alle anderen Codes auch angeschaut und der war der beste. Also reporte ich auch den Fehler. Sind wir eine Community oder nicht? ![]() PS: GazerStar hat nun den Highscore richtig implementiert. Link siehe unten..... |
||
GazerStar - the beginning
http://gazerstar.lexigame.de/ Wizard (Worktitel) http://wizard.lexigame.de |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group