問題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本以上つながっている場合の動作確認はできません。


[戻る] inserted by FC2 system