Tastenmenü probleme

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Killafrieda

Betreff: Tastenmenü probleme

BeitragMo, Dez 21, 2009 14:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo allen,

ich habe eine Frage und zwar habe ich heute mal angefangen mit einem kleinen Menü.
Es ist aufgebaut aus 5 anwählbaren Einträgen u.a. Start, Einstellungen, Levelauswahl, Hilfe, Ende usw ich habe für jeden Eintrag eine Taste von 1-5 gegeben als beispiel, Start hat Taste 1. Meine Frage ist nun, ich werde nun gefragt welche Auswahl ich machen möchte, ich gebe Zahl 1 für Start ein um nun aber nach Start zugelangen (was ja nur passieren kann wenn ich Taste 1 drücke) wie muß ich das proggen ?
if then ist mir schon klar aber wie mach ich das, dass das programm direkt zum Start hingeht ?
Ich weis noch aus C-64 Zeiten das es früher bei Basic befehlen zeilennummern (1,2,3 usw..) gab also z.b. If x=1 then goto 20 womit ich dann zeile 20 ansteuer wo der nächste Befehl ist z.b... aber wie geht das mit B3D, hier kann ich ja keine zeilennummer ansteuern ???


Ich hab nun schon hier einiges durchgeschaut aber meiner Meinung nach nix gefunden, hab paar Tutorial angeschaut wo IF Then auch beschrieben wird aber wie man nun dahingelangt zum Befehl den man gegeben hat konnte ich nicht rauslesen, vllt. denke ich auch zu umständlich möglich.
Vielleicht kann mir das mal jemand erklären wie ichs machen muß.

Danke im Vorraus

KF

Midimaster

BeitragMo, Dez 21, 2009 14:40
Antworten mit Zitat
Benutzer-Profile anzeigen
einfache lösung:

Code: [AUSKLAPPEN]
If Taste=12 then
    Spielen
ElseIf Taste= 13 Then
    Ende
Elseif...
   blabla
Endif

Function Spielen()
    vorblabla
    Repeat
        hauptblabla
        Flip
    Until Keyhit(1)
End Function

Function ende()
    schlussblabla
    End
End Function

Function Blabla()
    code was auch immer
End function




bessere Lösung

Code: [AUSKLAPPEN]
Repeat
    cls
    taste=...

    ; tastenabfrage
    Select SpielMode
        Case 0
            Select Taste
                Case 12
                    SpielMode= 1
                case 13
                    SpielMode=0
                case  blablataste
                    SpielMode= Blablamode
            End select
       Case 1
            Select Taste
               case 13
                    SpielMode=0
                Case 55
                    spielerX=spielerX-1
                case 56
                     spielerX=spielerX+1
               case  blablataste
                     Blabla....
            End select
        Case 2
    End select
       
     ; ScreenZeichnen
    Select SpielMode
        Case 0
             ZeichneStartMenue
       Case 1
             ZeichneSpielfeld
        Case 2
    End select

    Flip

Until KeyHit(1)

Function ZeichneStartMenue()
    hier alles malen was zum Menü gehört
End Function

Function ZeichneSpielfeld()
    hier alles malen was beim Spielen zu sehen sein soll
End Function


der Vorteil der "besseren" Lösung ist, das Das Programm die gesamte Zeit in der oberen Hauptschleife bleibt. Dort wird je nach Spielmode in die verschiedenen Malroutinen oder Abfrageroutinen verzweigt. du steuerst dies über die Variable SpielMode.
  • Zuletzt bearbeitet von Midimaster am Mo, Dez 21, 2009 14:55, insgesamt 2-mal bearbeitet

ozzi789

BeitragMo, Dez 21, 2009 14:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Ach zu goto, hier gibst du keine Zeilen an sonder Sprungmarken
Aber nimm lieber Functions, viel übersichtlicher Wink

Code: [AUSKLAPPEN]
if 1 then goto eins

...
...

.eins



mfg
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Killafrieda

BeitragMo, Dez 21, 2009 14:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke dir, da werd ich gleich mal rumprobieren Wink

Jamagin

Betreff: menusteuerung

BeitragMo, Dez 21, 2009 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Kannst auch SELECT...CASE...END SELECT Konstruktor verwenden!

lg. Jamagin Cool

NB: Online Hilfe lesen hilft auch weiter...!
Bevor du etwas neues beginnst, erledige das alte

Killafrieda

BeitragMo, Dez 21, 2009 15:30
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Midimaster

ich bekomme immer ein "Expecting End of Line"

oder ein Expecting Endif..

habe dein erstes beispiel benutzt..

Woran kann das liegen ?

Edit : Ok ich habe rausgefunden woran das lag und zwar hatte ich in einem Wort ein ä drinne, hatte das wort dann in ein anderes umgeschrieben und keine Fehlermeldung mehr erhalten..

Mit deinem zweiten Beispiel komm ich nicht zurecht das ist mir momentan zuviel code Very Happy

@ zu den anderen Posts, danke Euch,

ich werde es nach und nach ausprobieren weil sonst komm ich durcheinander Very Happy

Danke erstmal Smile

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group