More ... | HSPHelp:repeat
repeatrepeat p1,p2 [repeat〜loopの間をくり返し実行] p1 = 1〜(-1) : 条件式 p2 = 0〜(0) : システム変数 cnt のスタート値 説明repeat〜loopの間をくり返し実行します。 repeat命令は、くり返しの開始地点を示します。 loop命令は最後に通過したrepeat命令まで戻ります。つまり、 例: repeat 5 print "hoge!!" loop のようなプログラムは、「hoge!!」を5回表示します。 repeat命令のパラメータ、p1でくり返しの回数を指定することが できます。回数の指定を省略、またはマイナス値を指定すると 無限ループになります。 繰り返しの回数が0の場合は、繰り返し部分は実行されず対応する loop命令までジャンプします。 例: repeat -1 wait 3 print "hoge" loop stop 例: repeat 0 print "hoge?" loop print "foo!!" stop repeat〜loopを含む部分をさらにループさせるネスト構造も記述 することができます。ただし、正常にloop命令を通ってループ しないで抜けたりすると、ネスト構造がおかしくなるのでループ から強制的に抜けるような構造にはしないようにしてください。 例: px=0 :py=0 :dx=5 :dy=10 ppx=px+dx :ppy=py+dy clf = 0xFFFFFF peek cr,clf,2 :peek cg,clf,1 :peek cb,clf,0 repeat winy/dy cny = cnt repeat winx/dx r = cr-(cnt&cny) :g = cg-(cnt|cny) :b = cb-(cnt^cny) pdx = cnt*dx :pdy = cny*dy color r,g,b boxf px+pdx,py+pdy,ppx+pdx,ppy+pdy loop loop stop ループ回数を調べたい時や、カウンターを利用したい時のために システム変数cntを参照することができます。cntは通常、0から スタートして、loop命令でループするたびに1づつ増えていきます。 ただし、repeat命令のp2でカウンタがスタートする数値を変更する ことも可能です。たとえば、repeat 3,1 のように指定した場合 には、変数cntの値は1,2,3の順で変化します。 例: repeat 30 wait 3 redraw 0 title "count: "+cnt color 0xFF,0xFF,0xFF :boxf 0,0,winx,winy color 0x32,0x32,0x3f pos cnt<<4,cnt<<4 :print ">>hoge" redraw 1 loop stop ループの内部で、強制的にループを抜け出す場合には、break命令 を使用してください。また、ループをやり直すためのcontinue命令 も用意されています。 例: repeat wait 3 getkey ShiftKey,16 getkey CtrlKey,17 if ShiftKey { break } if CtrlKey { continue 0 } title "count: "+cnt loop end グループプログラム制御命令 備考ver2.61標準命令 参照
|