トピック
Mr.ひろ☆ hiroto0120

教えてください

「AボタンとRボタンを同時押しすればポーズのラベルへ」、「BボタンとLボタンを同時押しすればメインのラベルへ」というのは、どうやって作るのですか?
0そうだね
プレイ済み
返信[1]
親投稿
MIKI ifconfig
if button()==#a+#r then goto @pause if button()==#b+#l then goto @main
1そうだね
プレイ済み
返信[2]
親投稿
ぺぃ shiba_petitcom
まずBUTTON()で受けとる数から説明すると、 &B0000000000 この数は2進数という数で、 この0の数は働ける人の数だと思って下さい。 そして例えばAボタンがが押されたとすると、 &B0000010000 となります。 ちなみにこれは説明書にもあるように、 上、下、左、右、A、B、X、Yの順に1になる場所が右から左へとずれていきます。
0そうだね
プレイ済み
返信[3]
親投稿
ぺぃ shiba_petitcom
2進数の0の数が働ける人数だとすると、ボタン2つ分、つまり2人を働かせれば良いのです。 その結果がMIKIさんが書いてくださったものになります。 つまり、2つ同時に押させたいときはBUTTON() AND #(ボタン)+#(ボタン)というものを書けば良いのです。
0そうだね
プレイ済み
返信[4]
親投稿
ぺぃ shiba_petitcom
ここからは少し分かりにくいかと思います。 MIKIさんが書いたコード以外にも、 IF BUTTON() AND #L+#A THEN @PAUSE というような書き方があります。 ANDというのは一言で言うとフィルターです。左側の数字と右側の数字を先程みたいに1と0だけにして、両方とも同じ桁が1の時にそこは1、そうではないときは0になります。 その結果、2進数を私達の数える数にするとどうなるか、というのがANDです。
0そうだね
プレイ済み
返信[5]
親投稿
Mr.ひろ☆ hiroto0120
ありがとうございます!!
0そうだね
プレイ済み
返信[6]
親投稿
おちゃめ ochame_nako
Shibapediaさんへ IF文においては条件部分がtrueの場合(0以外の値の場合)にTHEN以下の処理を実行するのですが、IF BUTTON() AND #L+#A THEN ~という書き方だと「LボタンとAボタンを両方押した場合」ではなく「LボタンもしくはAボタンを押した場合」になってしまうんですよね。 ANDを使ってLボタン、Aボタンの両方を押している場合を判定するにはIF (BUTTON() AND #L+#A)==#L+#A THEN ~とか、IF BUTTON() AND #L && BUTTON() AND #A THEN ~のようにする必要があります。 Lボタン、Aボタン以外のボタンを押していてもOKか否かで記述方法が変わります。(L、A以外のボタンを押していたらダメならばMIKIさんの書き方になる)
1そうだね
プレイ済み
返信[7]
親投稿
Mr.ひろ☆ hiroto0120
ポーズのラベルへの移動はできたのですが@ポーズから@メインへ移動ができません…ポーズ中のループを教えてくれませんか?
0そうだね
プレイ済み
返信[8]
親投稿
HMF gunsofthemy
余談ですが、それぞれのボタンには数値が設定されており(例 A→16 十字キー下→2 など)、前はその数値を検出させていました。 なので、その数値の合数で検出させることも可能です。(例 A+R→16+256=272)
1そうだね
プレイ済み
返信[9]
親投稿
更に余談。 前はセレクトボタンから8192が返ってきた
1そうだね
プレイ済み
返信[10]
親投稿
Mr.ひろ☆ hiroto0120
僕はポーズ用の変数を使っているのですが、 ON 変数 GOTO(GOSUB) @MAIN,@PAUSE って使えますか?
0そうだね
プレイ済み
返信[11]
親投稿
HMF gunsofthemy
オワたず(^p^)ゝ さん» どうやったの!? SELECTボタンを押したら止まるハズじゃ。ついでに検出方法も・・・。
0そうだね
プレイ済み
返信[12]
親投稿
HMF gunsofthemy
返答書きます。 ON 変数 GOTO ラベル1,ラベル2,・・・ は普通に動作しますよ。 ただし、写真の様にしたらエラー吐いたんでGOSUBの時はIFで管理していいと思います。余談ですがこの場合、ラベル1に進むには変数に0ではなく1を入れねばなりません。なんでだろうね。
0そうだね
プレイ済み
返信[13]
親投稿
Mr.ひろ☆ hiroto0120
これでは メインからポーズ はできるけど 戻す ができません。 どこが違うのですか?
0そうだね
プレイ済み
返信[14]
親投稿
HMFさん≫昔、ダイアログのバグで強制終了ができなかった時、 ダイアログを表示した後、セレクトを押しながらタッチでダイアログを終了させると検出出来た。プログラムがどんなだったかは忘れたけど() 多分こんなの。 DIALOG "test" B=BUTTON() ?B
0そうだね
プレイ済み
返信[15]
親投稿
Mr.ひろ☆ hiroto0120
実行結果がこれだよ… (元に戻せない…)
0そうだね
プレイ済み