checkkeyを試してみた。
 結果だけを述べると
・キーを同時に押した場合、ある程度の数は認識してくれる
・英字、または"CTRL"などの特殊キーは、大文字小文字のどちらで指定しても認識してくれる。

 以下、長くなるので畳みます。



1.キーの同時押し
 まず気になったのは、同時に取得できるキーの数に制限はあるのか、という点。以下、テスト用スクリプト。

*define
game

*start
for %0 = 0 to 0 step 0
checkkey %1,"Z"
checkkey %2,"X"
checkkey %3,"C"
checkkey %4,"V"
checkkey %5,"B"
checkkey %6,"N"
checkkey %7,"Q"
checkkey %8,"W"
checkkey %9,"E"
checkkey %10,"R"
checkkey %11,"T"
checkkey %12,"Y"
checkkey %13,"UP"
checkkey %14,"RIGHT"
checkkey %15,"DOWN"
checkkey %16,"LEFT"

mov %20,0
for %0 = 1 to 16
add %20,%%0
next
itoa $20,%20
caption $20
wait 50
next


 色々と頑張ってみたが、最大でも11キー同時押しまでしか認識してくれませんでした。もしかしたらOSやキーボードによって多少認識可能数に差異があるかもしれませんが、ともかくこれだけ認識できれば十分でしょう。


2.取得キーの指定
 押下状態を取得したいキーを指定する際に文字列を使用しますが、その書式にはどの程度の自由度があるのか調べてみました。以下、検証スクリプト。


;定義節は省略
*start

for %0 = 0 to 0 step 0
checkkey %1,"z"
checkkey %2,"Z"
checkkey %3,"shift"
checkkey %4,"SHIFT"

mov %20,0
for %0 = 1 to 4
add %20,%%0
next
itoa $20,%20
caption $20
wait 50
next


 スクリプトを実行した結果、キャプションに表示されたのは
Z → 2
SHIFTキー → 2
 となりました。大文字小文字の区別無く認識してくれるようです。


3.まとめ
 大体こんな感じです。思ったよりキーを認識できる数が多かったので、checkkeyを使ったら普通にシューティングが作れそうですね。4方向を同時に押せてしまうので、キー処理に気をつけないといけないでしょうが。
 あと、試しているうちに気が付いた注意事項を下にまとめておきます。

○注意事項
・checkkey自体に「待つ」機能はない。「特定のキーが押されるまで待つ」という処理を行ないたい場合は「待つ」部分を自分で作ること。
・スクリプトをnscript.dat化していない場合、"d"を取得しようとしてもデバッグウィンドウが開くので注意。デバッグウィンドウが開いている状態でdを押すとちゃんと取得できる。
・テンキーの数字は取得できない。
・取得したいキーに全角を指定しても取得してくれない。エラーも出ない。
[PR]
by lyricist_m | 2009-03-29 14:45 | NScripter
<< シナリオ量とプレイ時間の概算(... シナリオ量とプレイ時間の概算 >>