Taste kann nur einmal benutzt werden

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Hagbard

Betreff: Taste kann nur einmal benutzt werden

BeitragFr, Jun 24, 2005 19:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

mein Problem:
Ich möchte bei F1 ein Kästchen erscheinen und bei erneutem Drücken verschwinden lassen. Allerdings klappt das nicht.

Der Code:
Code: [AUSKLAPPEN]
; Spielmenü
Graphics 800, 600, 16, 2

fenster2 = LoadImage("fenster2.bmp")

Repeat

If KeyHit(59) And hilfemenü_anzeige = 0 And menü = 0 Then hilfemenü_anzeige = 1     
If KeyHit(60) And missionmenü_anzeige = 0 And menü = 0 Then missionmenü_anzeige = 1
If KeyHit(61) And soundmenü_anzeige = 0 And menü = 0 Then soundmenü_anzeige = 1     
If KeyHit(62) And pausemenü_anzeige = 0 And menü = 0 Then pausemenü_anzeige = 1     

If KeyHit(28) And hilfemenü_anzeige = 1 Then hilfemenü_anzeige = 0   
If KeyHit(28) And missionmenü_anzeige = 1 Then missionmenü_anzeige
= 0
If KeyHit(28) And soundmenü_anzeige = 1 Then soundmenü_anzeige = 0   
If KeyHit(28) And pausemenü_anzeige = 1 Then pausemenü_anzeige = 0     
If hilfemenü_anzeige = 1 Then 
  DrawImage fenster2, 220, 130                                     
EndIf                                                                 

If missionmenü_anzeige = 1 Then                                     
  DrawImage fenster2, 220, 130                                         
EndIf                                                                 

If soundmenü_anzeige = 1 Then                                         
  DrawImage fenster2, 220, 130                                           
EndIf                                                                   

If pausemenü_anzeige = 1 Then                                         
  DrawImage fenster2, 220, 130                                         
EndIf                                                                 


Text 20, 20, hilfemenü_anzeige
Text 20, 40, missionmenü_anzeige
Text 20, 60, soundmenü_anzeige
Text 20, 80, pausemenü_anzeige
Text 20, 100, menü

Until KeyHit(1)
End

Kommentare habe ich entfernt, da sie zuviel Platz verbrauchten.
Ich hoffe ihr könnt mir helfen... Wink
  • Zuletzt bearbeitet von Hagbard am Sa, Apr 17, 2010 16:06, insgesamt einmal bearbeitet
 

D²O

BeitragFr, Jun 24, 2005 19:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Pseudocode

Code: [AUSKLAPPEN]
global F1Schalter = 1


if keyhit(??) then F1Schalter = not F1Schalter ;Schaltet zwischen True und False

if F1Schalter then Kästchen zeichnen ;Nur wenn true sichtbar ansonsten nicht ;)
Blitz+; Blitz3d; BlitzMax; GLBasic; Purebasic;
GameMaker Studio 1.4xx; AGK;
 

hitokiri

BeitragFr, Jun 24, 2005 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
ist doch offensichtlich:
f1 wurde nach
If KeyHit(28) And soundmenü_anzeige = 1 Then soundmenü_anzeige = 0
nicht nochmal gedrückt bis

If KeyHit(28) And pausemenü_anzeige = 1 Then pausemenü_anzeige = 0



mach es so:
if keyhit(28)
if soundmenu_anzeige=1 then soundmenu_anzeige=0
if pasenmenu_anzaige=0 then pausenmenu_anzeige=1
endif

du fragst keyhit bei dir 2mal hintereinander ab, keyhit misst aber nur wie oft es seit dem letzten aufruf gedrückt wurde. zwischen der ersten abfrage und der zweiten wird es nicht nochmal gedrückt.

BladeRunner

Moderator

BeitragFr, Jun 24, 2005 20:22
Antworten mit Zitat
Benutzer-Profile anzeigen
jop, Keyhit löscht bei Aufruf den Buffer für das Zeichen. Also wie geschrieben entweder alles was das Zeichen betrifft in einem Rutsch abfragen oder den Tastenklick in einer Variablen zwischenspeichern.
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

Alfadur

BeitragSa, Jun 25, 2005 5:34
Antworten mit Zitat
Benutzer-Profile anzeigen
d2o hats gesagt...

if keyhit(bla) then blabla = not blabla

und dann irgendwo ... im hauptprogramm ( nicht notwendigerweise )

if blabla then show_blabla...
A Cray is the only computer that runs an endless loop in less than four hours.

Hagbard

BeitragSa, Jun 25, 2005 6:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

vielen Dank, dass ihr mir geholfen habt.
Ich werde den Tastendruck wohl in einer Variable speichern.
  • Zuletzt bearbeitet von Hagbard am Sa, Apr 17, 2010 16:06, insgesamt einmal bearbeitet
 

klepto2

BeitragSo, Jun 26, 2005 22:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst es auch so machen:

Pseudo:

Menu = 0

if keyhit(??) then Menu = 1-Menu ;schaltet immer zwischen 1 und 0 um

if Menu = 1 then

Draw stuff

endif

Hagbard

BeitragSo, Jun 26, 2005 22:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

genau das meinte ich ja auch: "...in einer Variable speichern".
  • Zuletzt bearbeitet von Hagbard am Sa, Apr 17, 2010 16:07, insgesamt einmal bearbeitet

DivineDominion

BeitragSo, Jun 26, 2005 23:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Uraltes Thema...

https://www.blitzforum.de/viewtopic.php?t=8345
christian.tietze@gmail.com - https://christiantietze.de
macOS

Hagbard

BeitragMo, Jun 27, 2005 9:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

cool, dass du das noch gepostest hast.
Sehr interessant.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group