home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Compute! Gazette 1990 June
/
1990-06.d64
/
sphere.bas
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-09-20
|
5KB
|
269 lines
10 rem copyright 1990 compute! publications, inc. - all rights reserved
20 poke54296,15:poke53280,0:poke53281,0:sys2636:dimp$(4)
30 p$(0)=" [157][157][157] "
40 p$(1)="[146][193][194] [145][157][157][146][195][196]"
50 p$(2)="[146][197][198][157][157] [146][199][200]"
60 p$(3)="[146][201][202] [157][157][146][203][204]"
70 p$(4)="[146][205][206][145][157][157] [146][207][208]"
80 fori=1to6:readt$(i):next:s$=t$(1)
90 data "open ","lattice ","diamonds","cyclone ","quadrate","random "
100 t1$="[176][192][174][176][192][174][178] [178][176][192][174][176][192][174][176][192][174][176][178][174][178][192][174][176][192][174]"
110 t2$="[173][192][174][171][192][189][171][192][179][171][192] [171][178][189][221] [221] [221] [221] [221][173][192][174]"
120 t3$="[173][192][189][177] [177] [177][173][192][189][177][173][189][173][192][189][173][177][189][177][192][189][173][192][189]"
130 tc$="[155][152][151][149][129][150][158]"
140 gosub2280
150 print"[147]";
160 s=1:mo=1:goto380
170 print"[150] selected: ";t$(s);" shown: ";s$;" "
180 poke198,0
190 geta$
200 j=(peek(56320)andpeek(56321))
210 ifa$="[135]"thengosub1330:gosub1390
220 ifa$="[136]"thengosub1330:sys2633:sys2624:goto450
230 if(jand16)=0thengosub1330:sys2633:sys2624:goto450
240 ifa$="[134]"then320
250 if(jand8)=0then320
260 ifa$="[138]"then350
270 if(jand4)=0then350
280 ifa$="[133]"then380
290 if(jand1)=0or(jand2)=0then380
300 ifa$="[140]"thengosub1330:gosub2280:sys2633:goto450
310 goto190
320 s=s+1:ifs=7thens=1
330 gosub1330
340 goto170
350 s=s-1:ifs=0thens=6
360 gosub1330
370 goto170
380 print"[150] generating ";t$(s);" ":poke1024+39,160
390 poke55296+39,10
400 poke218,peek(218)or128
410 gosub1330
420 on s gosub1740,1790,1430,1590,2120,1950
430 s$=t$(s)
440 sys2630
450 ifmo=1thengosub1130
460 gosub1330
470 goto170
480 rem draw mound/depression
490 printmid$(c$,1,1);
500 fori=1tox
510 printp$(1);"[145]";
520 next
530 printmid$(c$,2,1);"";
540 fori=1tox
550 printp$(2);"";
560 next
570 fori=1to2*x
580 print"[157][157][157]";
590 next
600 printmid$(c$,3,1);
610 fori=1tox
620 printp$(3);"";
630 next
640 printmid$(c$,4,1);"[145]";
650 fori=1tox
660 printp$(4);"[145]";
670 next
680 print"[145]";
690 if x=1 then920
700 forj=x-1to1step-1
710 fori=1toj*2+1:print"[157][157][157]";:next
720 printmid$(c$,1,1);
730 fori=1toj
740 printp$(0);"[145][145][145]";
750 next
760 printmid$(c$,2,1);"";
770 fori=1toj
780 printp$(0);"";
790 next
800 fori=1to2*j
810 print"[157][157][157]";
820 next
830 printmid$(c$,3,1);
840 fori=1toj
850 printp$(0);"";
860 next
870 printmid$(c$,4,1);"[145][145]";
880 fori=1toj
890 printp$(0);"[145][145][145]";
900 next
910 next
920 return
930 rem draw teleporter
940 x=int(rnd(0)*38)
950 y=int(rnd(0)*23)+1
960 if(peek(55296+y*40+x)and15)<>4then930
970 if(peek(55296+y*40+x+1)and15)<>4then930
980 if(peek(55296+y*40+x+40)and15)<>4then930
990 if(peek(55296+y*40+x+41)and15)<>4then930
1000 rem enter here for set location
1010 poke1024+y*40+x,102
1020 poke1024+y*40+x+1,102
1030 poke1024+y*40+x+40,102
1040 poke1024+y*40+x+41,102
1050 poke55296+y*40+x,7
1060 poke55296+y*40+x+1,7
1070 poke55296+y*40+x+40,7
1080 poke55296+y*40+x+41,7
1090 m=1024+y*40+x
1100 l=m and 255:h=int(m/256)
1110 poke2639,l:poke2640,h
1120 return
1130 rem display menu
1140 mo=1
1150 gosub1240
1160 print"[129][161]f1 generate selected terrain[146][161]"
1170 print"[161]f3 increase selected terrain[146][161]"
1180 print"[161]f4 decrease selected terrain[146][161]"
1190 print"[161]f5 menu on/off [146][161]"
1200 print"[161]f7 start battle [146][161]"
1210 print"[161]f8 return to title screen [146][161]"
1220 print"[188][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][162][146][190]"
1230 return
1240 rem clr logical lines
1250 fori=217to242
1260 pokei,peek(i)or128
1270 next
1280 return
1290 rem select depression or mound
1300 ifrnd(0)<.5thenc$="[154][151][159]":goto1320
1310 c$="[155][151][152]"
1320 return
1330 rem beep
1340 poke54272,0:poke54273,200
1350 poke54277,0:poke54278,244
1360 poke54276,33:fori=1to100:next
1370 poke54276,32
1380 return
1390 rem toggle menu on/off
1400 if mo=1thenmo=0:sys2633:return
1410 gosub1130
1420 return
1430 rem diamonds
1440 sys2627
1450 poke781,12:poke782,6:poke783,0:sys65520
1460 gosub1290
1470 x=2:gosub480
1480 poke781,12:poke782,22:poke783,0:sys65520
1490 gosub1290
1500 x=2:gosub480
1510 poke781,6:poke782,14:poke783,0:sys65520
1520 gosub1290
1530 x=2:gosub480
1540 poke781,18:poke782,14:poke783,0:sys65520
1550 gosub1290
1560 x=2:gosub480
1570 x=19:y=12:gosub1000
1580 return
1590 rem cyclone
1600 sys2627
1610 poke781,3:poke782,1:poke783,0:sys65520
1620 gosub1290:x=1:gosub480
1630 poke781,3:poke782,33:poke783,0:sys65520
1640 gosub1290:x=1:gosub480
1650 poke781,21:poke782,33:poke783,0:sys65520
1660 gosub1290:x=1:gosub480
1670 poke781,21:poke782,1:poke783,0:sys65520
1680 gosub1290:x=1:gosub480
1690 poke781,12:poke782,5:poke783,0:sys65520
1700 gosub1290:x=5:gosub480
1710 gosub930
1720 return
1730 ;
1740 rem open
1750 sys2627
1760 gosub930
1770 return
1780 ;
1790 rem lattice
1800 sys2627
1810 print"";
1820 fori=1to12:print"";:t=7
1830 if(iand1)=0thenprint"";:t=6
1840 forj=1tot
1850 ifrnd(0)<.5thenprint"[193][154][200][157][157][151][201][159][208][145]";:goto1870
1860 print"[152][193][151][200][157][157][155][201][152][208][145]";
1870 print"";
1880 next
1890 ifi=12then1920
1900 print"[157][157][157]";
1910 if(iand1)=0thenprint"";
1920 next
1930 gosub930
1940 return
1950 rem random
1960 sys2627
1970 n=rnd(0)/1.5
1980 print"";
1990 fork=1to7:print"";:t=5
2000 if(kand1)=0thenprint"";:t=4
2010 forl=1tot
2020 ifrnd(0)>nthenprint"[145]";:goto2050
2030 gosub1290
2040 x=1:gosub480
2050 print"";
2060 next
2070 print"";
2080 if(kand1)=0thenprint"";
2090 next
2100 gosub930
2110 return
2120 rem quadrate
2130 sys2627
2140 poke781,7:poke782,2:poke783,0:sys65520
2150 gosub1290:x=int(rnd(0)*3)+1:ifx<3thenfori=1to3-x:print"";:next
2160 gosub480
2170 poke781,17:poke782,20:poke783,0:sys65520
2180 gosub1290:ifx<3thenfori=1to3-x:print"";:next
2190 gosub480
2200 poke781,5:poke782,25:poke783,0:sys65520
2210 gosub1290:x=int(rnd(0)*2)+1:ifx=1thenprint"";
2220 gosub480
2230 poke781,19:poke782,3:poke783,0:sys65520
2240 gosub1290:ifx=1thenprint"";
2250 gosub480
2260 gosub930
2270 return
2280 rem title screen
2290 printchr$(142);"[147]"
2300 poke53248+16,0
2310 poke2040,33:poke2041,34:poke2042,34
2320 poke53248+38,2:poke53248+39,14:poke53248+40,10:poke53248+41,5
2330 poke53248,142:poke53250,142:poke53252,142
2340 poke53249,147:poke53251,187:poke53253,227
2350 poke53248+28,7
2360 printtab(6);t1$
2370 printtab(6);t2$
2380 printtab(6);t3$
2390 printtab(12);"[152]copyright 1990"
2400 printtab(6);"compute! publications, inc."
2410 printtab(10);"[152]all rights reserved"
2420 poke53248+16,0
2430 poke53248+21,7
2440 print"battle [193][194][145][157][195][154][198][157][199][200] mound"
2450 print"craft [151][201][202][157][203][159][206][145][157][207][208]"
2460 print"unarmed [155][193][194][145][157][195][151][198][157][199][200] depression"
2470 print"spheroid [201][202][157][203][152][206][145][157][207][208]"
2480 print"armed [158][166][166] teleporter"
2490 x=0:y=0
2500 fori=0to8
2510 t1=i
2520 t2=i+1:ift2>8thent2=t2-9
2530 t3=i+2:ift3>8thent3=t3-9
2540 print"";
2550 printtab(6);mid$(tc$,t1+1,1);t1$
2560 printtab(6);mid$(tc$,t2+1,1);t2$
2570 printtab(6);mid$(tc$,t3+1,1);t3$
2580 poke781,22:poke782,23:poke783,0:sys65520
2590 ifx=0thenx=1:print"[158][166][166][157][157][166][166]":goto2610
2600 x=0:print"[158][166][166][157][157][166][166]"
2610 geta$:ifa$<>""theny=1:i=8
2620 j=(peek(56320)andpeek(56321))
2630 if(jand1)=0or(jand2)=0or(jand4)=0or(jand8)=0or(jand16)=0theny=1:i=8
2640 nexti
2650 ify=1then2670
2660 goto2500
2670 poke53248+21,0
2680 return