[トップ][編集][ノート][編集履歴][一覧][最近の更新][->English]

HSPHelp:repeat


repeat

repeat 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標準命令

参照