mod_dgetkey.as

HSP3Dish用のWindows上でキーボードの押された状態を取得します。


  • dgetkey : 0 = 一度だけ検出、 1 = 連続で検出、2 = 連続で検出(離された瞬間も検出)

  • dgetkey_dbpush : 0 = ダブルプッシュされてない、 1 = ダブルプッシュされた

■命令 =============================================

■dgetkey_init
・概要 当モジュールの初期化処理を行ないます。 必ず一番最初に呼び出してください。
・引数 なし
・戻り値 なし
・使用例 dgetkey_init


■dgetkey p1, p2, p3, p4
・概要 p2で指定した文字コードのキーが押されているか取得します。 指定したキーが押されると、[1]が取得できます。押されてないと[0]が返ります。 検出モードが[2]の場合、押されている間は[1]が取得され、離されると[2]が取得できます。 HSP標準のgetkeyとほぼ同じです。
・引数 p1 : 押された状態を取得する数値変数 p2 : 取得したいキーコード p3 : 検出モード 0 = 押された瞬間を一度だけ検出 1 = 連続で検出 2 = 離された瞬間を検出(押されている間は[1]が取得されます) p4 : 検出モードが[1]または[2]のときに、指定の時間毎に押された情報を取得する。単位はミリ秒。
・戻り値 なし
・使用例 dgetkey a, 'A'
if a == 1 { dialog "Aが押されました。" }


■関数 =============================================

■dgetkey_dbpush(p1, p2)
・概要 指定したキーコードのダブルプッシュを取得します。 p2でダブルプッシュと認識する時間をミリ秒で指定できます。
・引数 p1 : 取得したいキーコード p2 : ダブルプッシュと認識するミリ秒(省略すると700ミリ秒が指定されます)
・戻り値 0 = ダブルプッシュされていない 1 = ダブルプッシュされた
・使用例 a = dgetkey_dbpush('A', 1000)

;サンプル


#include "hsp3dish.as"#include "mod_dgetkey.as"
#const FALSE 0#const TRUE 1
#const MOVE_VALUE 8#const SHOT_MAX 10#const SHOT_MOVE_VALUE 8
#const TAMANE_NO 0#const SHOT_NO 39
screen 0, 640, 480
celload dir_tv + "tamadot.png", 1 celdiv 1, 64, 64, 64 / 2, 64 / 2
dgetkey_init
px = 640 / 2 ; たまねの初期位置X py = 480 / 2 ; たまねの初期位置Y
w = 0 ; Wキー a = 0 ; Aキー s = 0 ; Sキー d = 0 ; Dキー m = 0 ; Mキー
dim shot_x, SHOT_MAX ; ショットX dim shot_y, SHOT_MAX ; ショットY dim shot_flg, SHOT_MAX ; ショットフラグ(0:撃ってない, 1:撃った)
repeat redraw 0 color 0, 0, 0 : boxf
dgetkey w, 'W', 1 ; [W]を取得 dgetkey a, 'A', 1 ; [A]を取得 dgetkey s, 'S', 1 ; [S]を取得 dgetkey d, 'D', 1 ; [D]を取得 dgetkey m, 'M', 1, 100 ; [M]を100ミリ秒ごとに取得
if w == 1 : py -= MOVE_VALUE if a == 1 : px -= MOVE_VALUE if s == 1 : py += MOVE_VALUE if d == 1 : px += MOVE_VALUE if m == 1 { repeat SHOT_MAX if shot_flg(cnt) == FALSE { shot_x(cnt) = px shot_y(cnt) = py shot_flg(cnt) = TRUE break } loop }
color 255, 255, 255
pos 0, 0 mes "上 = W" mes "下 = S" mes "左 = A" mes "右 = D" mes "ショット = M"
gmode 3,,,255 pos px, py : celput 1, TAMANE_NO
repeat SHOT_MAX if shot_flg(cnt) { shot_y(cnt) -= SHOT_MOVE_VALUE if shot_y(cnt) < 0 : shot_flg(cnt) = FALSE pos shot_x(cnt), shot_y(cnt) : celput 1, SHOT_NO } loop
await 16 redraw 1 loop
mod_dgetkey.as - 以前のサイトのリスト ページ