Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 10 RUN AT 3: LAYER CLEAR : LAYER 2,1: BORDER 0: PAPER 0: CLS
- 20 REPEAT
- 30 INK % RND 255
- 40 PROC DrawCircle(% RND 250,% RND 190,% RND 20+5,1,0)
- 50 ;INK % RND 255
- 60 ;PROC DrawRect(% RND 250,% RND 170,% RND 50+5,% RND 50+5,0)
- 70 REPEAT UNTIL 0
- 80 GO TO %9999
- 90:
- 100 DEFPROC DrawRect(%x,%y,%w,%h,fill)
- 110 IF % SGN {(w <= 0) OR (h <= 0)} THEN ENDPROC
- 120 IF NOT fill THEN PLOT % SGN {x},% SGN {y}: DRAW %w-1,0: DRAW 0,%h-1: DRAW % SGN {-w+1},0: DRAW 0,% SGN {-h+1}: ENDPROC
- 130 IF % SGN {x < 0} THEN %w=%w- ABS x:%x=0
- 140 IF % SGN {y < 0} THEN %h=%h- ABS y:%y=0
- 150 IF %(x+w) >= 254 THEN %w=%255-x+1
- 160 IF %(y+h) >= 190 THEN %h=%191-y+1
- 170 LAYER ERASE %x,%y,% SGN {w},% SGN {h},% PEEK $5B60
- 180 ENDPROC
- 190:
- 200 DEFPROC DrawCircle(%x,%y,%r,fill,fast)
- 210 RUN AT 3: LOCAL %c,%i,%m,%q,r,ra,%s,%u,%v
- 220 r=%r:r=r*1.414:%s=r:%q=% INT {r}/2:%m=0
- 230 IF % SGN {(x-r <= 0) OR (y-r <= 0) OR (x+r > 254) OR (y+r > 191)} THEN %m=1
- 240 CIRCLE %x,%y,%r
- 250 IF % INT { NOT fill} OR (r<1) OR SGN {(x < 0) OR (y < 0)} THEN ENDPROC
- 260 IF NOT fast THEN %i=%r: REPEAT : CIRCLE %x,%y,%i:%i=%i-1: REPEAT UNTIL %i <= (s/2-1): PROC DrawRect(% SGN {x}-q,% SGN {y}-q,%s,%s,1)
- 270 %b=% SGN {-r}:%u=%b:%c=% PEEK $5B60
- 280 REPEAT
- 290 ra=%r*r:b=%b*b:%a=- SQR (ra-b)
- 300 IF % NOT m THEN %f=% ABS a*2: LAYER ERASE %x+a,%y+b,%f+1,%1,%c: LAYER ERASE %x+a,%y-b,%f+1,%1,%c: LAYER ERASE %x+u,%y+a,%1,%f+1,%c: LAYER ERASE %x-u,%y+a,%1,%f+1,%c: ELSE %f=% ABS a*2: PLOT %x+a,%y+b: DRAW %f,%0: PLOT %x+a,%y-b: DRAW %f,%0: PLOT %x+u,%y+a: DRAW %0,%f: PLOT %x-u,%y+a: DRAW %0,%f
- 310 %b=%b+1:%u=%u+1
- 320 REPEAT UNTIL % SGN {b} >= -(q-2)
- 330 IF fast THEN PROC DrawRect(% SGN {x}-q,% SGN {y}-q,%s,%s,1)
- 340 ENDPROC
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement