Doppelte Tastenabfrage

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Der Eisvogel

Betreff: Doppelte Tastenabfrage

BeitragMi, Jul 15, 2009 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo
Ich grübel schon ewig daran eine doppelte Tastenabfrage mit GetAsyncKeyState zu machen.
Irgendwie haut das einfach nicht hin. Wie würdet ihr diese doppelte Tastenabfrage machen?

PS: Mit doppelte Tastenabfrage meine ich 2 Tasten gleichzeitig.

Hoffentlich ist das nicht einfach ein Aufdemschlauchsteh-Problem.

MfG
Der Eisvogel
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.

Jo0oker

BeitragMi, Jul 15, 2009 18:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiss jetzt nicht genau was du meinst, aber probier mal:

Code: [AUSKLAPPEN]


SetBuffer BackBuffer()

Dim Key(211)

While Not KeyHit(1)

   Cls

   For i = 1 To 211
   
   
      Key(I) = KeyDown(i)
   
   Next
   
   
   Text 20,20,Key(28)
   Text 20,40,Key(57)
   
   

   Flip


Wend


lg Jo0oker
Tehadon, das kostenlose 3D RPG
www.tehadon.de
http://www.blitzforum.de/worklogs/14/
Das Abenteuer wird beginnen!
 

ChristianK

BeitragMi, Jul 15, 2009 18:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Jo0oker, anstatt das Array zu benutzen, kannst du auch gleich jedes mal KeyDown aufrufen. Confused
Zwei Tasten kann man abfragen, indem man eben ... zwei Tasten abfragt:

Code: [AUSKLAPPEN]
If KeyDown(28) And KeyDown(57) Then ...

Oder hab ich dich falsch verstanden?
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT

The_Nici

BeitragMi, Jul 15, 2009 20:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Er will das ganze mit der WinApi-Funktion GetAsyncKeyState verlangen, welche einen vKey verlangt.
1. Vorschlag: Du machst ein Dim-Feld mit 255 Einträgen, und fragst alle Keystates in einer Schleife ab und haust sie in das Array.
2. Vorschlag: Du machst eine Funktion, welche als Parameter den vKey verlangt. Den AsyncKeyState fragst du dann mit dem Parameter ab, und wenn dieser <> 0 ist gibts nen dicken Kuss.

MfG

Der Eisvogel

BeitragMi, Jul 15, 2009 20:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Also, das ist ja alles ganz schön, aber ich glaube ich hab mich falsch ausgedrückt.
Ich will kein bestimmten Taste abfragen, sondern ich will 2 Tasten ermitteln.
Bsp: Spielsteuerung, die einstellbar ist und ein Befehl wird mit einer Tastenkombination ausgeführt. Diese Tastenkombination ist einstellbar. Wie mache ich am besten eine solche Routine?
Ich hoffe jetzt kann man es besser verstehen
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.

Xaymar

ehemals "Cgamer"

BeitragMi, Jul 15, 2009 20:59
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzBasic: [AUSKLAPPEN]
;test
Graphics 400,300,0,2
SetBuffer BackBuffer()

Global Hit_Act = 0, Key1, Key2
Global HitTimeMS = 1000
Global TimeLeftMS = HitTimeMS, TimeStartMS

While Not KeyHit(1)
Cls

key = GetKey()
If Hit_Act = 0 ;First Key
If key > 0
TimeStartMS = MilliSecs()
Hit_Act = 1
Key1 = key
EndIf
ElseIf Hit_Act = 1 ;Allow 2 Keys
TimeLeftMS = HitTimeMS-(MilliSecs()-TimeStartMS)
If TimeLeftMS > 0
If key > 0
Hit_Act = 2
Key2 = key
EndIf
Else
Hit_Act = 2
Key2 = 0
EndIf
EndIf

Text 0, 0, "Press Any key"
Text 0,15, "Hit: "+Chr(Key1)+"/"+Chr(Key2)
Text 0,30, "Time left for second hit: "+TimeLeftMS
Flip
Wend

;reset
Key1 = 0
Key2 = 0
TimeLeftMS = HitTimeMS
TimeStartMS = 0
Hit_Act = 0


so^^

Edit: Sollte eigentlich leicht auf GetAsyncKeyState umzubauen sein. hab die userlib dafür grad nich zur hand^^
Warbseite

Der Eisvogel

BeitragMi, Jul 15, 2009 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Ne ich glaube nicht, da GetKey einen ASCII-Wert zurück liefert und GetAsyncKeyState nicht.
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.

The_Nici

BeitragMi, Jul 15, 2009 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
GetAsyncKeyState gibt einen lustigen Wert aus, der <> 0 ist, wenn man da was reinwirft.
Also, was macht man dann?
Jaaa, For-Schleife durchgehen, wenn ein GetAsyncKeyState <> 0 ist entweder Taste speichern und rausgehen oder die Taste auf ein array schmeissen und weitermachen, um eine zweite Taste zu kriegen.

Der Eisvogel

BeitragMi, Jul 15, 2009 21:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Grrrr, sch.... Ich bin einfach zu blöd. ;(
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.

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group