Seite 1 von 2

Highscore

Verfasst: 11.05.2006 15:09
von Svking
Hallo,

Ich habe ein Spiel gebastelt.

Mein Spiel erstellt eine Text datei namens Highscore.txt,
dort listet es die Punkte auf:

1120 Punkte
1060 Punkte
1060 Punkte
950 Punkte
40 Punkte

...

Sortiert Automatich das beste nach oben...

Wie kann ich jetzt machen, dass diese Zeilen aus der Textdatei
in ein StartDrawing() übertragen wird?

Verfasst: 11.05.2006 15:36
von DoubleID
Alle Zeilen per ReadString in ein Array einlesen und anschliessen das Array in einer Schleife ausgeben.

Code: Alles auswählen

For x=1 to 5
   drawtext(0,x*10,Highscore (x))
next x

Verfasst: 11.05.2006 16:10
von Svking
sry versteh das nich ganz

Was ist ein Array und wie lese ich da was ein?

kannst du mir das etwas genauer erklären? bin noch nich so gut in PB ^^

Verfasst: 11.05.2006 16:17
von DoubleID
Achso.
Das wußt ich nicht.

Eine Array ist eine Liste von Speicheradressen die Inhalte wie Strings, Integer et Cetera haben.
Das war jetzt ne grobe Ausführung davon.

Ein Array muss zuerst Dimensioniert werden.

Code: Alles auswählen

Dim DeinArray.s (10)
Hier hab ich jetzt eins mit 10 Feldern dimensioniert. Und zwar als Felder die nur Strings beiinhalten können.

So nun füllen wird die Felder.

Code: Alles auswählen

DeinArray (1)="Hallo"
DeinArray (2)="Welt"
DeinArray (3)="Hallo"
DeinArray (4)="da draußen"
Und verwenden.

Code: Alles auswählen

MessageRequester ("Test",DeinArray (1)+DeinArray (2)+DeinArray (3)+DeinArray (4),0)
So jetzt haste ne Grundlage.

Verfasst: 11.05.2006 16:20
von ts-soft
Hier noch ein unvollständiges Beispiel, das nur das Prinzip aufzeigt. Die HighScore.txt sollte besser eine Preferences-Datei sein, bzw. eine Prüfung auf evtl. Leerzeilen fehlt hier!

Code: Alles auswählen

; Skeleton, unvollständig!!!

File = ReadFile(#PB_Any, "HighScore.txt")
If File
  Dim HighScore.s(4)
  For x = 0 To 4 ; besser 2 getrennte for next schleifen!!
    HighScore(x) = ReadString(File)
    DrawText(0,x*10,Highscore (x))
  Next x
  CloseFile(File)
EndIf

Verfasst: 11.05.2006 16:56
von Kiffi
DoubleID hat geschrieben:Ein Array muss zuerst Dimensioniert werden.

Code: Alles auswählen

Dim DeinArray.s (10)
Hier hab ich jetzt eins mit 10 Feldern dimensioniert.
nope, das sind 11 Felder (0 - 10)

Grüße ... Kiffi

Verfasst: 11.05.2006 17:12
von obbba
Eigentlich brauchst du noch nicht einmal Arrays.

Weißt du wie du strings aus einer Datei rausliest?

Dann tust du halt die erste Zeile in die Variable ErsterPlatz$, die zweite in ZweiterPlatz$ und so weiter.
Und deann schreibst du:

Code: Alles auswählen

startdrawing(screenoutput())
frontcolor(50,50,50)
locate(100,40)
drawtext(Ersterplatz$)
locate(100,60)
drawtext(ZweiterPlatz$)
...

Verfasst: 11.05.2006 17:14
von MVXA
Array ist aber praktischer als für jeden Platz eine Variable anzulegen...

Verfasst: 11.05.2006 17:20
von Kaeru Gaman
zumal ich mich frage, wie du dann sortieren willst, wenn es unterschiedliche variablen sind und kein array.

sorry, obbba, aber hier auf ein array zu verzichten ist nicht gut.

Verfasst: 11.05.2006 18:01
von hardfalcon
Kaeru: Die Highscores werten doch schon sortiert in die Datei geschrieben, oder? :wink: