home *** CD-ROM | disk | FTP | other *** search
- 10 ' ***** Spiralizer *****
- 20 ' ** hi-res (640X200) version **
- 30 '
- 40 ' ** Translated from the Atari 800 **
- 50 ' ** by David Milligan, 70707,2521 11/2/85 **
- 60 '
- 70 ' *** This came out of an Atari magazine a couple
- 80 ' *** of years ago, and I can't remember which one.
- 90 ' *** The listing I worked off of had been severely
- 100 ' *** hacked by someone trying to do graphic dumps
- 110 ' *** to a DEC lineprinter, so it looks kinda rough.
- 120 '
- 130 ' *** Another graphics toy, this does a pretty good
- 140 ' *** job of mimicking the Spirographs we played with
- 150 ' *** when we were kids, er, physically younger kids.
- 160 '
- 170 '
- 180 dim a$(3),x$(4)
- 190 ask window wid%,hi%:if wid%>600 then 210
- 200 screen 1,4,0
- 210 rgb 0,0,0,0:rgb 1,15,15,15
- 220 rgb 3,15,6,0
- 230 rgb 9,0,0,15:rgb 10,3,6,15
- 240 rgb 11,7,7,15:rgb 12,12,0,14
- 250 rgb 13,15,2,14
- 260 rgb 15,0,0,0
- 270 gosub 1070
- 280 goto 1160
- 290 g=4:z=5
- 300 scnclr
- 310 '
- 320 ' **** Speed Input ****
- 330 '
- 340 ?" Speed (-50 to 50) ";:input x$
- 350 z=val(x$):if x$="" then z=5
- 360 if z<-50 or z>50 then z=5
- 370 k=z:? z:k=k-1
- 380 oldspeed=z
- 390 '
- 400 ' **** Radius Input ****
- 410 '
- 420 g=3:z=35:?" Radius (1-60) ";:input z
- 430 if z<1 or z>60 then z=35
- 440 r=z:? z:r=r+13:s=1
- 450 oldrad=z
- 460 '
- 470 ' **** Spin Input ****
- 480 '
- 490 z=1:?" Spin (1 to 18) ";:input a$:gosub 1010
- 500 if z<1 or z>18 then z=1:? z
- 510 oldspin=z
- 520 a=1/z:if z>1 and z<9 then 650
- 530 '
- 540 ' **** Movement Prompt ****
- 550 '
- 560 sm=1:m=2:?" Movement or Decrement (m/d)";
- 570 getkey x$
- 580 if x$="m" then sm=0:goto 610
- 590 if x$="d" then m=0:goto 610
- 600 m=0:sm=0:x$="none"
- 610 ?x$
- 620 '
- 630 ' **** Clear Screen Prompt ****
- 640 '
- 650 ?" Clear Screen (y/n) ";
- 660 getkey a$:if a$<>"n" then gosub 1060:goto 680
- 670 ? "no";
- 680 w=1:z=139:if m=2 then z=80:if a=1 then w=5:m=1:z=122
- 690 if sm-a=0 then w=5
- 700 if a<1 then k=k+a
- 710 c=1e-03:if a<1/9 then m=m/2:c=c/2
- 720 j=r:i=79-r
- 730 close #2
- 740 cmd 1
- 750 draw((z+20)*2,6)
- 760 col=2
- 770 pena col:rgb 0,0,0,0
- 780 rgb 15,0,0,0
- 790 '
- 800 ' *** Main Loop ***
- 810 '
- 820 cnt=0
- 830 for t=0 to 6.2831/a*w step .06283
- 840 if sm then j=r*s:i=79*s-j:s=s-c
- 850 draw(to ((z+t*m-sin(t)*j+sin(t*k)*i)+20)*2,85-cos(t)*j-cos(t*k)*i)
- 860 cnt=cnt+1
- 870 if cnt>100 then cnt=0:col=col+1:if col=15 then col=2
- 880 pena col
- 890 ask mouse x%,y%,b%:if b%<>0 then 1160
- 900 next t
- 910 '
- 920 ' **** Poll Mouse Button ****
- 930 '
- 940 ask mouse x%,y%,b%:if b%=0 then 940
- 950 goto 1160
- 960 scnclr
- 970 rgb 0,6,9,15:rgb 1,0,0,0
- 980 rgb 15,11,11,11
- 990 goto 290
- 1000 '
- 1010 sign=1:if left$(a$,1)="-" then a$=mid$(a$,2):sign=-1
- 1020 z=0:for i=1 to len(a$):z=z*10+asc(mid$(a$,i,i))-48
- 1030 next i:z=sign*z:return
- 1040 '
- 1050 '
- 1060 cmd 1:scnclr:cmd 2:return
- 1070 window #1,0,0,640,200,"Spiralizer"
- 1080 cmd 1:graphic(1):return
- 1090 '
- 1100 ' *** menu window ***
- 1110 '
- 1120 window #2,0,10,250,110,"Spiralizer Menu"
- 1130 cmd 2:graphic(0):scnclr:return
- 1140 '
- 1150 '
- 1160 gosub 1120
- 1170 ? at(2,2);" Press '0' to exit"
- 1180 ? at(2,4);" Press any other key"
- 1190 ? at(2,5);" to begin."
- 1200 getkey a$
- 1210 if a$="0" then 1240
- 1220 scnclr
- 1230 goto 320
- 1240 gosub 1060
- 1250 close 2,1
- 1260 rgb 0,6,9,15:rgb 1,0,0,0
- 1270 rgb 15,11,11,11
- 1280 end
-