Highscore liste funktioniert nicht. Benötige dringend Hilfe!

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Desantes

Betreff: Highscore liste funktioniert nicht. Benötige dringend Hilfe!

BeitragSa, Feb 14, 2004 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Folgendes,
ich hatte mich vor einigen tagen schon mal hier zu Wort gemeldet und ich war übberascht wie schnell und fachkundig hier einem geholfen wird.
Nun hoffe ich das mir wieder jemand aus der Klemme helfen kann.

Ich habe in mein erstes eigens Programmiertes Spiel nun eine Highscore tabelle angehängt, nur das ich das Problem habe das er mir in der Highscore immer alles überschreibt und nicht den Spieler mit der Höchsten Punktzahl an 1. Stelle anzeigt.

Vielleicht weiß ja einer von euch die Lösung?


Code: [AUSKLAPPEN]
;Start Menü

Global Spielerpunkte,Computerpunkte,spielername$


SetBuffer BackBuffer()

Graphics 640,480,16,2

Dim Punkte(10)
Dim Namen(10)
Hintergrund = LoadImage("Startbild.bmp") ;Zuweisen des Hintergrundbildes

DrawImage Hintergrund,Hintergrund_y,Hintergrund_x  ;Starten des Hintergrundbildes
Global S%=Spielerpunkte
While Not KeyHit(1)

If KeyDown(2) Then Spiel
If KeyDown (1) Then Menü
If KeyDown (5) Then End




Wend





;Das eigentliche Spiel

Function Spiel()

Graphics 640,480,16,2 ;Grafik und Auflösung

AppTitle "Pong" ;Titel

SetBuffer BackBuffer() ; Buffer für die Grafik

BAll = LoadImage("Ball.bmp") ; zuweisen der Bilder
Computer=LoadImage ("Schläger.bmp")
Spieler=LoadImage("Schläger.bmp")

Spieler_x=30 ;Variable und Position des Spielers
Spieler_y=400


Computer_x=600    ;Variable und position des Computers
Computer_y=420


SpeedX = 7  ; Anfangsgeschwindigkeit
SpeedY = 7

BAll_x = 50  ; Ball Position
BAll_y = 100


While Not KeyHit(1) ;Ende des Spieles durch drücken von ESC



If  KeyDown (200) ;Schläger bewegung des Spielers
     Spieler_y=Spieler_y-4
       If Spieler_y<0 Then Spieler_y=0
EndIf

If  KeyDown (208)
    Spieler_y=Spieler_y+4
       If Spieler_y>400 Then Spieler_y=400
EndIf

; Collison zwischen Schläger und Ball
If ImagesCollide(Spieler,Spieler_x,Spieler_y,0,BAll,Ball_x,Ball_y,0) Then SpeedX= SpeedX-(2*SpeedX)
If ImagesCollide(BAll,Ball_x,Ball_y,0,Computer,Computer_x,Computer_y,0) Then SpeedX= SpeedX-(2*SpeedX)

If BAll_x>600 Then Spielerpunkte=Spielerpunkte+1 ; Punktezähler des Players   
If Ball_x<1 Then Computerpunkte=Computerpunkte+10 ; Punktezähler des Computer

 


If Computer_y>400 Then Computer_y=400 ; Bewegungsende des Computer
If Computer_y<0 Then Computer_y=0     ; Nicht über den Rand hinaus gehen


If Ball_y>Computer_y Then                ;
   If random = 1 Then Computer_y=Computer_y 
Else Computer_y=Computer_y-Rand(4,10)                     
EndIf

If Ball_y<Computer_y Then 
   If random = 1 Then Computer_y = Computer_y
Else Computer_y=Computer_y+Rand(4,10)   
EndIf

Cls

 

; Laden des Designs für den Ball
DrawImage Ball,Ball_x,Ball_y

;Collsion mit den Rändern oder dem BAll
If Ball_x<1 Or Ball_x>GraphicsWidth()-40 Then Ball_x=Rand(50,300) Ball_y=Rand(60,400) VelX=Rand(5,8) VelY=Rand(5,8)   
If Ball_y<1 Or Ball_y>GraphicsHeight()-40 Then SpeedY =- SpeedY

;Modernisieren der Ball position
Ball_x = BAll_x + SpeedX
Ball_y = Ball_y + SpeedY

DrawImage Spieler,Spieler_x,Spieler_y ; Design des Spielers

DrawImage Computer,Computer_x,Computer_y    ; Design des Computer

; Tabellen Position
Text 300,0,Spielerpunkte,1 
Text 340,0,Computerpunkte,1

; Tabellen Text
Locate 220,1
Print "Player"

Locate 370,1
Print"Hall 3000"

Locate 300,200
Print Spielerpunkte



   If  Computerpunkte=30 Then Name     ;Spielende bei 1 Ball im aus


; Buffer
Flip
Wend ; Wiederholung der While Schleife()


End Function






;Spielende und Namenseingabe für die Highscore


Function Name() ; Function der Namenseingabe
FlushKeys()
Graphics 640,480,16,2
SetBuffer  BackBuffer()

Name=LoadImage ("Nameneingabe.bmp")
         ; Spielerpunkte Übergabe

DrawImage Name, Name_x, Name_y


Locate 200,350            ;Namenseingabe
spielername$ = Input(" ")    ;Variablenname des Spielers

If KeyDown (28) Then Highscore
               ; Spielende - Sprung aus der Schleife (muß später versetzt werden)
                  
                  
 
End Function


; Function des Hauptmenüs
Function Menü()

SetBuffer BackBuffer()

Graphics 640,480,16,2

Hintergrund = LoadImage("Startbild.bmp") ;Laden des Startbilschirmes

DrawImage Hintergrund,Hintergrund_y,Hintergrund_x

While Not KeyHit(1)


If KeyDown(2) Then Spiel
If KeyDown (1) Then Menü
If KeyDown (5) Then End

Wend

End Function



;Highscoreliste

Function Highscore()

Graphics 640,480,16,2
AppTitle "Highscore"

SeedRnd MilliSecs()

Dim punkte(10)
Dim Namen(10)


; --- Liste mit Zufallswerten erstellen

Print "Unsortierte Liste:"

For i = 1 To 10
punkte(i) = spielerpunkte : Namen(i) = spielername$ + i
Print i + "." +" " + spielername$ + " " + "hat" + " " + spielerpunkte + " " + "Punkte"
Next


WaitKey



; --- Liste sortieren
For I = 1 To 10
For J = I To 10
If punkte(I) < punkte(J) Then ; "<" = größter zuerst / ">" = kleinster zuerst
X = punkte(I) : punkte(I) = punkte(J) : punkte(J) = X
xx$ = Namen(i) : Namen(i) = Namen(j): Namen(j) = xx$
EndIf
Next
Next




; --- Liste speichern
Datei = WriteFile("Highscore.dat")

For i = 1 To 10
WriteLine Datei, Namen(i)
WriteLine Datei, punkte(i)
Next

CloseFile Datei



; --- Liste laden + anzeigen
Datei = ReadFile("Highscore.dat")

Print
Print "Sortierte Liste:"

For i = 1 To 10
Namen(i) = ReadLine(Datei)
punkte(i) = ReadLine(Datei)
Print i + "." + spielername$ + " " + "hat" + " " + spielerpunkte 
Next

CloseFile Datei

WaitKey
End

End Function

 

Edlothiol

BeitragSa, Feb 14, 2004 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Du setzt immer das ganze Feld auf die Punktzahl. Du darfst nur das letzte Feld darauf setzen und dann sortieren.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Feb 14, 2004 21:07
Antworten mit Zitat
Benutzer-Profile anzeigen
versuch das mal...
Code: [AUSKLAPPEN]
; --- Liste sortieren
For egal = 0 To 9
   For I = 0 To 9
      If punkte(I) < punkte(i+1) Then ; "<" = größter zuerst / ">" = kleinster zuerst
         X = punkte(I) : punkte(I) = punkte(i+1) : punkte(i+1) = X
         xx$ = Namen(i) : Namen(i) = Namen(i+1): Namen(i+1) = xx$
      EndIf
   Next
Next

wenn die daten einmal sortiert sind braucht du die äußere schleife (egal)nicht , da ja nur ein wert einsortiert wird
das Ergebnis mußt du dann aber in punkte(0) speichern
hab den Code aber nicht getestet!
[BB2D | BB3D | BB+]
 

Desantes

BeitragSa, Feb 14, 2004 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Hört sich gut an . Nur an welcher Stelle soll ich das denn machen?
Könntest du mir das etwas genauer erklären.

Mfg

Desantes

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Feb 14, 2004 21:11
Antworten mit Zitat
Benutzer-Profile anzeigen
den code einfach dahin kopieren wo deine sortierroutine steht
deine dann mit semikolon raus machen oder löschen, das ist dir überlassen!
[BB2D | BB3D | BB+]

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Feb 14, 2004 21:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Deine sortierfunc geht ja doch, hab mich da verlesen.... 1 I ist ja nicht =

also, du mußt bevor du neu sortiert erst die Highscore einlesen da sonst keine werte vorhanden sind, und nur der neue wird sortiert

dann must du auch die werte in das Array einfügen da es sonst das ja nich mitsortiert wird

deine werte einfügen die du erspielt hast mußt du so machen
dein Dim Namen und Punkte auf 11 anstatt 10 setzten
Dim punkte(11)
Dim Namen$(11)
bevor neu sortiert wird dein Namen und die Punktzahl
übergen an das Array

punkte(11) = Scores
namen$(11) = spielername$

kannste natürlich direckt ohne umwege erledigen wenn du gleich
namen$(11) anstatt spielername$ nimmst
dann kannste die evetuell das Global spielername sparen da Arrays immer global sind!

das war denke ich das Problem welches du hattest da der wert nicht übergeben wurde und folglich nur NULLEN da stehen hattest

die Sortierroutine muß jetzt aber auch noch erweitert werden
Code: [AUSKLAPPEN]
For I = 1 To 11
For J = I To 11
If punkte(I) < punkte(J) Then ; "<" = größter zuerst / ">" = kleinster zuerst
X = punkte(I) : punkte(I) = punkte(J) : punkte(J) = X
xx$ = Namen(i) : Namen(i) = Namen(j): Namen(j) = xx$
EndIf
Next
Next

da es jetz einer mehr ist!
[BB2D | BB3D | BB+]
 

Desantes

BeitragSa, Feb 14, 2004 23:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Vorab schon mal vielen Dank für deine Mühe.
ICh werde es morgen früh gleich ausprobieren und mich dann melden.

Mfg

Desantes
 

Desantes

Betreff: Es funktioniert einfach nicht. Shit!

BeitragSo, Feb 15, 2004 13:39
Antworten mit Zitat
Benutzer-Profile anzeigen
ALso ich habe jetzt wie schon von Rallimen vorgeschlagen die Sortier Funktion etwas umgestrickt. Die Werte werden ja auch astrein übergeben, nur besteht immer noch das Problem das die Highscore folgendermassen aussieht:

1. Sascha hat 2 Punkte
2. Sascha hat 2 Punkte
3. Sascha hat 2 Punkte
4. Sascha hat 2 Punkte
5. Sascha hat 2 Punkte
etc....

Wie man sieht wird die Highscore tabelle immer wieder auf null gesetzt so das der Spieler an allen 10 Positionen auftaucht aber wieso?
Ich habe das dumme Gefühl das die Urspunggs Highscore nicht mit in die Sortierreihenfolge mit einbezogen wird so das er nichts zum sortieren hat.


Hier nochmal der Quelltext in abgewandelter und aktueller Form:

Code: [AUSKLAPPEN]

;Start Menü

Global Spielerpunkte,Computerpunkte,spielername$


SetBuffer BackBuffer()

Graphics 640,480,16,2

Dim Punkte(10)
Dim Namen(10)
Hintergrund = LoadImage("Startbild.bmp") ;Zuweisen des Hintergrundbildes

DrawImage Hintergrund,Hintergrund_y,Hintergrund_x ;Starten des Hintergrundbildes
Global S%=Spielerpunkte
While Not KeyHit(1)

If KeyDown(2) Then Spiel
If KeyDown (1) Then Menü
If KeyDown (5) Then End




Wend





;Das eigentliche Spiel

Function Spiel()

Graphics 640,480,16,2 ;Grafik und Auflösung

AppTitle "Pong" ;Titel

SetBuffer BackBuffer() ; Buffer für die Grafik

BAll = LoadImage("Ball.bmp") ; zuweisen der Bilder
Computer=LoadImage ("Schläger.bmp")
Spieler=LoadImage("Schläger.bmp")

Spieler_x=30 ;Variable und Position des Spielers
Spieler_y=400


Computer_x=600 ;Variable und position des Computers
Computer_y=420


SpeedX = 7 ; Anfangsgeschwindigkeit
SpeedY = 7

BAll_x = 50 ; Ball Position
BAll_y = 100


While Not KeyHit(1) ;Ende des Spieles durch drücken von ESC



If KeyDown (200) ;Schläger bewegung des Spielers
Spieler_y=Spieler_y-4
If Spieler_y<0 Then Spieler_y=0
EndIf

If KeyDown (208)
Spieler_y=Spieler_y+4
If Spieler_y>400 Then Spieler_y=400
EndIf

; Collison zwischen Schläger und Ball
If ImagesCollide(Spieler,Spieler_x,Spieler_y,0,BAll,Ball_x,Ball_y,0) Then SpeedX= SpeedX-(2*SpeedX)
If ImagesCollide(BAll,Ball_x,Ball_y,0,Computer,Computer_x,Computer_y,0) Then SpeedX= SpeedX-(2*SpeedX)

If BAll_x>600 Then Spielerpunkte=Spielerpunkte+1 ; Punktezähler des Players
If Ball_x<1 Then Computerpunkte=Computerpunkte+10 ; Punktezähler des Computer




If Computer_y>400 Then Computer_y=400 ; Bewegungsende des Computer
If Computer_y<0 Then Computer_y=0 ; Nicht über den Rand hinaus gehen


If Ball_y>Computer_y Then ;
If random = 1 Then Computer_y=Computer_y
Else Computer_y=Computer_y-Rand(4,10)
EndIf

If Ball_y<Computer_y Then
If random = 1 Then Computer_y = Computer_y
Else Computer_y=Computer_y+Rand(4,10)
EndIf

Cls



; Laden des Designs für den Ball
DrawImage Ball,Ball_x,Ball_y

;Collsion mit den Rändern oder dem BAll
If Ball_x<1 Or Ball_x>GraphicsWidth()-40 Then Ball_x=Rand(50,300) Ball_y=Rand(60,400) VelX=Rand(5,8) VelY=Rand(5,8)
If Ball_y<1 Or Ball_y>GraphicsHeight()-40 Then SpeedY =- SpeedY

;Modernisieren der Ball position
Ball_x = BAll_x + SpeedX
Ball_y = Ball_y + SpeedY

DrawImage Spieler,Spieler_x,Spieler_y ; Design des Spielers

DrawImage Computer,Computer_x,Computer_y ; Design des Computer

; Tabellen Position
Text 300,0,Spielerpunkte,1
Text 340,0,Computerpunkte,1

; Tabellen Text
Locate 220,1
Print "Player"

Locate 370,1
Print"Hall 3000"

Locate 300,200
Print Spielerpunkte



If Computerpunkte=30 Then Name ;Spielende bei 1 Ball im aus


; Buffer
Flip
Wend ; Wiederholung der While Schleife()


End Function






;Spielende und Namenseingabe für die Highscore


Function Name() ; Function der Namenseingabe
FlushKeys()
Graphics 640,480,16,2
SetBuffer BackBuffer()

Name=LoadImage ("Nameneingabe.bmp")
; Spielerpunkte Übergabe

DrawImage Name, Name_x, Name_y


Locate 200,350 ;Namenseingabe
spielername$ = Input(" ") ;Variablenname des Spielers

If KeyDown (28) Then Highscore
; Spielende - Sprung aus der Schleife (muß später versetzt werden)



End Function


; Function des Hauptmenüs
Function Menü()

SetBuffer BackBuffer()

Graphics 640,480,16,2

Hintergrund = LoadImage("Startbild.bmp") ;Laden des Startbilschirmes

DrawImage Hintergrund,Hintergrund_y,Hintergrund_x

While Not KeyHit(1)


If KeyDown(2) Then Spiel
If KeyDown (1) Then Menü
If KeyDown (5) Then End

Wend

End Function



;Highscoreliste

Function Highscore()

Graphics 640,480,16,2
AppTitle "Highscore"

SeedRnd MilliSecs()

Dim punkte(11)
Dim Namen(11)

 

; --- Liste laden
Datei = ReadFile("Highscore.dat")

; --- Liste sortieren

punkte(11) = Scores
namen(11) = spielername$

For I = 1 To 11
For J = I To 11
If punkte(I) < punkte(J) Then ; "<" = größter zuerst / ">" = kleinster zuerst
X = punkte(I) : punkte(I) = punkte(J) : punkte(J) = X
xx$ = Namen(i) : Namen(i) = Namen(j): Namen(j) = xx$
EndIf
Next
Next


Print
Print "Highscore"

For i = 1 To 10
Namen(i) = ReadLine(Datei)
punkte(i) = ReadLine(Datei)
Print i + "." + spielername$ + " " + "hat" + " " + spielerpunkte
Next

CloseFile Datei

WaitKey
End

; --- Liste sortieren

punkte(11) = Scores
namen(11) = spielername$

For I = 1 To 11
For J = I To 11
If punkte(I) < punkte(J) Then ; "<" = größter zuerst / ">" = kleinster zuerst
X = punkte(I) : punkte(I) = punkte(J) : punkte(J) = X
xx$ = Namen(i) : Namen(i) = Namen(j): Namen(j) = xx$
EndIf
Next
Next


; --- Liste speichern
Datei = WriteFile("Highscore.dat")

For i = 1 To 10
WriteLine Datei, Namen(i)
WriteLine Datei, punkte(i)
Next

CloseFile Datei


End Function
 



Ich bin wie immer für jeden Tip dankbar!!

Mfg

Desantes

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSo, Feb 15, 2004 15:05
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Code: [AUSKLAPPEN]
Dim Punkte(11) ; muss 11 sein,
Dim Namen$(11); das ist jetzt ein string war vorher nur ein Zahlenfeld
;und in einem Zahlenfeld kann man keinen Sring speichern

und nur einmal dimensionieren, da sonst das Feld wieder gelöscht wird

2.
Code: [AUSKLAPPEN]
For i = 1 To 10
Namen(i) = ReadLine(Datei)
punkte(i) = ReadLine(Datei)
Print i + "." + spielername$ + " " + "hat" + " " + spielerpunkte
Next

ist doch ganz klar weil du immer die gleichen werte printest
so isses richtigCode: [AUSKLAPPEN]
For i = 1 To 10
Namen$(i) = ReadLine(Datei)
punkte(i) = ReadLine(Datei)
Print i + "." + Namen(i)  + " " + "hat" + " " + punkte(i)
Next

3. setzt den grafic befehl nur am anfang des codes
und lade alle Grafiken global
apptitle kannst im fenstermodus setzten ohne jedesmal die graqfics anzuwenden genauso braucht du dann nur einmal setbuffer am anfang setzten

4. warum sotierst du 2 mal die highscore ist doch 1 x über.....

5. du liest die highscore gar nicht mehr ein
denn das reicht nicht um diese einzulesen...
Code: [AUSKLAPPEN]
; --- Liste laden
Datei = ReadFile("Highscore.dat")

.....irgendwie ist dein Code ziemlich durcheinander
[BB2D | BB3D | BB+]
 

Desantes

BeitragSo, Feb 15, 2004 15:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich habe die meisten code Teile jetzt ersetzt und die zufallsliste rausgenommen.

Nun bekomme ich die Fehlermeldung " Illegal Memory Adress"

Den Dim Namen$(11) habe ich gegen SNamen$ ersetzten müssen da es eine Fehlermeldung wegen doppelter Namensvergabe gab.
Es si ja nich so das ich dazu keinen Bock hätte oder so, ich kapiere das mit der Highscore einfach nicht!

Hast du trotzdem vielleicht noch nen Tipp?

Desantes


Code: [AUSKLAPPEN]

;Start Menü

Global Spielerpunkte,Computerpunkte,spielername$


SetBuffer BackBuffer()

Graphics 640,480,16,2

Dim Punkte(10)
Dim Namen(10)
Hintergrund = LoadImage("Startbild.bmp") ;Zuweisen des Hintergrundbildes

DrawImage Hintergrund,Hintergrund_y,Hintergrund_x ;Starten des Hintergrundbildes
Global S%=Spielerpunkte
While Not KeyHit(1)

If KeyDown(2) Then Spiel
If KeyDown (1) Then Menü
If KeyDown (5) Then End




Wend





;Das eigentliche Spiel

Function Spiel()

Graphics 640,480,16,2 ;Grafik und Auflösung

AppTitle "Pong" ;Titel

SetBuffer BackBuffer() ; Buffer für die Grafik

BAll = LoadImage("Ball.bmp") ; zuweisen der Bilder
Computer=LoadImage ("Schläger.bmp")
Spieler=LoadImage("Schläger.bmp")

Spieler_x=30 ;Variable und Position des Spielers
Spieler_y=400


Computer_x=600 ;Variable und position des Computers
Computer_y=420


SpeedX = 7 ; Anfangsgeschwindigkeit
SpeedY = 7

BAll_x = 50 ; Ball Position
BAll_y = 100


While Not KeyHit(1) ;Ende des Spieles durch drücken von ESC



If KeyDown (200) ;Schläger bewegung des Spielers
Spieler_y=Spieler_y-4
If Spieler_y<0 Then Spieler_y=0
EndIf

If KeyDown (208)
Spieler_y=Spieler_y+4
If Spieler_y>400 Then Spieler_y=400
EndIf

; Collison zwischen Schläger und Ball
If ImagesCollide(Spieler,Spieler_x,Spieler_y,0,BAll,Ball_x,Ball_y,0) Then SpeedX= SpeedX-(2*SpeedX)
If ImagesCollide(BAll,Ball_x,Ball_y,0,Computer,Computer_x,Computer_y,0) Then SpeedX= SpeedX-(2*SpeedX)

If BAll_x>600 Then Spielerpunkte=Spielerpunkte+1 ; Punktezähler des Players
If Ball_x<1 Then Computerpunkte=Computerpunkte+10 ; Punktezähler des Computer




If Computer_y>400 Then Computer_y=400 ; Bewegungsende des Computer
If Computer_y<0 Then Computer_y=0 ; Nicht über den Rand hinaus gehen


If Ball_y>Computer_y Then ;
If random = 1 Then Computer_y=Computer_y
Else Computer_y=Computer_y-Rand(4,10)
EndIf

If Ball_y<Computer_y Then
If random = 1 Then Computer_y = Computer_y
Else Computer_y=Computer_y+Rand(4,10)
EndIf

Cls



; Laden des Designs für den Ball
DrawImage Ball,Ball_x,Ball_y

;Collsion mit den Rändern oder dem BAll
If Ball_x<1 Or Ball_x>GraphicsWidth()-40 Then Ball_x=Rand(50,300) Ball_y=Rand(60,400) VelX=Rand(5,8) VelY=Rand(5,8)
If Ball_y<1 Or Ball_y>GraphicsHeight()-40 Then SpeedY =- SpeedY

;Modernisieren der Ball position
Ball_x = BAll_x + SpeedX
Ball_y = Ball_y + SpeedY

DrawImage Spieler,Spieler_x,Spieler_y ; Design des Spielers

DrawImage Computer,Computer_x,Computer_y ; Design des Computer

; Tabellen Position
Text 300,0,Spielerpunkte,1
Text 340,0,Computerpunkte,1

; Tabellen Text
Locate 220,1
Print "Player"

Locate 370,1
Print"Hall 3000"

Locate 300,200
Print Spielerpunkte



If Computerpunkte=30 Then Name ;Spielende bei 1 Ball im aus


; Buffer
Flip
Wend ; Wiederholung der While Schleife()


End Function






;Spielende und Namenseingabe für die Highscore


Function Name() ; Function der Namenseingabe
FlushKeys()
Graphics 640,480,16,2
SetBuffer BackBuffer()

Name=LoadImage ("Nameneingabe.bmp")
; Spielerpunkte Übergabe

DrawImage Name, Name_x, Name_y


Locate 200,350 ;Namenseingabe
spielername$ = Input(" ") ;Variablenname des Spielers

If KeyDown (28) Then Highscore
; Spielende - Sprung aus der Schleife (muß später versetzt werden)



End Function


; Function des Hauptmenüs
Function Menü()

SetBuffer BackBuffer()

Graphics 640,480,16,2

Hintergrund = LoadImage("Startbild.bmp") ;Laden des Startbilschirmes

DrawImage Hintergrund,Hintergrund_y,Hintergrund_x

While Not KeyHit(1)


If KeyDown(2) Then Spiel
If KeyDown (1) Then Menü
If KeyDown (5) Then End

Wend

End Function



;Highscoreliste

Graphics 640,480,16,2


Dim Punkte(11) ; muss 11 sein,
Dim SNamen$(11); das ist jetzt ein string war vorher nur ein Zahlenfeld
;und in einem Zahlenfeld kann man keinen Sring speichern

Function Highscore()


SeedRnd MilliSecs()


; --- Liste sortieren
For I = 1 To 10
For J = I To 10
If punkte(I) < punkte(J) Then ; "<" = größter zuerst / ">" = kleinster zuerst
X = punkte(I) : punkte(I) = punkte(J) : punkte(J) = X
xx$ = Namen(i) : Namen(i) = Namen(j): Namen(j) = xx$
EndIf
Next
Next




; --- Liste speichern
Datei = WriteFile("Highscore.dat")

For i = 1 To 10
WriteLine Datei, Namen(i)
WriteLine Datei, punkte(i)
Next

CloseFile Datei



; --- Liste laden + anzeigen
Datei = ReadFile("Highscore.dat")

Print
Print "Sortierte Liste:"

For i = 1 To 10
SNamen$(i) = ReadLine(Datei)
punkte(i) = ReadLine(Datei)
Print i + "." + Namen(i) + " " + "hat" + " " + punkte(i)
Next

CloseFile Datei

WaitKey
End

End Function

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group