program New; {.include SRL/SRL.scar} function InIntArray(TheInt:integer;TheArray:array of integer):boolean; var i:integer; begin repeat if TheArray[i]=TheInt then result:=true; i:=i+1; until ((i=getarraylength(TheArray)) or (result)); end; procedure RemoveFromTPA(Index:integer; var TPA:array of tpoint); var swapTP:tpoint; AL:integer; begin AL:=getarraylength(TPA); swapTP:=TPA[AL-1]; TPA[AL-1]:=TPA[Index]; TPA[Index]:=swapTP; setarraylength(TPA,AL-1); end; type ColorTPA = record color:integer; tpa: array of tpoint; end; var PlayerDotCTPA:array of ColorTPA; parray,parray2,tx,ty,tmpcolor,mmbmp,dropdot,AL:integer; ColorArray: array of integer; procedure updatebitmap(sx,sy,color:integer); begin FastSetPixel(mmbmp,sx-mmx1,sy-mmy1,color); CopyCanvas(getbitmapcanvas(mmbmp),getdebugcanvas,0,0,mmx2-mmx1,mmy2-mmy1,0,0,mmx2-mmx1,mmy2-mmy1); DisplayDebugImgWindow(mmx2-mmx1,mmy2-mmy1) end; begin setupsrl; DisplayDebugImgWindow(mmx2-mmx1,mmy2-mmy1)//displays debug image MMbmp:=BitmapFromString(mmx2-mmx1,mmy2-mmy1,''); CopyClientToBitmap(MMbmp,mmx1,mmy1,mmx2,mmy2); CopyCanvas(getbitmapcanvas(mmbmp),getdebugcanvas,0,0,mmx2-mmx1,mmy2-mmy1,0,0,mmx2-mmx1,mmy2-mmy1); DisplayDebugImgWindow(mmx2-mmx1,mmy2-mmy1) dropdot:= DTMFromString('78DA6354666060606340012FA134238C56021' + '2ECA86A3EA2AB5104121CA86A6EA2AB51C634E71C921A66200600' + '386A0432'); setarraylength(colorarray,6); ColorArray[0]:=16711422; ColorArray[1]:=15527148; ColorArray[2]:=13816530; ColorArray[3]:=14869218; ColorArray[4]:=12961221; ColorArray[5]:=65536; if FindDTM(dropdot,tx,ty,mmx1,mmy1,mmx2,mmy2)then begin setarraylength(colorarray,18); ColorArray[6]:=getcolor(tx,ty); ColorArray[7]:=getcolor(tx,ty+1); ColorArray[8]:=getcolor(tx-1,ty-1); ColorArray[9]:=getcolor(tx-1,ty); ColorArray[10]:=getcolor(tx-1,ty+1); ColorArray[11]:=getcolor(tx-1,ty+2); ColorArray[12]:=getcolor(tx-2,ty-1); ColorArray[13]:=getcolor(tx-2,ty); ColorArray[14]:=getcolor(tx-2,ty+1); ColorArray[15]:=getcolor(tx-2,ty+2); ColorArray[16]:=getcolor(tx-3,ty); ColorArray[17]:=getcolor(tx-3,ty+1); end; freedtm(dropdot); AL:=getarraylength(colorarray); setarraylength(PlayerDotCTPA,AL); for parray:=0 to AL-1 do begin PlayerDotCTPA[parray].color:=colorarray[parray]; // writeln(inttostr(PlayerDotCTPA[parray].color)); end; AL:=getarraylength(colorarray); for parray:=0 to AL-1 do begin FindColorsSpiralTolerance(tx,ty,PlayerDotCTPA[parray].tpa, PlayerDotCTPA[parray].color,mmx1,mmy1,mmx2,mmy2,0); end; repeat for parray:=0 to AL-1 do begin for parray2:=0 to getarraylength(PlayerDotCTPA[parray].tpa)-1 do begin tmpcolor:=getcolor(PlayerDotCTPA[parray].tpa[parray2].x,PlayerDotCTPA[parray].tpa[parray2].y); if not(InIntArray(tmpcolor,ColorArray)) then // if not(tmpcolor=PlayerDotCTPA[parray].color) then begin UpdateBitmap(PlayerDotCTPA[parray].tpa[parray2].x,PlayerDotCTPA[parray].tpa[parray2].y,tmpcolor); RemoveFromTPA(parray2,PlayerDotCTPA[parray].tpa); end; end; end; wait(500); // CopyCanvas(getbitmapcanvas(mmbmp),getdebugcanvas,0,05,mmx2-mmx1,mmy2-mmy1,0,0,748-541,175); //DisplayDebugImgWindow(748-541,175) //writeln('new bmp'); //repeat // wait(30); //until isfkeydown(12); //repeat // wait(30); //until isfkeydown(11); until isfkeydown(10); FreeBitmap(mmbmp); end.