Highscore-Liste

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Gast

Betreff: Highscore-Liste

BeitragMo, Apr 11, 2005 9:41
Antworten mit Zitat
HI erst ma!

Also folgendes!
Ich hab die Grundmaterie studiert und hab jetzt mein erstes Projekt
angefangen und sogar die Beta läuft scho!
Wie fast jeder *lol* hab ich nen Retro-Shooter progrmmiert!!!

Jetzt die Frage: Wie prog ich am besten ne Bestenliste!
Ich brauch ne Variable die den Score speichert ( Very Happy - wie tiefgründig ich wie wieder
bin) und ne Datei zum auslagern oder? Damit ich sie langfristig speichern kann!

Brauch eigentlich nur n paar Tipps! Bitte keine völlig überladenen Codes!!
MFG

simi

BeitragMo, Apr 11, 2005 10:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

Das machst du am Besten mit zwei Arrays, im einen speicherst du die Scores und im anderen die Namen. Dieses beiden Arrays sortierst du immer gleich, nach den Punkten....

Diese Highscore speicherst du dann in eine Datei ab, und lädst die wieder.
Dazu brauchst du folgende Befehle:
ql:WriteFile und ql:ReadFile
ql:WriteInt und ql:ReadInt
ql:WriteString und ql:ReadString
ql:CloseFile


Ansonsten, wenn du ein bisschen suchst, findest du sicher ein paar codes...

cu simi
 

David

BeitragMo, Apr 11, 2005 10:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Oder du verwendest einfach Types!

BlitzBasic: [AUSKLAPPEN]

Type TEntry
Field Name$
Field Score%
End Type


Das finde ich übersichlicher als Arrays, wobei es mit Arrays natürlich genauso gut funktioniert! Wink

grüße

Hubsi

BeitragMo, Apr 11, 2005 10:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Types halte ich für den Zweck relativ ungeeignet, da das sortieren ungemein umständlicher wäre. Ein zweidimensionales Array ist imo die bessere Wahl Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

David

BeitragMo, Apr 11, 2005 10:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Wieso umständlich, genauso ständlich wie Arrays auch... Oder gibts nen besonderen Trick um Arrays zu sortieren???

grüße

Hubsi

BeitragMo, Apr 11, 2005 10:59
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
SeedRnd MilliSecs()
Dim bla(10)

For a=0 To 10
bla(a)=Rand(10,1000)
Next

For a=0 To 10
For b=9 To 0 Step -1
If bla(b+1)>bla(b)
temp=bla(b)
bla(b+1)=bla(b)
bla(b)=temp
EndIf
Next
Next

For a=0 To 9
Print bla(a)
Next
WaitKey()
End
Wie Du siehst ist die eigentlich Sortierung nur ein paar Zeilen lang. Und jetzt Du mit Types Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

David

BeitragMo, Apr 11, 2005 11:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Is doch genau das gleiche. Mit First, Next, Before etc... auf den gleichen Weg machbar.
Der große Vorteil ist halt, das man die ganzen Daten innerhalb eines Objektes hat und nicht auf Arrays verteilen muss, was der Übersicht zugute kommt.

grüße
  • Zuletzt bearbeitet von David am Mo, Apr 11, 2005 11:40, insgesamt 2-mal bearbeitet

Hubsi

BeitragMo, Apr 11, 2005 11:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Kann ich mir nicht vorstellen das es mit Types einfacher wäre. Mach mal ein Beispiel.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

David

BeitragMo, Apr 11, 2005 11:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Ich werds versuchen, allerdings musst du dich bis heute Nachmittag gedulden. Hier auf der Arbeit habe ich kein BlitzBasic zur verfügung stehen und die Demo läuft auch nicht unter Linux! Wink

Hast du deinen Code eigendlich getestet??? :-S

grüße
 

Gast

BeitragMo, Apr 11, 2005 11:50
Antworten mit Zitat
Also erst mal Danke! Surprised
Hab mir schon gedacht das es ohne Daten-Stream nich
geht!!!
Ach ja:
Kann im Moment nicht wirklich beurteilen was sinvoller is,
da ich mit Arrays aber zur Zeit noch nicht so perfekt
klar komm sind mir Types eigentlich lieber!!! Confused

Das ist n Problem weil ich das Buch von Rene Meyer
hab und der nie mit Types arbeitet!!!
Aber bis jetz komm ich klar!!!
MFG
 

Apocalyptic

BeitragMo, Apr 11, 2005 11:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ganze mit Types:
BlitzBasic: [AUSKLAPPEN]
Type Blubb
Field Value
End Type

SeedRnd MilliSecs()

For i=0 To 10
v.Blubb=New Blubb
v\Value=Rand(10,1000)
Next

Sort()

For v.Blubb=Each Blubb
Print v\Value
Next

WaitKey()


Function Sort()
Local Wert#,s.Blubb,t.Blubb,u.Blubb

t.Blubb=First Blubb

While t<>Null

Wert#=t\Value

For s.Blubb=Each Blubb
If s=t Or s\Value>Wert Then Exit
Next

u=After t
Insert t Before s
t=u

Wend

End Function
Suum cuique

[ www.ffs-net.de.vu ] [ Raycaster ]
 

David

BeitragMo, Apr 11, 2005 12:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Nochmals Types, an Hubsi's Lösung angelehnt:

BlitzBasic: [AUSKLAPPEN]

Graphics 800, 600, 32

Type TEntry
Field name$
Field score%
End Type

SeedRnd( MilliSecs() )

For i% = 0 To 10
num% = Rnd( 0, 10000 )

NewEntry.TEntry = New TEntry
NewEntry\name = \"name\"+num
NewEntry\score = num
Next

For Curr.TEntry = Each TEntry
a.TEntry = Before( Last TEntry )
b.TEntry = After( a )

While a <> Null
b = After( a )

If ( a\score > b\score )
tmp1$ = a\name
tmp2% = a\score
a\name = b\name
a\score = b\score
b\name = tmp1
b\score = tmp2
End If

a = Before( a )
Wend
Next

For Curr.TEntry = Each TEntry
Print Curr\name + \" hat \" + Curr\Score + \" Punkte!\"
Next

WaitKey
End


Also, viel mehr Arbeit ist es nicht Hubsi!

grüße

Hubsi

BeitragMo, Apr 11, 2005 13:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, überzeugt Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

Gast

BeitragMo, Apr 11, 2005 14:54
Antworten mit Zitat
OK ich hab den Source von Hubsi
auseinandergenommen!!!

BlitzBasic: [AUSKLAPPEN]
For b = 9 To 0 Step -1
If bla(b+1)>bla(b)
temp=bla(b)
bla(b+1) = bla(b)
bla(b) = temp
EndIf
Next


Sorry aber da komm ich irgendwie nicht ganz mit!! Embarassed ... Crying or Very sad Crying or Very sad Crying or Very sad Crying or Very sad Crying or Very sad
Verdammte Arrays!
 

David

BeitragMo, Apr 11, 2005 14:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Er durchläuft das Array rückwärts und überprüft ob der aktuelle Eintrag kleiner wie der Eintrag eins über dem aktuelle ist. Falls das zutrifft werden beide Werte einfach getauscht.

grüße

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group