Denkfehler Menüerstellung?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

relentless92

Betreff: Denkfehler Menüerstellung?

BeitragMo, Sep 14, 2009 22:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hoi,
Kann sein das mein Hirn grad hängt, doch fällt mir nichts brauchbares ein Wink
Bin dabei ein Menü zu kreieren, allerdings per Tastensteuerung, Maus ist zu simpel.
Problem ist, Das die Menüeinträge natürlich viel zu schnell durchsausen und nicht Schritt für Schritt.

Code: [AUSKLAPPEN]
Function menue()

DrawImage bg,0,0
DrawImage b1,300,300
DrawImage b2,300,350
DrawImage b3,300,400

If KeyDown(208) Then
   If menunavi=3 Then
      menunavi=1
   Else
      If menunavi=2 Then
         menunavi=3
      Else
         menunavi=2
      EndIf
   EndIf
EndIf

If KeyDown(200) Then
   If menunavi=1 Then
      menunavi=3
   Else
      If menunavi=2 Then
         menunavi=1
      Else
         menunavi=2
      EndIf
   EndIf
EndIf

If menunavi=1 Then DrawImage b12,300,300
If menunavi=2 Then DrawImage b22,300,350
If menunavi=3 Then DrawImage b32,300,400

;Gilt nur Übergangsweise ;;;;;;;
If KeyHit(57)=True Then   ;;;;;;;
menue=0                          ;;;;;;;
game=1
EndIf

End Function


Wie lös ich das am besten? Noch mehr Zustände?

MfG

Xeres

Moderator

BeitragMo, Sep 14, 2009 22:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Benutze Keyhit statt Keydown und wenn du menunavi von 0 aus zählst, kannst du das simpel mit Mod begrenzen, und dir tausend abfragen sparen.
Code: [AUSKLAPPEN]
menunavi = (menunavi + 1 + 3) Mod 3
;bzw
menunavi = (menunavi - 1 + 3) Mod 3
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

DerHase

BeitragDi, Sep 15, 2009 0:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Statt den vielen If-Abfragen würde ich Dir raten mal Select und Case anzuschauen, das erleichtert Dir die Arbeit Wink
Play Satyr!

Nicdel

BeitragDi, Sep 15, 2009 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit Millisecs kanst du so etwas machen:

Code: [AUSKLAPPEN]


If KeyDown(208) And Millisecs()-wtime > 500

...

wtime = Millisecs()

EndIf



Hier wird nur einen Schritt nach unten gegangen, wenn seit dem letzen Mal 500 ms (= 0,5 Sekunden) vergangen sind.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

relentless92

BeitragDi, Sep 15, 2009 14:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah, Vielen Dank Nicdel, das sieht gut aus.

MfG

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group