Highscoreliste
Übersicht BlitzBasic Codearchiv
TravisBetreff: Highscoreliste |
Fr, Jan 16, 2004 20:39 Antworten mit Zitat |
|
---|---|---|
Vor zwei Tagen hat René Meyer hier im Forum ein äußerst nützliches Sortierprogramm für Zahlenwerte gepostet. Ich war mal so frei und habe daraus eine Highscoreliste mit Speicher- und Ladefunktion entwickelt.
Die Liste besteht aus dem Spielernamen, dem Rang und den Punkten. Anfangs wird eine zufällige Liste erstellt, diese wird dann sortiert, gespeichert, wieder geladen und angezeigt. Vielleicht hilft es ja Jemanden weiter, der noch nie eine Highscoreliste gemacht hat. Sowas kann man ja immer mal gebrauchen. Code: [AUSKLAPPEN] ; Highscorelisten Creator ; Erzeugt und sortiert Highscorelisten ; Copyright (C) Jan 2004, Daniel Nobis Graphics 640,480,16,2 AppTitle "Highscore" SeedRnd MilliSecs() Dim Score(10) Dim Name$(10) ; --- Liste mit Zufallswerten erstellen Print "Unsortierte Liste:" For i = 1 To 10 Score(i) = Rnd(0,100): Name$(i) = "Spieler " + i Print i + "." + Name$(i) + " " + Score(i) Next WaitKey ; --- Liste sortieren For I = 1 To 10 For J = I To 10 If Score(I) < Score(J) Then ; "<" = größter zuerst / ">" = kleinster zuerst X = Score(I) : Score(I) = Score(J) : Score(J) = X xx$ = Name$(i) : Name$(i) = Name$(j): Name$(j) = xx$ EndIf Next Next ; --- Liste speichern Datei = WriteFile("Highscore.dat") For i = 1 To 10 WriteLine Datei, Name$(i) WriteLine Datei, Score(i) Next CloseFile Datei ; --- Liste laden + anzeigen Datei = ReadFile("Highscore.dat") Print "Sortierte Liste:" For i = 1 To 10 Name$(i) = ReadLine(Datei) Score(i) = ReadLine(Datei) Print i + "." + Name$(i) + " " + Score(i) Next CloseFile Datei WaitKey End |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
Desantes |
Sa, Feb 14, 2004 18:41 Antworten mit Zitat |
|
---|---|---|
Kann mir jemand verraten wie ich diese überaus nützliche Liste an eine andere Stelle auf dem Bildschirm bekomme?
Hab es schon mit Locate verssucht allerdings schreibt er mir dann logischer weise jeden Durchgang der Schleife in die selbe Zeile ,so das der Text quasi übereinander liegt und somit unlesbar wird. Mfg Desantes |
||
bruZard |
Sa, Feb 14, 2004 19:04 Antworten mit Zitat |
|
---|---|---|
Bitte vermeidet das unsägliche "Print" ... es ist furchtbar | ||
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32
User posted image |
Desantes |
Sa, Feb 14, 2004 19:11 Antworten mit Zitat |
|
---|---|---|
ICh hab ja auch nix von Print gesagt, oder? | ||
Travis |
Sa, Feb 14, 2004 23:44 Antworten mit Zitat |
|
---|---|---|
Ich habe die Liste bei mir folgendermaßen integriert:
Code: [AUSKLAPPEN] ; --- Funktion Highscore anzeigen --- Function ViewHighScore() ; Liste anzeigen SB = LoadImage("Menu\ScoreBack.png"); Rahmen zeichnen MaskImage SB, 255,255,255 DrawImage SB, 340,235 SetFont font1 Color 200,200,0 Text 460, 275, "HIGHSCORE" Color 200,200,200 For i = 1 To 10 If i < 10 Then Text 390,(i*16)+300, i + ".)" ; Rang anzeigen If i = 10 Then Text 380,(i*16)+300, i + ".)" ; Rang anzeigen Text 430,(i*16)+300, Name$(i) ; Namen anzeigen Text 640,(i*16)+300, Score(i) ; Punkte anzeigen Next Flip End Function Natürlich kann man es so nicht in die Hauptschleife packen, da hier jedesmal das Bild geladen wird, daß müßte man dann noch anpassen. Bas Bild ScoreBack.bmp ist der Hintergrund, auf dem der Text ausgegeben wird. Es kann natürlich weggelassen werden, sieht aber schöner aus |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
RallimenSieger des 30-EUR-Wettbewerbs |
So, Feb 15, 2004 16:01 Antworten mit Zitat |
|
---|---|---|
Hi Travis
das ist noch keine richtige higscoreliste, sondern nur ein Sotierprogramm, wie bekommt man den jetzt die neuen werte darein um die highscore neu zu sortieren? |
||
[BB2D | BB3D | BB+]
|
Travis |
So, Feb 15, 2004 16:28 Antworten mit Zitat |
|
---|---|---|
Naja, ist doch ganz einfach. So wie die Liste jetzt da steht enthält sie zehn Namen mit dazugehörigen Punkten. Wenn wir jetzt einen neuen Namen einfügen wollen, müssen wir die Liste erstmal auf 11 Einträge erweitern:
BlitzBasic: [AUSKLAPPEN]
Danach laden wir die vorhandene Liste: BlitzBasic: [AUSKLAPPEN]
Wenn keine Liste vorhanden ist, muß eben eine Blancoliste erstellt werden. Hier werden nur die ersten 10 Einträge geladen, weil wir den 11. ja sowieso nicht anzeigen wollen und außerdem gleich überschreiben. Hat jetzt ein Spieler einen höheren Punktestand erreicht, als der niedrigste Punktestand in der Liste [Score(10)], dann kommt folgende Eingabe zum Einsatz: BlitzBasic: [AUSKLAPPEN]
Hier wird jetzt der letzte (unsichtbare) Eintrag ausgefüllt, der bisher noch leer war. Anschließend sortieren wir die gesamte Liste mit allen 11 Einträgen: BlitzBasic: [AUSKLAPPEN]
Jetzt ist der neue Punktestand irgendwo in der Liste und der ehemals niedrigste Punktestand ist jetzt auf Platz 11. Diesen Platz stellen wir aber später nicht da, weil wir ja nur 10 Einträge haben wollen. Im Prinzip kann man die Liste auch hunderte von Einträgen lang machen. Der neue Punktestand muß nur immer hinter dem letzten Eintrag eingefügt werden. Dieser Platz muß freigehalten werden. Wenn wir also eine Liste mit 50 Pläzten haben müssen wir 51 reservieren [DIM Score(51)]. |
||
www.funforge.org
Ich hasse WASD-Steuerung. Man kann alles sagen, man muss es nur vernünftig begründen können. |
Übersicht BlitzBasic Codearchiv
Powered by phpBB © 2001 - 2006, phpBB Group