プレイ日記
ラベルで作ったループにbreakが使えないのに気づいたのです
8そうだね
プレイ済み
返信[1]
親投稿
ラベル→目印 GOTO→決めた目印に移動する 「始まり」と「終わり」という関係にはなっていないので、当然っちゃ当然なんだよね
3そうだね
プレイ済み
返信[2]
親投稿
SquidSky ugomemo_gorohati
BREAKが使えるのは、WHILE~WEND,FOR~NEXT,REPEAT~UNTILにだけ使えます。 WHILE 1 IF A>100 THEN BREAK VSYNC 1 WEND
3そうだね
プレイ済み
返信[3]
親投稿
ずっとそれを使ってたので気がつかなくてラベルを使ったゲームにbreak使ったらsyntax errorって出てきて、、、。
2そうだね
プレイ済み
返信[4]
親投稿
SquidSky ugomemo_gorohati
BREAKみたいに扱うには @LOOP GOSUB @TAS VSYNC 1 GOTO @LOOP @TAS IF A>10 THEN RETURN 'BREAK A=A+1 RETURN 'ふつうのRETURN とするとできます。
2そうだね
プレイ済み
返信[5]
親投稿
サブルーチン内なら使えるんですかあ。
0そうだね
プレイ済み
返信[6]
親投稿
あ、間違えた、良く見てなかったです
1そうだね
プレイ済み
返信[7]
親投稿
SquidSky ugomemo_gorohati
「'」以降の文字列はコメントですけど~? (⊃ーωー)?
2そうだね
プレイ済み
返信[8]
親投稿
間・違・え・た・の・で・す。。。。|ω °) チラ......
2そうだね
プレイ済み
返信[9]
親投稿
say sayer.exe
GOTO直下に落ちるすべがないよ?
2そうだね
プレイ済み
返信[10]
親投稿
G.O.S.U.B
0そうだね
プレイ済み
返信[11]
親投稿
say sayer.exe
ずっとGOSUB~RETURNされてるだけだよ?
2そうだね
プレイ済み
返信[12]
親投稿
say sayer.exe
あ、GOTOループ内でね
2そうだね
プレイ済み
返信[13]
親投稿
確かにこれは単なる無限ループですねえ。
0そうだね
プレイ済み
返信[14]
親投稿
SquidSky ugomemo_gorohati
あ!(°<°) すみません!サンプルプログラムで、@TASでAが10以上ならばRETURNする部分で、不十分な部分がありました! 次の部分を追加してください。 【@TASの、IF A>10 THEN RETURN部分】 ・・・RETURNのあとに、[空白]BREAKFLAG=TRUEを追加してください。 【@LOOPの、GOSUB @TASの後の行に次を追加】 IF LOOPFLAG THEN END
1そうだね
プレイ済み
返信[15]
親投稿
say sayer.exe
1:@LOOP 2: GOTO @BRK 'BREAKに相当 3:GOTO @LOOP 4:@BRK これが正解 この場合だと、単に3行目がスキップされるだけなんだけど、たいていの場合、BREAK文はIF文の中に組み込まれて使われるので、 2: IF 条件 THEN GOTO @BRK と、普通はこう書くでしょうね ちょっと話は外れるけど、GOTO文自体は実はかなり強力な命令で「だいたいプログラミングが理解してきたな?」と感じてきたら封印したほうがいい命令だったりします
1そうだね
プレイ済み
返信[16]
親投稿
MIKI ifconfig
「if then else endif と while wend (repeat until)あれば goto いらないよね」 って流れがあって、それでもループ途中から脱出したい人のために break という仕掛けが用意された。 break や continue を「飼いならされた goto」と呼んだりしますね。 まあ所詮場当たり的な仕掛けだから、while の多重ループから脱出するスーパー break みたいなことはできない。
1そうだね
プレイ済み