!--------------------------------- ! CURVA DO DRAGAO !--------------------------------- FN.DEF CurvaD(n,c$) GLOBALS.FNIMP x1,y1, x2,y2, t,rot !clipboard.get ctr$ !PRINT ctr$,n !clipboard.put int$(val(ctr$)+1) IF n=1 THEN GR.ROTATE.START rot, x1,y1 GR.LINE ln,x1,y1, x2,y2 !PAUSE 100 LET x1=x2 LET y1=y2 LET x2=x1+t ELSE CurvaD(n-1,"E") IF c$="E" THEN LET rot=90 CurvaD(n-1,"D") ELSEIF c$="D" THEN LET rot=-90 CurvaD(n-1,"D") ENDIF ENDIF FN.END FN.DEF dragonStr$(order, r$, l$) dragonStr$ = r$ FOR i = 2 TO order le = INT(LEN(dragonStr$)/2) dragonStr$ += r$+ LEFT$(dragonStr$,le) +l$+ RIGHT$(dragonStr$,le) NEXT FN.RTN dragonStr$ FN.END WAKELOCK 3 GR.OPEN 255,0,0,0,0,1 GR.SET.ANTIALIAS 0 GR.SET.ACCELERATION 1 GR.SCREEN sw,sh GR.BITMAP.CREATE bmp,sw,sh LET sx=sw/2 LET sy=sh/2 LET ncal=0 LET l=1 DO GR.COLOR 255,0,255,0 GR.TEXT.ALIGN 2 GR.TEXT.SIZE sy/14 GR.TEXT.DRAW txt,sx,sy/10,"TOUCH TO DRAW, LEVEL: "+INT$(++l) GR.RENDER DO GR.TOUCH tch, tx,ty PAUSE 50 UNTIL tch DO GR.TOUCH tch, tx,ty UNTIL !tch POPUP "CALCULATING, LEVEL: "+INT$(l),0,-2000 GR.CLS GR.COLOR 255,128+RND()*128,128+RND()*128,128+RND()*128 LET t=INT(sx/(1.4^l)) IF t<1 THEN LET t=1 LET x1=sx LET y1=sy LET x2=x1+t LET y2=y1 CLIPBOARD.PUT "1" LET rot=0 GR.BITMAP.DELETE bmp GR.BITMAP.CREATE bmp,sw,sh GR.BITMAP.DRAW b,bmp,0,0 GR.BITMAP.DRAWINTO.START bmp go = 2 tic = CLOCK() IF go=1 THEN CALL CurvaD(l,"E") ELSE GOSUB dragon toc= CLOCK()-tic GR.BITMAP.DRAWINTO.END PRINT "--------" PRINT INT$(go),INT$(l),INT$(t),INT$(toc) UNTIL 0 dragon: order = l-1 dragonStr$ = dragonStr$(order, "R", "L" ) SPLIT.ALL dragon$[], dragonStr$,"" !PRINT dragonStr$ angle = 90 FOR i = 2 TO 2^order +1 GR.ROTATE.START rot, x1,y1 GR.LINE nn, x1,y1, x2, y2 IF dragon$[i]="R" THEN rot=angle ELSE rot=-angle x1 = x2 x2 = x1+t NEXT RETURN