キー入力改善・解説

計4種類の操作スタイルに対応する件、どんなコードを書いたか晒しておきます。

kyst="魔警%&'(AWDSJILKdhfe"   ;画像番号$1E,$1A,$1C,$18の5倍$96,$82,$8C,$78、矢印、AWDS、JILK、TenKey4865
〜略〜
repeat 20 ; kystのバイト数分回る
    getkey stk,peek(kyst,cnt) ; 0-3のときに先頭4バイトを見てしまうが実害なし。
    if(stk){
        eev=cnt\4,peek(kyst,eev); 現在のCntを元に方向と画像ベース番号5倍値を求める。
	〜略〜
        break ; 有効な方向入力をされたなら抜ける。
    }
loop
〜略〜
efc=(eew+eeq)/5 ; プレーヤー歩行アニメーション用に移動カウンタ(8→1)を5で割った値を反映

文字列変数kystの先頭4バイトはプレーヤー画像のベース番号(30,26,28,24)を5倍したもの。
続けて、操作スタイル毎のキーコードを、それぞれ方向順(左上右下)に並べて格納してあります。
なぜ先頭4バイトに倍率がかかっているかというと、そのままだとコントロールコード領域になって
ダブルクォーテーション内で記述ができないからです。
この5倍は絶妙な値。
上記のベース番号の5倍は、それぞれ16進で$96,$82,$8C,$78で、これをShift-JIS漢字にすると
x9682→"魔"、x8C78→"警" です。(偶然ですが「魔警」という邦題の香港映画がありました)
そして、getkeyで検知したいキーコードともぶつかりません。
更に、実際に使用する画像番号efcを求める式の計算で、辻褄を合わせられる値でもあります。
残りの「%&'(AWDSJILKdhfe」は、チェックするキーコードに相当するASCII文字。
・WASD,IJKLスタイルは、キーコードと文字が対応するのでそのまま左上右下の順に記述。
・"%&'("は矢印キーのキーコードに対応。左=25→"%"、上=26→"&"、右=27→"'"、下=28→"("。
・"dhfe"はテンキーのキーコードに対応。[4]=100→"d",[8]=104→"h",[6]=102→"f",[5]=101→"e"。


キー入力検知をする処理では、Repeat-Loopにてkystのバイト数分のループをしています。
peek関数でkyst内のcntで指定される場所の値を拾ってきて、getkeyでキー入力チェック。
repeat開始値を省いたのでkystの先頭4バイトにある画像ベース番号も無駄に参照していますが、
検知したいキーコードとぶつからないため問題はありません。
チェック対象のキーが押されていた場合は、方向値(cntを4で割った余り)を計算し、その値を
使ってkystをpeekして画像ベース番号の5倍値を求めます。
4方向の何れかが押されていればそれ以上はチェック不要なので、Break。