Probleme mit meiner Highscore Liste?
Übersicht

bruce85Betreff: Probleme mit meiner Highscore Liste? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hallo,
also ich hab mein Spiel Fertig mit Highsscore Liste und wenn man mehr Punkte erreicht hat wo momentan in der Highscore Liste sind, also: If Punkte > Score(10) Then EndIf dann wird der Block zwar ausgeführt aber die Input Box wo man seinen Namen eingeben muss verschwindet gleich und dann kommt schon die Heighscore Liste. Da is irgendwo ein Fehler oder so, wisst ihr vieleicht woran das liegen kann? hier mal der Code wo man seinen Namen eingibt: Code: [AUSKLAPPEN] If HighscoreEingeben = 1 Then
If Punkte > Score(10) Then Score(11) = Punkte Locate 100,100 DeinName$ = Input$("Name eingeben: ") Name$(11) = LSet(DeinName$,15) Punkte = 0 HighscoreSort() HighscoreSave() HighscoreView() EndIf If Punkte < Score(10) Then HighscoreView() EndIf EndIf ich bin euch sehr dankbar wenn ihr mein Problem lösen könnt ![]() Gruss Andreas |
||
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn man annimmt (was logisch wäre!), das Score(1) die höchste Punktzahl der Top Ten enthält und Score(10) den letzten Highscore-Platz, dann wäre das hier viel eleganter:
Code: [AUSKLAPPEN] ; NEUER HIGHSCORE?
For i = 1 To 10 ; PLATZ IN DEN TOP TEN? If punkte >= scores(i) Then ; PLÄTZE DARUNTER NACH UNTEN VERSCHIEBEN For j = 10 To (i-1) scores(i) = scores(i-1) names (i) = names (i-1) Next ; DEN NEUEN PLATZ EINFÜGEN scores(i) = punkte names (i) = LSet( Input$("Name eingeben: ") ,15) HighscoreSave() Exit End If Next HighscoreView() Damit sparst du dir auch HighscoreSort() -denn sortieren ist gar nicht nötig, wenn du gleich gezielt einfügst, wie hier. |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast vielleicht vor dem Input eine Tastenabfrage drin, ala "Score eintragen? (Enter für Ja)" oder etwas in der Richtung eben? Vielleicht auch im Spiel die Enter-Taste (auch Zahlenblock) mit einer Funktion belegt? Für den Fall dürfte ein einfaches ql:FlushKeys() vor dem Input helfen ![]() |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
vielen dank, des mit FlushKey functioniert ![]() Gruss Andreas |
||
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hallo nochmal,
die Highscore Punkte sind ja jetzt eingetragen aber die Highscore wird net gespeichert, wieso? hier mal den Code für HighscoreSave: Code: [AUSKLAPPEN] Function HighscoreSave()
Datei = WriteFile("Highscore.txt") For i=1 To 10 WriteLine Datei, Name$(i) WriteLine Datei, Score(i) Next CloseFile Datei End Function edit: und hier wirds geladen: Code: [AUSKLAPPEN] Function HighscoreLoad()
Datei = ReadFile("Highscore.txt") If Not Datei = 0 Then For i=1 To 10 Name$(i) = ReadLine(Datei) Score(i) = ReadLine(Datei) Next CloseFile Datei EndIf If Datei = 0 Then For i=1 To 10 Name$(i) = "Leer" Score(i) = i*99 Next EndIf End Function und hier wird die Highscore angezeigt: Code: [AUSKLAPPEN] Function HighscoreView()
Repeat Cls DrawImage highscore,0,0 SetFont schrift1 Color 0,0,0 For i=1 To 10 If i < 10 Then Text 150,(i*22)+60,i+"." If i > 9 Then Text 142,(i*22)+60,i+"." Text 170,(i*22)+60,Name$(i) Text 300,(i*22)+60,Score(i) Next Flip Until KeyHit(1) End Function edit: des kann nur an If Datei = 0 Then liegen, weil des erneut wieder ausgeführt wird ob wohl die Datei schon existiert. Danke schonmal ![]() Gruss Andreas |
||
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
habs anders gelöst und jetzt funzt es, trotzdem danke ![]() |
||
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
noch eine Frage hätte ich,
und zwar wollte ich fragen welche Schleife ihr für die Highscore liste benutzt oder so, weil wenn ich eine höhere Punktzahl erreicht habe dann gebe ich mein Name ein für die Highscore und dann komm die Highscore Liste, und wenn ich auf ESC Drücke dann geht es wieder ins Spiel rein was net sein darf, es soll ja dann ins Hauptmenu reingehen, aber wie macht man das am besten? ich habs so probiert: Code: [AUSKLAPPEN] Funcion HighscoreView()
Repeat Cls Code..... Flip Until KeyHit(1) <> HauptMenu() End Function aber wenn ich dann auf die Highscore Liste klicke dann geht es anschließend wieder ins Hauptmenu rein wegen <> HauptMenu() Habt ihr vieleicht eine ahnung wie man das macht? Gruss Andreas |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Am einfachsten einfach am ende des spieles die highscore liste aufrufen und wenn dieser aufruf wieder ins spiel zurück kommt, spiel beenden und anzeigen, was du anzeigen wolltest ... | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiss ja nicht, wie Du dein Game aufgebaut hast, aber ich vermute mal du hast es in Functions zerlegt.
Ich unterstelle mal Hauptmenu(), Game() und HighscoreView(). Setze eine globale Variable STATE. STATE sei 0 im Menu, 1 im Game und 2 in der Highscore, (3 für Ende). Mache nun in der Schleife jeder Function eine Abfrage: If STATE <> (nummer der Function) then return Nun brauchst du noch ne Mainloop welche im Wesentlichen aus einem Select Case besteht: Code: [AUSKLAPPEN] repeat
select STATE case 0 hauptmenu() case 1 game() case 2 Highscoreview() case 3 end end select forever Wenn der User nun Esc. in deiner Highscore Drückt, lässt Du einfach STATE auf 0 setzen. Analoges vorgehen für die anderen Funktionen. Um das Game zu beenden, setzt Du State auf 3. Dieses Vorgehen lässt sich auf Beliebig viele Menüs und Submenüs erweitern. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich danke dir, ich werds gleich mal ausprobieren, kann man das dann auch so machen: until keyhit(1) = STATE ??
Gruss Andreas |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
nö, denn das hiesse ja "solange bis die Escapetaste = status" - ergibt keinen Sinn.
Keyhit(1) gibt dir ja 1 zurück sobald die Taste mit der Nummer 1 (sprich:escape) gedrückt wurde, und hat mit der STATE- Variable nichts zu tun. Du kannst aber Code: [AUSKLAPPEN] if keyhit(1) then state = ... machen, was dazu führt das beim Drücken der EscapeTaste eine Funktion deiner Wahl aufgerufen wird. Und die kann ja in jeder Funktion eine andere sein. Wenn Du noch eine zweite Variable einführst, die protokolliert von welcher Funktion Du in die aktuelle gekommen bist, dann kannst Du auch gezielt in Funktionen zurückspringen.
|
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
das ist mir schon klar, ich habs ja schon ausprobiert damit until keyhit(1) = ........
damit gehts net, ich machs dann mit der if abfrage und danke dir für den Tip ![]() edit: ich habs so gemacht ohne Select Case: Code: [AUSKLAPPEN] Function HighscoreView()
Repeat Cls .......... .......... If KeyHit(1) Then HauptMenu() Flip Forever End Function olso die Repeat Forever Schleife und hab einfach ne if Abfrage gemacht das es halt wieder ins HauptMenu wechselt wenn man die ESC Taste gedrückt hat und es funktioniert auch, danke trotzdem für die hilfe ![]() Gruss Andreas |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Geht auch, aber: Du verschachtelst zunehmend Funktionen ineinander was bei häufigem Wechseln zu einem Riesenoverhead und sogar zu einem Absturz führen kann.
Besser ist es das ausserhalb zu erledigen und die Funktionen mit return zu verlassen. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
naja also bei mir is ja noch bis jetzt kein absturz oder fehler aufgetreten, alles funktioniert einwandfrei, aber ich werde mein Spiel Heute oder Morgen mal Vorstellen bei Projekte, um Fehlermeldungen oder so auszuschließen.
und trotzdem danke dir ![]() Gruss Andreas |
||
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
@bruce85: du solltest auch mal ein paar Ratschläge annehmen und beherzigen, und nicht einfach nur stur das gelten lassen, was sich mit deiner Erfahrung als Anfänger deckt.
Das von Bladerunner angesprochene Problem tritt schneller auf, als du denkst -und die Fehlersuche ist dann alles andere als einfach. Besser, du gewöhnst dir von Anfang an einen sauberen Stil an, nicht erst, wenn es zu spät ist. Wenn wir dir Tipps geben, machen wir das doch nicht zum Spass. Das hat schon seinen Grund. Nach Lao Tse gibt es drei Arten zu lernen: 1. Durch Nachahmung, 2. durch weise Voraussicht und 3. durch schmerzliche Erfahrung. Wer sich nichts sagen lässt, hat sich für den dritten Weg entschieden. Na dann, viel Spaß ![]() |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
nur mal so, ich bin kein Anfänger mehr ![]() wo ich des so gemacht habe wie Blade Runner geschrieben hat dann ist der ganze Bildschirm Schwarz, man sieht dann garnichs mehr, so wie ich des jetzt gemacht habe funktioniert es ohne Probleme ![]() |
||
![]() |
x-pressive |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst doch nicht einfach BladeRunner die Schuld geben, wenn du seinen Vorschlag nicht richtig umsetzen kannst ![]() ![]() |
||
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL |
bruce85 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
sagmal habe ich den die Schuld gegeben?
ich machs ja einfach dann wie ich es kann, ![]() |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wer seine Augen nicht zum sehen nutzt, wird sie zum weinen nutzen.
Thema erledigt. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group