HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
0709
SqOc~までrepeat7未解決


SqOc

リンク

2015/7/9(Thu) 22:19:24|NO.70003

すいません。ほかの質問している途中ですが、、、

a=5になるまで
a+1を続けるのって、どうすればいいですか?
初歩的ですいません


a=0 repeat if a=5{ goto *rout }else{ a+1 } loop *rout mes a

こんなかんじで、できたのですが、ゲームにあわないようなので、
あと、長いので、
何かほかの方法はありますか?
教えてください!!



この記事に返信する


Humi/BassClef

リンク

2015/7/9(Thu) 23:12:51|NO.70005

repeat には他にもいれられる引数があってですね(repeatを選択して上でF1を押すと見れる)
repeat <ループ回数>, <cntの初期値>
というものを指定することもできるのですよ。ですから

a = 0 repeat 5 a++ loop
で a を 5 にすることができます

あと最初の内はわからないかもですけど、サンプルであげている
repeat-loop の中で goto をするのはよくないです。
looplev という内部変数があって、正しく repeat-loop が終わっていないと
カウントが正しくなくなり、何回もすると、エラーになったりします。



Humi/BassClef

リンク

2015/7/9(Thu) 23:25:01|NO.70007

上の記述で書き忘れたことですけど、
どうしても、repeat-loop 中に抜けたいというのなら
break という命令を使うといいです。

a = 0 repeat a++ if 5 == a :break await loop
あと終わりのなさそうなrepeatにする場合、
中に await をいれたほうがいいです。
では、がんばってくださいな。



cats

リンク

2015/7/11(Sat) 13:16:10|NO.70041

蛇足ですが、ループ関連の命令はたくさんあるので書いておきます。
自分の好みや、使用場面に合わせて使いやすいものを使うといいです。

n = 5 ; until a == n // while - wend a = 0 while a != n mes strf(" a = %d", a) a++ wend mes "end" // for - next for a, 0, n, 1 mes strf(" a = %d", a) next mes "end" // repeat - loop repeat n mes strf(" cnt = %d", cnt) loop mes "end" // do - until a = 0 do mes strf(" a = %d", a) a++ until a == n mes "end" stop



Mituki

リンク

2015/8/17(Mon) 22:37:22|NO.70856

ifを使えばいいよ。

repeat a++ if a>=6 :stop wait 15 mes a loop
いちおうこんなスプリクトを入れておく。



空気

リンク

2015/8/17(Mon) 23:59:07|NO.70869

他の方にそっくりです。
repeat
a++ if a=5 : break ;100回とか膨大な数をループしないのでいらないはず「await」や「await 0」 loop stop;ゲームでgosubしているならreturn等



Velgail

リンク

2015/8/18(Tue) 03:32:07|NO.70872

a=5になるまで ということなので、用途としてはfor文をオススメします。

for a,0,5 mes a wait 0//ループの時はとりあえず付ける癖を付けましょう。 next mes finish stop
ループ内にwait系を置くのは、私の場合なら1万STEP(実行行数が1万行)以上にならないようにとしているかな。気分で大幅に変更されるが。



窓月らら

リンク

2015/8/18(Tue) 08:26:08|NO.70875

 

repeat 6: a=cnt: loop mes a



ONION software Copyright 1997-2021(c) All rights reserved.