home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
17 Bit Software 1: Collection A
/
17Bit_Collection_A.iso
/
files
/
37.dms
/
37.adf
/
fr.bas
< prev
next >
Wrap
BASIC Source File
|
1988-05-22
|
4KB
|
130 lines
810 scnclr
815 drawmode 1
820 dim d(128,64)
825 input "number of levels 1 through 7" ; le
830 ?"hit c for coustom colours"
835 ?"return for default"
840 get a$ : if a$ = "" then 840
845 if a$ = chr$ (13) then lc = 7 : sc = 10
850 if a$ = "c" then gosub 1435
855 ds = 2 : for n =1 to le : ds = ds + 2 ^ (n-1) : next n
860 mx = ds-1 : my = mx / 2
865 rh = pi*30/180 :vt = rh *1.2
870 for n = 1 to le : l = 10000 / 1.8^n
875 ?"working on level" ; n
880 ib = mx / 2^n : sk = ib *2
885 gosub 930
890 gosub 965
895 gosub 1000
900 next n
905 scnclr
910 pena 1
915 paint (10,10) ,0
920 goto 1175
925 rem******
930 for ye = 0 to mx-1 step sk
935 for xe = ib + ye to mx step sk
940 ax = xe - ib : ay = ye : gosub 1040 : d1 = d : ax = xe + ib : gosub 1040 : d2 = d
945 d = (d1+d2)/2 + rnd(5) * l / 2 - l / 4 : ax = xe : ay =ye : gosub 1065
950 next xe
955 next ye : return
960 rem *************
965 for xe = mx to 1 step -sk
970 for ye = ib to xe step sk
975 ax = xe : ay = ye + ib : gosub 1040 : d1 = d : ay = ye -ib : gosub 1040 : d2 = d
980 d = (d1+d2) / 2 + rnd(1)* l / 2 - l / 4 : ax = xe : ay =ye : gosub 1065
985 next ye
990 next xe : return
995 rem******************
1000 for xe= 0 to mx - 1 step sk
1005 for ye = ib to mx - xe step sk
1010 ax= xe +ye - ib : ay = ye - ib : gosub 1040 : d1 = d
1015 ax = xe + ye +ib : ay = ye + ib : gosub 1040 : d2 = d
1020 ax = xe + ye : ay = ye : d= (d1 + d2 )/ 2 + rnd ( 1 ) * l / 2 - l / 4 : gosub 1065
1025 next ye
1030 next xe : return
1035 rem****************
1040 if ay > my then 1050
1045 by = ay : bx= ax : goto 1055
1050 by = mx +1 - ay : bx = mx -ax
1055 d= d ( bx , by ) : return
1060 rem*************
1065 if ay > my then 1075
1070 by = ay : bx = ax : goto 1080
1075 by = mx + 1 - ay : bx = mx - ax
1080 d( bx , by ) = d : return
1085 rem**********************
1090 if xo <> -999 then 1105
1095 if zz < 0 then gosub 1400 : z2 = zz : zz = 0 : goto 1165
1100 gosub 1410 : goto 1160
1105 if z2 > 0 and zz > 0 then 1160
1110 if z2 <0 and zz < 0 then z2 = zz : zz = 0 : goto 1165
1115 w3 = zz / (zz-z2) : x3 = (x2-xx)*w3+xx : y3 = (y2-yy)*w3+yy : z3 = 0
1120 zt = zz : yt = yy : xt = xx
1125 if zz > 0 then 1150
1130 rem*****************
1135 zz = z3 : yy = y3 : xx = x3 : gosub 1330
1140 gosub 1400 : zz = 0 : yy = yt : xx = xt : z2 = zt : goto 1165
1145 rem ******************
1150 zz = z3 : yy = y3 : xx = x3 : gosub 1330
1155 gosub 1410 : zz = zt : yy = yt : xx = xt
1160 z2 = zz
1165 x2 = xx : y2 = yy : return
1170 rem ****************
1175 gosub 1415
1180 xs = .04 : ys = .04 : zs = .04
1185 for ax = 0 to mx : xo=-999 : for ay = 0 to ax
1190 gosub 1040 : zz = d : yy = ay / mx * 10000 : xx = ax / mx *10000 -yy / 2
1195 gosub 1325 : next ay : next ax
1200 for ay = 0 to mx : xo = -999 : for ax = ay to mx
1205 gosub 1040 : zz = d : yy = ay / mx *10000 : xx = ax / mx *10000 -yy / 2
1210 gosub 1325 : next ax : next ay
1215 for ex = 0 to mx : xo = -999 : for ey = 0 to mx - ex
1220 ax = ex + ey : ay = ey : gosub 1040 : zz = d : yy = ay / mx *10000
1225 xx = ax / mx *10000 - yy / 2 : gosub 1325 : next ey : next ex
1230 goto 1425
1235 rem********
1240 if xx <> 0 then 1255
1245 if yy <=0 then ra = - pi / 2 : goto 1265
1250 ra = pi / 2 : goto 1265
1255 ra = atn(yy/xx)
1260 if xx < 0 then ra = ra + pi
1265 r1 = ra + rh : rd = sqr(xx*xx+yy*yy)
1270 xx = rd *cos(r1) : yy = rd * sin(r1)
1275 return
1280 rem******
1285 rd = sqr(zz*zz+xx*xx)
1290 if xx = 0 then ra = pi / 2 : goto 1305
1295 ra = atn (zz/xx)
1300 if xx <0 then ra = ra+pi
1305 r1 = ra-vt
1310 xx = rd * cos(r1)+xx : zz = rd * sin(r1)
1315 return
1320 rem *************
1325 gosub 1090
1330 xx = xx * xs : yy = yy * ys : zz = zz *zs
1335 gosub 1240
1340 gosub 1285
1345 if xo = - 999 then pr$ = "m"
1350 if xo <> -999 then pr$ = "d"
1355 xp = int(yy)+cx : yp = int(zz)
1360 gosub 1375
1365 return
1370 rem*********
1375 xp = xp * 0.625 : yp = 33.14-0.663 *yp
1380 if pr$ = "m" then x8 = xp : y8 = yp : xo = x
1385 if y8 > 179 or y8 < 0 or yp > 179 or yp< 0 then return
1390 draw (x8,y8 to xp,yp)
1395 x8 = xp : y8 = yp : return
1400 pena sc : return
1405 rem***********
1410 pena lc : return
1415 return
1420 rem *******
1425 sleep 5*10^6 : goto 1460
1430 end
1435 rem*****
1440 input "choose high colour 2 to 16" ; lc
1445 input "choose high colour 2 to 16" ; sc
1450 return