問題1の解答例
キー、ジョイパッドの入力のアルゴリズムは、以下のようなものでした。(上キーの場合。)
1)入力状態を表す変数ukeyに、0を代入する。
2)digetkeystate key,0を行い、カーソルキーの上が押されていたら1を代入する。
3)digetkeystate key,1を行い、yが押されていたら1を代入する。
4)digetjoystate key,0を行い、十字キーの上が押されていたら1を代入する。
ということは、4)に相当する処理をnjoy(ジョイパッドの本数)-1までやればよいということになります。
5)digetjoystate key,1を行い、十字キーの上が押されていたら1を代入する。
6)digetjoystate key,2を行い、十字キーの上が押されていたら1を代入する。
・
・
・
?)digetjoystate key,njoy-1を行い、十字キーの上が押されていたら1を代入する。
4)以降は、repeat、loop文を使えばいいですね? つまり、以下のように修正すればよいということになります。
; キー、ジョイパッドの入力 *In_Key ckey=0 ukey=0 dkey=0 lkey=0 rkey=0 digetkeystate key,0 if key&256!0 { ckey=1 } if key&1!0 { ukey=1 } if key&2!0 { dkey=1 } if key&4!0 { lkey=1 } if key&8!0 { rkey=1 } digetkeystate key,1 if key&16777216!0 { ukey=1 } if key&2!0 { dkey=1 } if key&64!0 { lkey=1 } if key&1048576!0 { rkey=1 } if njoy>0 { repeat njoy digetjoystate key,cnt if key&16!0 { ckey=1 } if key&1!0 { ukey=1 } if key&2!0 { dkey=1 } if key&4!0 { lkey=1 } if key&8!0 { rkey=1 } loop } return
このような修正を行っても、ジョイパッドを持っていない人、あるいは1本しか持っていない人は、テストのしようがないですね? 私も2本しか持っていません。ですから3本以上つながっている場合の動作確認はできません。