Highscore liste für Blitz Basic

Übersicht BlitzBasic FAQ und Tutorials

Neue Antwort erstellen

bruce185

Betreff: Highscore liste für Blitz Basic

BeitragDi, Dez 20, 2005 6:51
Antworten mit Zitat
Benutzer-Profile anzeigen
hi,
für die jenigen die probleme mit dem Highscore im Spiel haben so wie ich Sad

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

BeitragMo, Jan 09, 2006 13:23
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Jan 09, 2006 13:26
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Jan 09, 2006 22:18
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jan 10, 2006 23:40
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDi, Jan 17, 2006 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
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
 

Ava

Gast

BeitragDi, Jan 17, 2006 16:06
Antworten mit Zitat
Wenn Du etwas nicht überschreiben willst, dann musst Du es halt vorher überprüfen und ggf. dann lassen... Rolling Eyes
 

Belekamus

BeitragDo, Jan 19, 2006 12:16
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Jun 03, 2006 1:14
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Very Happy

Gruss Andreas

TheMatrix

BeitragDo, Sep 21, 2006 11:26
Antworten mit Zitat
Benutzer-Profile anzeigen
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

 Print
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

BeitragFr, Aug 29, 2008 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragFr, Aug 29, 2008 19:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Guck mal aufs Datum Wink
MFG Blackside
Hier sollte eigentlich eine Signatur stehen!

orpheus_2003

BeitragFr, Aug 29, 2008 23:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Und.
Jetzt soll ich mir was denken? Shocked

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?

Cool

PS: GazerStar hat nun den Highscore richtig implementiert.
Link siehe unten.....
GazerStar - the beginning
http://gazerstar.lexigame.de/
Wizard (Worktitel)
http://wizard.lexigame.de

Neue Antwort erstellen


Übersicht BlitzBasic FAQ und Tutorials

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group