HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0106
you全キー状態の取得8解決


you

リンク

2011/1/6(Thu) 20:00:55|NO.36534

すべてのキーの状態を取得する方法を教えてください。

というのもGetKeyでは3〜4つ以上のキーを1フレームで取得すると
失敗するようで。



この記事に返信する


inovia

リンク

2011/1/6(Thu) 20:36:05|NO.36535

>3〜4つ以上のキーを1フレームで取得

同時押しした時に3つ以上のキー入力が読み取れないことならキーボードの問題。
Nキーロールオーバーでググって。



you

リンク

2011/1/7(Fri) 13:12:38|NO.36547

inoviaさん、そしたら
oncmdでメッセージを捕まえて記憶するしかないのですかね?



てれてれ

リンク

2011/1/7(Fri) 13:59:30|NO.36549

>oncmdでメッセージを捕まえて記憶するしかないのですかね?
そういう問題じゃなくてキーボードのスペックの問題なんじゃないでしょうか。
Nキーロールオーバー機能のあるキーボードであれば、getkeyでも全てのキー状態を取得出来るはずです。



ひらまる

リンク

2011/1/7(Fri) 15:09:19|NO.36552

例えばほとんどのキーボードでは、
スペースキー押していると、
矢印キーを2つ以上認識できません。

シューティングゲームでスペースキーを射撃ボタンにしてしまうと、
撃ちながらの斜め移動ができなくなる可能性があります。

なので射撃ボタンは、
ほとんどのキーボードにおいて矢印キーと競合しないZキーなどにする場合が多いです。



みけCAT

リンク

2011/1/7(Fri) 16:59:18|NO.36554

キーボードの問題もあるかもしれないけど、
全てのキーの状態を一度に取得するならGetKeyboardState() APIはどうでしょうか?
詳しくはググってください。
#uselib "user32"
#func GetKeyboardState "GetKeyboardState" var title "キーの状態を取得" sdim keys,256 repeat redraw 0 color 255,255,255 boxf 0,0,640,480 color 0,0,0 GetKeyboardState keys for y,0,16 for x,0,16 if peek(keys,y*16+x) & 0x80 { pos x*30,y*20 mes str(y*16+x) } next next redraw 1 await 10 loop



you

リンク

2011/1/7(Fri) 17:45:43|NO.36555

みけCATさん、それではNキーロールオーバーはどうなるのでしょうか?



GENKI

リンク

2011/1/7(Fri) 19:34:35|NO.36556

結論から言えば3キー以上の同時取得はあきらめて、ゲームコントローラに対応することをお勧めします。
過去に同じ話題がなんどか出ていますので、まずは「キーロールオーバー」で過去ログを検索してください。


関連サイト:
HSP開発wiki - 小ワザ/ジョイスティック ・キーボードのキーロールオーバー
http://hspdev-wiki.net/?%BE%AE%A5%EF%A5%B6%2F%A5%B8%A5%E7%A5%A4%A5%B9%A5%C6%A5%A3%A5%C3%A5%AF#t64da8e0



you

リンク

2011/1/7(Fri) 19:46:25|NO.36557

ありがとうございました。とりあえずキーロールオーバーについてもう少し調べてみます。



ONION software Copyright 1997-2023(c) All rights reserved.