キー入力情報取得
stick p1,p2,p3
p1=変数 : 読み込むための変数 p2=0~(0) : 非トリガータイプキー指定 p3=0~1(1) : ウィンドウアクティブチェックON/OFF
よく使われるキーボード及びマウスボタンの状態をまとめてチェックして変数に代入します。
stick命令が実行されると以下のような複数のボタン情報が1つの数値として、p1で指定した変数に代入されます。
1 : カーソルキー左(←)
2 : カーソルキー上(↑)
4 : カーソルキー右(→)
8 : カーソルキー下(↓)
16 : スペースキー
32 : Enterキー
64 : Ctrlキー
128 : ESCキー
256 : マウスの左ボタン
512 : マウスの右ボタン
1024 : TABキー
何もボタンが押されていない場合には0が代入されます。
もし複数のボタンが同時に押されていた場合には、それらの数値がすべて加算されます。
たとえば、カーソルキーの右とスペースキーが同時に押されている場合には、4+16の20が変数に読み込まれます。
この数値をif命令などでチェックする場合には、演算子「&」が役に立ちます。
例 :
stick a,0 ; 変数aにキー状態を読み出し
if a&16 : goto *spc ; スペースが押されたか?
if a&32 : goto *ent ; Enterが押されたか?
このように「変数&キー情報」で複数のボタン情報が入った数値から、 1つだけのキー情報を取り出すことができます。
stick命令は、 getkey命令によく似ていますが、最大の違いはボタンが押された瞬間だけを検出する点です。つまり、ボタンが押された時に1度だけ押されている情報を返し、あとは押されているボタンをはなすまでは、押されていることになりません。
ただし、p2の非トリガータイプキー指定により、押しっぱなしであっても情報を検出することができるようになります。
p2に押しっぱなしでも検出されるキーのコード(上の表にあるコードです。 複数の場合はそれぞれの数値を加えます)を指定すると、 そのキーだけはボタンが押されている間ずっと検出されるようになります。
この命令は、非常に複雑に見えますがキーを使ったスクリプトを作る際にとても便利な機能となるでしょう。
たとえば、シューティングゲームを思い浮かべてみてください。自分の機体は上下左右の方向にボタンが押されている間ずっと移動しなければなりません。しかし、ミサイルを発射するボタンは1回押してはなすまでは次の弾は発射されません。
このような場合には、上下左右のキーだけは非トリガータイプのキーに指定して、それ以外は1度だけ押された情報を返すようにすればいいわけです。
また、p3でウィンドウがアクティブでない場合は入力を無効にする機能をON/OFFすることができます。
p3が1か省略された場合は、HSPウィンドウがアクティブでない場合にはキー入力が無効になります。
p3が0の場合は、すべての状況下でキー入力を行ないます。
| getkey | キー入力チェック | |
| jstick | stick命令互換の値を取得する | (mod_joystick) |
| バージョン | 3.5 |
| 作成日 | 2017/09/08 |
| 著作者 | onitama |
| URL | http://hsp.tv/ |
| 備考 | ver3.5標準命令 |
| タイプ | 内蔵命令 |
| グループ | 基本入出力制御命令 |
| 対応環境 |
|
| hs ファイル | hsphelp\i_stdio.hs |