白か黒が4つ以上並んでいればそれらを黄色で塗るスクリプトを書いたのですが
4個以上並んでいても塗られません。色々調べたり
デバッグもしてみましたが原因が分かりません。
このスクリプトの問題が分かる方、教えて下さい。お願いします。
尚、このスクリプトは何組か4つ以上並んでいても最初の1組しか塗らないようになっていますが
それは問題ありません。
#const size 20 //サイズ #const aida 10 //間 repeat 0 //チェック関数 #defcfunc check int mx,int my,int vx,int vy,local nx,local ny,local ret,local len,local tn nx=mx:ny=my if map(mx,my)=0:return 0 tn=map(mx,my) ret=1 repeat 3 nx+=vx:ny+=vy if (nx<0)|(nx>6)|(ny<0)|(ny>5):ret=0:break if map(nx,ny)!tn:ret=0:break loop return ret loop dim map,7,6 randomize color 192,192,192 boxf 0,0,size*7+aida*8,size*6+aida*7 repeat 7 xn=cnt repeat 6 a=rnd(3) map(xn,cnt)=a if a{ b=(a>>1)*255 color b,b,b circle aida*(xn+1)+xn*size,aida*(cnt+1)+cnt*size,aida*(xn+1)+(xn+1)*size,aida*(cnt+1)+(cnt+1)*size } loop loop //チェック repeat 7 icnt=cnt repeat 6 xcnt=cnt repeat 3 scnt=cnt repeat 3 if (scnt=1)&(cnt=1):continue if check(icnt,xcnt,scnt-1,cnt-1):goto *en loop loop loop loop stop repeat 0:repeat 0:repeat 0:repeat 0 *en wnt=cnt loop:loop:loop:loop tnt=map(icnt,xcnt) gnt=0 redraw 0 color 255,255,0 repeat if (icnt>6)|(xcnt>5):break if tnt=map(icnt,xcnt){ circle aida*(icnt+1)+icnt*size,aida*(xcnt+1)+xcnt*size+size,aida*(icnt+1)+(icnt+1)*size,aida*(xcnt+1)+(xcnt+1)*size+size }else{ break } icnt+=scnt:xcnt+=wnt loop redraw 1