Kleines Problem mit Esc

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Gina

Betreff: Kleines Problem mit Esc

BeitragSa, Jul 17, 2004 23:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Irgendwie habe ich ein Problem damit, mit Esc ins Menü zu kommen. Scheint so, als wenn er während der ganzen lange Programmroutine die Abfrage "vergißt".

Habs mit while/wend probiert und mit Repeat/until und mit Getkey() und Keyhit(), aber irgendwie klappt das nicht.

Was muß ich machen, damit man jederzeit während des Spiels mit Esc raus und ins Menü kommt? Ich kann das doch nicht ständig abfragen, oder? Bevor ich ein Menü hatte, hab ich damit das Spiel beendet. Jetzt , wo das Menü da ist, komme ich da nicht rein, außer wenn das Spiel zu Ende ist. *grml*

Ich hab wirklich alles probiert was mir eingefallen ist... Embarassed

Bin für jeden Hinweis dankbar, Gina.
 

David

BeitragSa, Jul 17, 2004 23:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Du musst bei jedem Durchlauf der Hauptschleife prüfen ob ESC gedrückt wurde. Anders gehtz nicht.

grüße
http://bl4ckd0g.funpic.de
 

raiden

BeitragSo, Jul 18, 2004 0:44
Antworten mit Zitat
Benutzer-Profile anzeigen
keyhit fragt ab, ob eine Taste gedrückt wurde, löscht aber dann sofort den Zwischenspeicher, in dem das vermerkt wird. Wenn Du also in einer Unterroutine keyhit abfragst und am Ende der Hauptschleife nochmal, wird bei der zweiten Abfrage das Ergebnis Nein sein, weil Du kaum 2mal so schnell hintereinander Esc drücken kannst, wie das Programm von einer Abfrage zur nächsten braucht. Sicherer ist keydown, welches abfragt, ob die Taste im Moment gedrückt ist, nur mußt Du da selbst für einen Puffer sorgen, damit Du nicht mit Esc direkt aus der Hauptschleife und dann auch noch aus dem Programm fliegst, wenn die Taste mehrere Funktionen hat. Eine simple Methode wäre:

Code: [AUSKLAPPEN]
While mainmode=1
  (...)
  If KeyDown(1) Then
    mainmode=0
    Delay 50
  EndIf
Wend


Manuel

Bfox

BeitragSo, Jul 18, 2004 8:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum geht doch nicht so schwer!

Wenn du vom Menü zum Spiel mit Gosub springst dann so:

Code: [AUSKLAPPEN]
.Spiel
Repeat

(...)

If KeyHit(1) Then Return

Forever


Und Wenn dein Spiel eine Function ist muss dass Menü auch eine Function sein:

Code: [AUSKLAPPEN]
Function Spiel()

Repeat

(...)

If KeyHit(1) Then Menü()

Forever

End Function
Glauben ist Mangel an Wissen!

Gina

BeitragSo, Jul 18, 2004 9:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank, dann werde ich mal alle Varianten testen.
Die von Bfox klappt schonmal super in einem kleinen Test. Mal sehen, was mein Spiel dazu sagt..

Nochmals danke, Gina.
 

Gerhard

BeitragSo, Jul 18, 2004 15:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe eine globale Variable namens weiter=1.
Diese wird in der Hauptschleife abgefragt: if weiter = 0 then exit

Man kann jetzt überall im Spiel (also auch in Unterfunktionen) das Spiel beenden, indem man weiter=0 setzt.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group