プレイ日記
ちょっとしたテクニック。 シューティングやアクション等で「左へ動きながらAボタン」とかを入れたいけどBUTTON命令で複数のボタンが押されたとかの判定が面倒な方へ。 こうするとBTSが十字キー、BTGがボタンを押した時の値を返します。 お試しあれ。
10そうだね
プレイ済み
返信[1]
親投稿
解説。 BTで入力した値を「BTSが16で割った余り」「BTGが16で割って出た整数に16をかける」ようにしています。 これでBTSは十字キーのみ、BTGは各ボタンのみの値になる、という訳です。 実際のプログラムではBTSで方向、BTGで各ボタンが押されたかの処理を別々に行えるので動きながらボタンを押してもちゃんと処理が出来ますよ。
1そうだね
プレイ済み
返信[2]
親投稿
********** itd12d
さすがや...
0そうだね
プレイ済み
返信[3]
親投稿
どうもです。 これを応用すれば「Aボタンを押しながらBボタンを押す」とかも出来ますよ。
0そうだね
プレイ済み
返信[4]
親投稿
puzzle ziopuzzle
プチコンではビット演算も使えるらしくANDを使うことでそのビットが0か1かを計算できるみたいです BT=BUTTON() IF BT AND 1 THEN //上キー IF BT AND 2 THEN //下キー IF BT AND 4 THEN //左キー //BUTTONの説明の中のキーに対応している数字をANDの右に入れる
0そうだね
プレイ済み
返信[5]
親投稿
>puzzleさん その方法でプログラムを書いている方を何名か見ました。 まぁ今回のはもっと分かりやすくした形だと思ってます。
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
この方法だと十字ボタンを使って8方向ではなく4方向に動かしたり、十字ボタンを押しながらAボタンのみが押されているかどうか(B、X、Y、L、Rが押されてない)が簡単に判定できますね。
0そうだね
プレイ済み
返信[7]
親投稿
>おちゃめさん どうもです。この方法ですと#Aとかがそのまま使えるのが利点だと思ってます。 ちと複雑な話になりますが、ゲーム作ってて「そういやMSXは十字キーとボタンをSTICK、STRIGで別々に判別出来たっけ」と思ったのでこの方法を試してみたら上手く動きまして。
0そうだね
プレイ済み
返信[8]
親投稿
おちゃめ ochame_nako
ビット演算を使って同等の処理を行う場合は BTS=BT AND 15 BTG=BT AND NOT 15 となりますね。
0そうだね
プレイ済み
返信[9]
親投稿
おお・・・ こういう「答え」って頭捻ってるだけでは中々出ないんですよね。
0そうだね
プレイ済み