Seite 2 von 2

Verfasst: 02.07.2008 09:31
von gnasen
oder, noch gemütlicher, alle gedrückten Tasten in eine Liste. Sollte alle Folgeoperationen erheblich vereinfachen.

Verfasst: 02.07.2008 09:52
von Brügge
geht so aber auch gut:

programm von gerade xD

Code: Alles auswählen

taste$ = "" 
  for i = 0 to 255 
    if keyboardpushed(i) 
      taste$ = taste$+str(i)+":" 
    endif 
  next i 
+ abfrage

Code: Alles auswählen

taste1.b = val(stringfield(taste$,1,":"))
taste2.b= val(stringfield(taste$,2,":"))
taste3.b = val(stringfield(taste$,3,":"))
taste4.b = val(stringfield(taste$,4,":"))
jetzt kann man die (Byte) tasten einfach prüfen wie man will...

MFG Brügge

Verfasst: 02.07.2008 12:03
von Danilo
Brügge hat geschrieben:geht so aber auch gut:

programm von gerade xD

Code: Alles auswählen

taste$ = "" 
  for i = 0 to 255 
    if keyboardpushed(i) 
      taste$ = taste$+str(i)+":" 
    endif 
  next i 
+ abfrage

Code: Alles auswählen

taste1.b = val(stringfield(taste$,1,":"))
taste2.b= val(stringfield(taste$,2,":"))
taste3.b = val(stringfield(taste$,3,":"))
taste4.b = val(stringfield(taste$,4,":"))
jetzt kann man die (Byte) tasten einfach prüfen wie man will...

MFG Brügge
Wo ist da der Vorteil gegenüber einem Array?

Code: Alles auswählen

Dim taste.l(255)

for i = 0 to 255 
  taste(i) = keyboardpushed(i)
next i

; taste(x) = 0 -> Taste nicht gedrückt
; taste(x) <> 0 -> Taste gedrückt

Verfasst: 02.07.2008 13:22
von Kaeru Gaman
> Wo ist da der Vorteil gegenüber einem Array?

gar keiner, nur nachteile.

aber warum nicht gleich so?

Code: Alles auswählen

Dim taste.b(255) 
GetKeyboardState_(@taste(0))

Tastenabfrage mit Liste

Verfasst: 02.07.2008 13:26
von kswb73
Er will doch wissen welche Taste(n) gedrückt wurde, nicht ob eine oder mehrere bestimmte Tasten gedrückt wurden. Man könnt jetzt einfach eine Liste nehmen. Dann kann man die Tasten auch noch Speicherschnonend auswerten. (Man Speichert ja nur die aktuelle gedrückten Tasten)

Code: Alles auswählen

newList Key.w()

ClearLIst(Key()) ;Damit wir nicht noch die alten Ergebnisse behalten
  For a=1 To 255
    if KeyboardPushed(a)
    AddElement(Key())
    Key()=a
    endif
  next a

Verfasst: 02.07.2008 13:33
von Kaeru Gaman
ich will einfach mal stark bezweifeln, dass 256byte heutzutage ein solches problem darstellen.

hier kommt es meiner ansicht nach eher auf praktikabilität drauf an,
und da ist ein String der alle Nummern aller gedrückten tasten beinhaltet nunmal das umständlichste,
und eine Liste auch nicht grad praktisch, weil ich die immer von anfang an durchsuchen muss.

außerdem ist es noch die Frage, wozu Tompazi dieses überhaupt benötigt.

letztendlich braucht man "wie ist die Nummer der taste die gerade gedrückt wurde"
nur dann, wenn man eine alternativ-Belegungs-Tabelle aufsetzt.
Nur in dieser Situation im Options-Menu, wo man die Tastaturbelegung ändern will.
in allen späteren Situationen genügt die Zuordnungstabelle und die nativen PB-Funktionen.

Verfasst: 02.07.2008 14:46
von Brügge
außerdem ist es noch die Frage, wozu Tompazi dieses überhaupt benötigt.

@kaeru Gaman

also, ich benötige sowas bei Options von Games...
wenn man zB eine Taste belegen will xD

Verfasst: 02.07.2008 15:27
von Kaeru Gaman
achso, und ich dachte schon, du brauchst es für alternative Tastenbelegungen....

Verfasst: 03.07.2008 07:23
von Danilo
Kaeru Gaman hat geschrieben:aber warum nicht gleich so?

Code: Alles auswählen

Dim taste.b(255) 
GetKeyboardState_(@taste(0))
Weil nicht jeder nur Windows verwendet. ;)

Ansonsten kommt es in der Tat darauf an, was man genau machen möchte
und ob es einfach, schnell, umständlich, langsam, speicherfressend (256 Longs = 1k!),
portabel usw. sein soll.