トピック
シオン ITE31040

BUTTON命令

5秒間に、一回でもAボタンを押せば@1にいけるようにするには、どうしたらいいですか?
1そうだね
プレイ済み
返信[1]
親投稿
nobu divine-creator
5秒間に…ってところがハッキリ分からないけど、6秒経過したらボタンを押してもダメってこと? それなら、ボタン命令の後に5秒待つようにして、6秒後には次へ進むようにすれば良いんじゃない? 通常の無限ループ内にボタン命令を入れれば、5秒どころか押されるまでずっと待つわけだから、そうしたいという話じゃないですよね?
1そうだね
プレイ済み
返信[2]
親投稿
シオン ITE31040
IF BUTTON(2)==#A THEN WAIT 300 GOTO @1 ENDIF ってこと?
0そうだね
プレイ済み
返信[3]
親投稿
otta777 otta777a
M=MAINCNT WHILE MAINCNT-M<300 && (BT AND #A)==0 BT=BUTTON(2) WEND IF (BT AND #A)!=0 THEN GOTO @1 PRINT "5秒経過" END @1 PRINT "Aボタン” END こういうことでいいのかな?
1そうだね
プレイ済み
返信[4]
親投稿
1例を考えて見ました。 1)5秒間の開始時に、Aボタンが押されたことを忘れ2の監視を始める。 2)5秒間1/60秒毎に、以下の2つを監視する。 2-1)Aボタンの状態を調べる。Aボタンが押されたら、Aボタンが押されたことを記憶する。 2-2)5秒間過ぎたかを調べる。5秒間過ぎていたらAボタンが押されたかを調べ、押されていたら@1の処理をする。 注)ループの範囲は条件が示されていないので、適当にやってください。 こんなので、答えになっているでしょうか。
1そうだね
プレイ済み
返信[5]
親投稿
nobu divine-creator
いや、それだとボタンが押された後に、5秒待ってから次へ進むことになるけど、そうしたいんじゃないよね? WAIT 300を最後にすれば、ボタンが5秒以内に押されれば@1へ進み、押されないまま6秒経てば次へ進むことになるはずですよね?
1そうだね
プレイ済み
返信[6]
親投稿
五秒間待ってから、その中でボタンが押されたかどうかを判別する、という解釈でよろしいでしょうか。 でしたらまず、 押されたかどうかを判別するフラグを定数として定義して下さい。ここではF=0としておきます。 そしてループの中で5秒待つ必要があるので、フレーム数を代入する変数も必要になります。ここでは、T=300としましょう。 ループ内は、BUTTON()関数が反応したらAが0でなくなるような命令、そして300フレームだけ数える命令、つまり1フレームでTが1減るようにすればOKです。 そして、Tが0になったときに、Aが0であるかどうかを判別して、0でなかったら@1に飛ぶようにすればおしまいです。
1そうだね
プレイ済み
返信[7]
親投稿
まとめると、こんな感じです。 A=0 T=300 WHILE T>0 DEC T VSYNC IF BUTTON()!=0 THEN A=1 WEND IF A!=0 GOTO @1 (このサンプルはあくまで参考です)
1そうだね
プレイ済み
返信[8]
親投稿
シオン ITE31040
多分こうですね。 5か6かわからないSさんに怒らないでください。(てへぺrrrrr(殴
0そうだね
プレイ済み
返信[9]
親投稿
ΖΕΧ ZEX256
FOR I=0 TO 60*5:WAIT IF#A==BUTTON(2)GOTO@1 NEXT END @1
1そうだね
プレイ済み
返信[10]
親投稿
タイムアウト時間が5秒のAボタン入力待ちなら余計な表示がされますが、 DIALOG "",,,5 IF RESULT==1 THEN @1 END @1
1そうだね
プレイ済み
返信[11]
親投稿
ΖΕΧ ZEX256
ちょっとミスった FOR I=1 TO 60*5:VSYNC の方がいいか
1そうだね
プレイ済み
返信[12]
親投稿
neet#ニート# HIMAJIN.MIV
ーーーーーーーー MC=MAINCNT WHILE MAINCNT-MC<60*5 IF BUTTON==#A THEN 処理 WEND ーーーーーーーー WHILEの条件式について。 MAINCNT-MCはプログラム実行からのフレーム数で5秒間だけループする仕様となりその中でAを押したかをIF文を使って判定。すなわち5秒間内にAを押したかを判定することができる。
1そうだね
プレイ済み
返信[13]
親投稿
シオン ITE31040
ありがとうございます。 できました! これで、できるようになるぞ。
0そうだね
プレイ済み