投稿
Sきち 4405chan
@LOOPを使わないボタン待ち。 FOR I=0 TO2 I=I-1 VSYNC 1 BT=BUTTON(1) IF BT==16 THEN @SABLOOP NEXT @SABLOOP ?"まあWHILEをつかったほうがらくだけどね。"
3そうだね
プレイ済み
返信[1]
親投稿
かつみ opoQsn
WHILEを使うと '----- PRINT“Aボタンをおしてね” WHILE BUTTON()!=16 WEND PRINT“OKです”
1そうだね
プレイ済み
返信[2]
親投稿
有効性はともかくとしてループのラベルを使わないのに飛ぶためのラベルを使ってるのは惜しいので、ボタン判定ではIを大きな数字にするか、BREAKするかした方がいいかも?
0そうだね
プレイ済み
返信[3]
親投稿
わたしは、BREAKでループから抜けるのが好きです。 理由は、ラベル名を考えなくていいのがうれしいですがら。
1そうだね
プレイ済み
返信[4]
親投稿
Sきち 4405chan
でんぺんさん> 確かにそっちの方が無駄な(?)処理を省けますね。 こういう場合はGOTOを使うのかな? WHILE BT=BUTTON(1) IF BT==16 THEN @SAB IF BT==32 THEN BRAKE(間違っていると思う) WEND END @SAB ?"Aボタンをおしたなぁ。ゆるさぬ! END
1そうだね
プレイ済み
返信[5]
親投稿
かつみ opoQsn
そのWHILEの使い方だとエラーですよ。 BRAKE→BREAK です
1そうだね
プレイ済み
返信[6]
親投稿
Sきち 4405chan
ラベル名と変数名は考えるのが難しいですよね。
2そうだね
プレイ済み
返信[7]
親投稿
ふつうにやるならかつみさんのやり方がベストだと思いますよ〜。今回はあえてFORを使ってみてるのかな、と。 ちなみにFORを使った変則的なやり方としては、 FOR I=0 TO 1:I=BUTTON(1)==16:NEXT なんて書き方もありますよ。まあ素直にWHILEかREPEATを使った方がいいと思いますけどね〜。
1そうだね
プレイ済み
返信[8]
親投稿
Sきち 4405chan
よし。おら、今度からWHILEを使うっぺ!
0そうだね
プレイ済み
返信[9]
親投稿
ちなみに基本的にはGOTOは使わなくても大丈夫なんですよ。上記の例だと例えば、 WHILE 1 BT=BUTTON(1) IF BT=16||BT==32 THEN BREAK WEND IF BT==16 THEN ?"Aボタンをおしたなぁ。ゆるさぬ!" ENDIF END とすれば動作上同じでGOTOやラベルは出てこなくなります。
0そうだね
プレイ済み
返信[10]
親投稿
けい kei0baisoku
やる事が「ボタンを押すまでループ」だから、そういう意味でもWHILEかUNTILで作るのが一番自然で後から見ても分かりやすいですね。 →「UNTIL ボタンを押すまで」「WHILE ボタンを押していない間」
1そうだね
プレイ済み
返信[11]
親投稿
おちゃめ ochame_nako
FOR~NEXTを使ったループだと FOR I=0TO BUTTON(2)!=16I=0NEXT と書くこともできますね。 プチコンのFORは終了値に条件式を書くことができるためWHILE~WENDやREPEAT~UNTILが無かったmkIIではこのような書き方は多用されていました。 Aボタン入力待ち処理が1フレームの間に複数来る可能性がある場合は誤判定防止のためWAITを入れておくと良いです。
1そうだね
プレイ済み