どーも、こんにちは。初めまして。
私も東方STGを作っているので参考になると思います。
ありさんの言うとおりですが
if key & 4 : x = x + dx
if key & 1 : x = x - dx
if key & 2 : y = y - dy
if key & 8 : y = y + dy
if key & 32 :
2+8=10、4+1=5 → 15+32を足した数字を「stick key, 15」に入れればおkですね。
少し気になったのですが、エンターキの場合少し操作しずらいような気がします。
まー何か理由があるはずなのであえて突っ込みません。
形がかなり違うかも知れませんが、おまけで私のサンプルプログラム載せときますね。
-------------------------------------------
screen 0,380,450 ;サイズ
;画像を出す
buffer 1
picload "素材.bmp"
gsel 0,1
;自機
myx=180 ;自機の座標
myy=380 ;自機の座標
;****************メインループ*************************
*main
redraw 2
color 20,20,20
boxf
gosub *KEYCHK ;自機の移動
gmode 2 ;透明色付きコピー
;自機の表示
pos myx,myy
gcopy 1,1,0,29,42
;低速移動
getkey skey,13 ;エンターキー
;16 ;シフトキー
if skey{
pos myx,myy ;自機の座標
; gcopy 1,34,0,29,42 ;自機(低速)の表示
; color 0,255,0 ;緑色
; pos 200,80
; mes "シフト押されたよ";ボタン確認
mySpd = 1 ;自機のスピード
} else { ;違う場合
; color 0,255,0 ;緑色
; pos 200,80
; mes "シフト押されてないよ";ボタン確認
mySpd = 3 ;自機のスピード
}
redraw
await 10
goto *main
;****************自機の移動***************************
*KEYCHK
stick ky,15 ;キー取得
if ky & 1 : myx- = mySpd ;←の移動スピード
if ky & 4 : myx+ = mySpd ;→の移動スピード
if ky & 2 : myy- = mySpd ;↑の移動スピード
if ky & 8 : myy+ = mySpd ;↓の移動スピード
return ;サブルーチンから復帰
----------------------------------------------
コメントアウトしているところは邪魔だと思ったら削除しちゃってください。
動作確認用なので。