home *** CD-ROM | disk | FTP | other *** search
- 1 scnclr
- 5 drawmode 1
- 20 dim d(128,64)
- 30 input "number of levels" ; le
- 40 ds = 2 : for n =1 to le : ds = ds + 2 ^ (n-1) : next n
- 50 mx = ds-1 : my = mx / 2
- 51 rh = pi*30/180 :vt = rh *1.2
- 60 for n = 1 to le : l = 10000 / 1.8^n
- 70 ?"working on level" ; n
- 80 ib = mx / 2^n : sk = ib *2
- 90 gosub 150
- 100 gosub 220
- 110 gosub 290
- 120 next n
- 121 scnclr
- 122 pena 1
- 123 paint (10,10) ,0
- 130 goto 640
- 140 rem******
- 150 for ye = 0 to mx-1 step sk
- 160 for xe = ib + ye to mx step sk
- 170 ax = xe - ib : ay = ye : gosub 370 : d1 = d : ax = xe + ib : gosub 370 : d2 = d
- 180 d = (d1+d2)/2 + rnd(1) * l / 2 - l / 4 : ax = xe : ay =ye : gosub 420
- 190 next xe
- 200 next ye : return
- 210 rem *************
- 220 for xe = mx to 1 step -sk
- 230 for ye = ib to xe step sk
- 240 ax = xe : ay = ye + ib : gosub 370 : d1 = d : ay = ye -ib : gosub 370 : d2 = d
- 250 d = (d1+d2) / 2 + rnd(1)* l / 2 - l / 4 : ax = xe : ay =ye : gosub 420
- 260 next ye
- 270 next xe : return
- 280 rem******************
- 290 for xe= 0 to mx - 1 step sk
- 300 for ye = ib to mx - xe step sk
- 310 ax= xe +ye - ib : ay = ye - ib : gosub 370 : d1 = d
- 320 ax = xe + ye +ib : ay = ye + ib : gosub 370 : d2 = d
- 330 ax = xe + ye : ay = ye : d= (d1 + d2 )/ 2 + rnd ( 1 ) * l / 2 - l / 4 : gosub 420
- 340 next ye
- 350 next xe : return
- 360 rem****************
- 370 if ay > my then 390
- 380 by = ay : bx= ax : goto 400
- 390 by = mx +1 - ay : bx = mx -ax
- 400 d= d ( bx , by ) : return
- 410 rem*************
- 420 if ay > my then 440
- 430 by = ay : bx = ax : goto 450
- 440 by = mx + 1 - ay : bx = mx - ax
- 450 d( bx , by ) = d : return
- 460 rem**********************
- 470 if xo <> -999 then 500
- 480 if zz < 0 then gosub 1070 : z2 = zz : zz = 0 : goto 620
- 490 gosub 1090 : goto 610
- 500 if z2 > 0 and zz > 0 then 610
- 510 if z2 <0 and zz < 0 then z2 = zz : zz = 0 : goto 620
- 520 w3 = zz / (zz-z2) : x3 = (x2-xx)*w3+xx : y3 = (y2-yy)*w3+yy : z3 = 0
- 530 zt = zz : yt = yy : xt = xx
- 540 if zz > 0 then 590
- 550 rem*****************
- 560 zz = z3 : yy = y3 : xx = x3 : gosub 950
- 570 gosub 1070 : zz = 0 : yy = yt : xx = xt : z2 = zt : goto 620
- 580 rem ******************
- 590 zz = z3 : yy = y3 : xx = x3 : gosub 950
- 600 gosub 1090 : zz = zt : yy = yt : xx = xt
- 610 z2 = zz
- 620 x2 = xx : y2 = yy : return
- 630 rem ****************
- 640 gosub 1110
- 650 xs = .04 : ys = .04 : zs = .04
- 660 for ax = 0 to mx : xo=-999 : for ay = 0 to ax
- 670 gosub 370 : zz = d : yy = ay / mx * 10000 : xx = ax / mx *10000 -yy / 2
- 680 gosub 940 : next ay : next ax
- 690 for ay = 0 to mx : xo = -999 : for ax = ay to mx
- 700 gosub 370 : zz = d : yy = ay / mx *10000 : xx = ax / mx *10000 -yy / 2
- 710 gosub 940 : next ax : next ay
- 720 for ex = 0 to mx : xo = -999 : for ey = 0 to mx - ex
- 730 ax = ex + ey : ay = ey : gosub 370 : zz = d : yy = ay / mx *10000
- 740 xx = ax / mx *10000 - yy / 2 : gosub 940 : next ey : next ex
- 750 goto 1130
- 760 rem********
- 770 if xx <> 0 then 800
- 780 if yy <=0 then ra = - pi / 2 : goto 820
- 790 ra = pi / 2 : goto 820
- 800 ra = atn(yy/xx)
- 810 if xx < 0 then ra = ra + pi
- 820 r1 = ra + rh : rd = sqr(xx*xx+yy*yy)
- 830 xx = rd *cos(r1) : yy = rd * sin(r1)
- 840 return
- 850 rem******
- 860 rd = sqr(zz*zz+xx*xx)
- 870 if xx = 0 then ra = pi / 2 : goto 900
- 880 ra = atn (zz/xx)
- 890 if xx <0 then ra = ra+pi
- 900 r1 = ra-vt
- 910 xx = rd * cos(r1)+xx : zz = rd * sin(r1)
- 920 return
- 930 rem *************
- 940 gosub 470
- 950 xx = xx * xs : yy = yy * ys : zz = zz *zs
- 960 gosub 770
- 970 gosub 860
- 980 if xo = - 999 then pr$ = "m"
- 985 if xo <> -999 then pr$ = "d"
- 990 xp = int(yy)+cx : yp = int(zz)
- 1000 gosub 1030
- 1010 return
- 1020 rem*********
- 1030 xp = xp * 0.625 : yp = 33.14-0.663 *yp
- 1040 if pr$ = "m" then x8 = xp : y8 = yp : x0 = x
- 1045 if y8 > 179 or y8 < 0 or yp > 179 or yp< 0 then return
- 1050 draw (x8,y8 to xp,yp)
- 1055 x8 = xp : y8 = yp : return
- 1070 pena 9 : return
- 1080 rem***********
- 1090 pena 8 : return
- 1110 return
- 1120 rem *******
- 1130 input a$
- 1140 end
-