Variable ändert sich nicht

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Cedric30003

Betreff: Variable ändert sich nicht

BeitragMi, Apr 13, 2011 17:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Leute!!

Ich habe ein Problem, unzwar:

Ich möchte dass sich bei Tastendruck sich eine Variable ändert, was aber dummerweise nciht funktuiniert.
Die Variable bleibt einfach immer "0"

Code: [AUSKLAPPEN]

Graphics3D 1366,768,32,1

cam1 = CreateCamera
ibisaufgabe = 0
While Not KeyHit (1)   
   
   RenderWorld

Include "Kamera.bb"   
   

If ibisaufgabe = 0 And KeyDown (75) Then
      ibisaufgabe = 1
End If


UpdateWorld

Text 10, 120, "Ibisaufgabe: " + ibisaufgabe



Flip
Wend
End




Um es nochmal zu erklären: Am Anfang des Programms ist Code: [AUSKLAPPEN]
ibisaufgabe# = 0

Wenn dann halt Code: [AUSKLAPPEN]
ibisaufgabe# = 0 And KeyDown(75)
ist, dann soll die Variable Code: [AUSKLAPPEN]
ibisaufgabe = 1
sein.


Was läuft hier schief??

Danke im Voraus

MfG Cedric

Der Eisvogel

BeitragMi, Apr 13, 2011 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Für welche Taste denkst du steht 75? Drückst du auch die richtige? Wink
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Nova

BeitragMi, Apr 13, 2011 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
75 steht für die 4 auf dem Nummernblock.
Hast du den vielleicht deaktiviert (Numlock)?

Ansonsten, nachdem ich etwas entfernt hatte funktionierte alles.
AMD Athlon II 4x3,1GHz, 8GB Ram DDR3, ATI Radeon HD 6870, Win 7 64bit

mpmxyz

BeitragMi, Apr 13, 2011 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
1. Welche Taste drückst du? Die 4 auf dem Nummernblock müsste es sein.
2. Wie lange drückst du sie? Wenn du sie nur kurz anschlägst, kann es sein, dass das Programm dies nicht bemerkt. Nutze KeyHit!
mfG
mpmxyz
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer
 

Cedric30003

BeitragMi, Apr 13, 2011 17:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Mein Gott bin ich blöde.

Ich hab so nach Fehlern gesucht, dass ich nicht gemerkt habe, dass ich dass cih das Doppelgemobbelte dort nicht geseheen habe, mit den Keys

Danke Leute

Dottakopf

BeitragMi, Apr 13, 2011 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem an Keyhit ist, dass es prüft ob genau in dieser Millisecunde die auf deiner Tastatur eine Taste gedrückt ist.
Schreibt man mehrere Keyhits() hintereinander(Bzw. überpüft mehrfach die gleiche taste in einer Abfrage) wird das nicht mehr richtig funktionieren....


hier der Trick:
Prüfe ganz am anfang deiner Loop die Tastenereignisste ab. Speicher dies in Globale varriable und prüfe später in funktionen nur noch diese Varriablen.

Code: [AUSKLAPPEN]


Global Key_leertaste=0
Global Key_enter=0



Repeat

;var immer nullen
Key_leertaste=0
Key_enter=0

;hat der Spieler eine Taste gedrückt
IF Keyhit(57) then Key_leertaste=1
IF Keyhit(28) then Key_enter=1




;irgendeine prüfung...
IF KEY_leertaste =1 and x = 100 or KEY_leertaste=1 and y=10 then .....



until Keyhit(1)




das ist die einzigste möglichkeit(zumindest mir bekannt) mehrere SAUBERE Keyhitabfragen in deinen Code zu verwenden.

Keydown dagegen funktioniert immer... aber manchmal ist Keydown ungeeignet.


Gruß
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

Xeres

Moderator

BeitragMi, Apr 13, 2011 22:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Dottakopf hat Folgendes geschrieben:
Das Problem an Keyhit ist, dass es prüft ob genau in dieser Millisecunde die auf deiner Tastatur eine Taste gedrückt ist.
Berichtigung: Die Keyhit/MouseHit Funktionen leeren ihren Buffer beim Aufruf. Darum gibt es auch Flushkeys.
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)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group