Compucolor.org – Virtual Media

Listing of file='HYPER.BAS;01' on disk='vmedia/shoot-sector.ccvf'

100 REM  ** HYPER - MODIFIED FEB 1,1980 **
110 REM COPYRIGHT (C) 1979 BY COMPUCOLOR CORPORATION
120 REM   WRITTEN BY LA CRESENTA HS COMPUTER CLASS
125 POKE 32941,191:POKE 32940,255:CLEAR 100
130 DIM BO(61,28),OX(19),OY(19),DX(7),DY(7)
140 DIM OC(19),OS(19),S1(7),S2(7),S3(7),S4(7),S5(7)
150 DATA 1,-3,-1,2,2,0,-5,-2,0,4,1,-8,-1,-2,7,3,-2,0,2,1
160 DATA 2,-9,0,-2,6,4,-3,1,2,0,5,-5,2,0,3,4,-8,1,-2,5
170 FOR N= 0TO 7:READ S1(N),S2(N),S3(N),S4(N),S5(N):NEXT
180 DATA -1,1,0,1,1,1,-1,0,1,0,-1,-1,0,-1,1,-1
190 FOR N= 0TO 7:READ DX(N),DY(N):NEXT
200 Z= PEEK (33209)* .79865+ PEEK (33210)* .953
210 K= 16.93654
220 IF EQ= 1GOTO 370
230 PLOT 14,6,6,12,6,34,3,25,0:PRINT  " H Y P E R ":PLOT 15,6,3
240 NO= 20:PLOT 3,0,5
250 PRINT "     TYPES OF ALIENS:":PRINT
260 PRINT TAB( 10)"NORMAL - REGULAR EVERYDAY ALIEN SPACECRAFT"
270 PRINT TAB( 10)"CAMOUFLAGED - ALIEN SPACECRAFT DISGUISED AS STARS"
280 PRINT TAB( 10)"INVISIBLE - UNDETECTABLE EXCEPT WHEN SHOOTING"
290 PRINT TAB( 10)"SPECIFIED - YOU SELECT FROM THE ABOVE TYPES"
300 PRINT TAB( 10)"MIXED - THE COMPUTER SELECTS FROM THE ABOVE TYPES"
310 PRINT
320 INPUT "     WHICH TYPE OF OPPONENT(S) DO YOU WANT?    ";T0$:REM 
330 PRINT :PRINT TAB( 5);"THE MAXIMUM NUMBER OF ALIENS IS 20"
340 FOR N= 1TO 10:NEXT
350 REM
360 T0$= LEFT$ (T0$,1)
370 IF T0$= "N"THEN FOR N= 0TO NO- 1:OC(N)= 1:OS(N)= 35:NEXT :GOTO 650
380 IF T0$= "C"THEN FOR N= 0TO NO- 1:OC(N)= 6:OS(N)= 100:NEXT :GOTO 650
390 IF T0$= "I"THEN FOR N= 0TO NO- 1:OC(N)= 0:OS(N)= 32:NEXT :GOTO 650
400 IF T0$= "S"THEN 460
410 IF T0$< > "M"THEN 240
420 FOR N= 0TO NO- 1:GOSUB 2950:OC(N)= 1:OS(N)= 35
430 IF Z> .4THEN OC(N)= 6:OS(N)= 100
440 IF Z> .85THEN OC(N)= 0:OS(N)= 32
450 NEXT N:GOTO 650
460 PLOT 3,0,17,11,10,11,10,11,3,0,17
470 PRINT TAB( 10):INPUT "HOW MANY NORMAL ALIENS ? ";X:REM 
480 PRINT TAB( 10):INPUT "HOW MANY CAMOUFLAGED ALIENS ? ";Y:REM 
490 PRINT TAB( 10):INPUT "HOW MANY INVISIBLE ALIENS ? ";Y1:REM 
500 PLOT 11:IF X< 0OR Y< 0OR Y1< 0THEN 460
510 T= X+ Y+ Y1:IF T> 20THEN PRINT TAB( 10);"20 ALIENS MAXIMUM":GOTO 460
520 IF T< 1THEN 460
530 NO= T:BL= 2* T
540 REM
550 FOR N= T- 1TO 0STEP - 1
560 GOSUB 2950
570 Z= INT (Z* N+ 1)
580 Z= Z- X
590 IF Z< = 0THEN OC(N)= 1:OS(N)= 35:X= X- 1:GOTO 630
600 Z= Z- Y
610 IF Z< = 0THEN OC(N)= 6:OS(N)= 100:Y= Y- 1:GOTO 630
620 OC(N)= 0:OS(N)= 32
630 NEXT
640 GOTO 680
650 PRINT :IF EQ= 1THEN EQ= 0:GOTO 890
660 INPUT "     HOW MANY ALIENS DO YOU WANT ?     ";NO
670 BL= 2* NO:IF NO< 1OR NO> 20THEN PLOT 28:GOTO 660
680 PRINT :IF EQ= 1THEN EQ= 0:GOTO 890
690 REM
700 INPUT "     DO YOU WANT SPACE FENCES ? ";T0$:REM 
710 IF LEFT$ (T0$,1)= "N"THEN WF= 0:YF= 0:RFG= 0:GOTO 830
720 PLOT 12,14,3,10,2
730 PRINT "THE MAXIMUM NUMBER OF SPACE FENCES IS 100.":PRINT
740 PRINT
750 PRINT "  YELLOW FENCES - NO SHOTS CAN PENETRATE"
760 PRINT "  GREEN FENCES -  ONLY SHOTS FROM GREEN SHIPS CAN PENETRATE"
770 PRINT "  RED FENCES -    ONLY SHOTS FROM RED SHIPS CAN PENETRATE"
780 PRINT "  WHITE FENCES -  TURNS THE COLOR OF FIRST SHIP TO FIRE AT THEM"
790 PLOT 3,0,12:FOR I= 12TO 17:PLOT 3,0,I,11:NEXT I:PLOT 3,0,12
800 INPUT "     HOW MANY YELLOW FENCES ? ";YF:PRINT
810 INPUT "     HOW MANY GREEN & RED FENCE SETS ? ";RGF:PRINT
820 INPUT "     HOW MANY WHITE FENCES ? ";WF:PRINT
830 TF= YF+ RGF* 2+ WF:IF TF> 100OR YF< 0OR RGF< 0OR WF< 0THEN 790
840 PRINT
850 PRINT "     WHAT SPEED WOULD YOU LIKE ? (1-30)"
860 INPUT "     (30 IS FAST, 1 IS SLOW)  ";SP:SP= SP+ 20
870 IF SP> 50OR SP< 21THEN PLOT 28,11:GOTO 860
880 REM
890 PLOT 6,7,12,3,64,0,27,88,29
900 PLOT 2,0,6,242,127,6,127,125,0,125,0,6,240,255
910 FOR N= 1TO 112- YF- RGF- WF
920 GOSUB 2950
930 X= INT (Z* 62)
940 GOSUB 2950
950 Y= INT (Z* 29)
960 BO(X,Y)= 1
970 I= X* 2+ Y* 128+ 24707
980 POKE I- 1,100:POKE I,6
990 NEXT
1000 IF YF= 0GOTO 1120
1010 X= YF:Y= 3:Y1= 43:GOSUB 1060
1020 X= RGF:Y= 1:Y1= 41:GOSUB 1060
1030 X= RGF:Y= 2:Y1= 42:GOSUB 1060
1040 X= WF:Y= 7:Y1= 44:GOSUB 1060
1050 GOTO 1120
1060 IF X= 0THEN RETURN
1070 FOR N= 1TO X
1080 GOSUB 2950:A= INT (Z* 62):GOSUB 2950:B= INT (Z* 29)
1090 IF A= 30AND B= 14GOTO 1080
1100 I= A* 2+ B* 128+ 24707:POKE I- 1,90:POKE I,128+ Y:BO(A,B)= Y1
1110 NEXT N:RETURN
1120 OL= NO
1130 FOR N= 0TO NO- 1
1140 GOSUB 2950
1150 X= INT (Z* 62)
1160 GOSUB 2950
1170 Y= INT (Z* 29)
1180 IF X= 30AND Y= 14THEN 1150
1190 IF BO(X,Y)> .1THEN 1150
1200 BO(X,Y)= N+ 3
1210 OX(N)= X:OY(N)= Y
1220 I= X* 2+ Y* 128+ 24707
1230 POKE I- 1,OS(N):POKE I,OC(N)
1240 NEXT
1250 BO(30,14)= 2:V= 14:H= 30
1260 PLOT 3,127,31,15,2,48
1270 TI= 0
1280 PLOT 3,0,31,6,2,11:POKE 33278,0
1290 PRINT "MOVE:";:OUT 8,255
1300 IF PEEK (33278)= 0THEN TI= TI+ 1:GOTO 1300
1310 OUT 8,0:PRINT
1320 IF PEEK (33278)= 53THEN 2110
1330 DI= PEEK (33278)- 49:IF DI> 4THEN DI= DI- 1
1340 IF DI< 0OR DI> 7THEN TI= TI+ INT (RND (1)* 2* SP):GOTO 1280
1350 PLOT 3,0,31,6,8,11,3,64,0
1360 PLOT 6,7,29,2,0,6,242,127,6,127,125,0,125,0,6,240,255
1370 NM= INT (TI/ (57- SP)):X= DX(DI):Y= DY(DI)
1380 BO(H,V)= 0
1390 FOR N= 1TO NM
1400 OV= V:V= V+ Y
1410 OH= H:H= H+ X
1420 PLOT 3,127,OH+ 1,OV+ 1,0,32,3,127,H+ 1,V+ 1,2,48
1430 IF H< 0OR H> 61OR V< 0OR V> 28THEN 2770
1440 IF BO(H,V)< > 0THEN 2710
1450 NEXT
1460 BO(H,V)= 2
1470 FOR N= 0TO NO- 1
1480 IF OX(N)= - 1THEN 2090
1490 X= H- OX(N):Y= V- OY(N)
1500 IF ABS (X)- ABS (Y)= 0OR X* Y= 0THEN 1670
1510 X= OX(N)+ SGN (X):Y= OY(N)+ SGN (Y)
1520 IF BO(X,Y)= 1THEN 1590
1530 IF BO(X,Y)> 40GOTO 2090
1540 IF BO(X,Y)< > 0THEN 2050
1550 PLOT 3,127,OX(N)+ 1,OY(N)+ 1,0,32,3,127,X+ 1,Y+ 1,OC(N),29,OS(N)
1560 BO(X,Y)= N+ 3:BO(OX(N),OY(N))= 0
1570 OX(N)= X:OY(N)= Y
1580 GOTO 2050
1590 X= X+ 1:Y= Y+ 1
1600 FOR N1= 1TO 7
1610 PLOT 29,3,127,X,Y,1,100,3,127,X,Y,7,100
1620 PLOT 3,127,X,Y,6,100,3,127,X,Y,7,100
1630 NEXT
1640 PLOT 3,127,X,Y,0,100
1650 BO(X- 1,Y- 1)= 0
1660 GOTO 2050
1670 DI= 3* SGN (X)+ SGN (Y)+ 4
1680 IF DI> 4THEN DI= DI- 1
1690 X= 2* OX(N)+ S1(DI)
1700 Y= 127- 4* OY(N)+ S2(DI)
1710 X2= INT (X/ 2)- 1
1720 Y2= INT ((127- Y)/ 4)- 1
1730 IF BO(X2,Y2)= 41OR BO(X2,Y2)= 44THEN BO(X2,Y2)= 41:GOTO 1750
1740 IF BO(X2,Y2)< > 0GOTO 1860
1750 PLOT 30,6,1:GOTO 1770
1760 PLOT 2,X1,Y1,255
1770 PLOT 2,X,Y,255
1780 X1= X:Y1= Y
1790 X= X+ S3(DI):Y= Y+ S4(DI)
1800 X2= INT (X/ 2)- 1
1810 Y2= INT ((127- Y)/ 4)- 1
1820 IF BO(X2,Y2)= 41OR BO(X2,Y2)= 44THEN BO(X2,Y2)= 41:GOTO 1760
1830 IF BO(X2,Y2)< > 0THEN 1850
1840 GOTO 1760
1850 PLOT 2,X1,Y1,255
1860 X= X2+ 1:Y= Y2+ 1
1870 IF BO(X2,Y2)= 1THEN 1600
1880 IF BO(X2,Y2)= 2THEN 1900
1890 GOTO 2050
1900 FOR N1= 1TO 15
1910 PLOT 3,127,X,Y,1,48,3,127,X,Y,7,48
1920 PLOT 3,127,X,Y,2,48,3,127,X,Y,7,48
1930 NEXT
1940 X2= OX(N):IF OY(N)> X2THEN X2= OY(N)
1950 GOSUB 2950
1960 IF Z> .85- X2/ 90THEN PLOT 3,127,X,Y,2,48:GOTO 2050
1970 PLOT 3,127,X,Y,0,32
1980 PLOT 3,0,31,6,1,11
1990 PLOT 3,27,31,31
2000 PRINT "YOU LOSE."
2010 PLOT 3,64,0,15
2020 FOR X= 1TO 5000:NEXT
2030 PLOT 27,75,6,6,12,3,0,0
2040 GOTO 2960
2050 X= H- OX(N):Y= V- OY(N)
2060 IF OS(N)= 32OR ABS (X)= 1OR ABS (Y)= 1THEN 2090
2070 GOSUB 2950
2080 IF Z< .1GOTO 1510
2090 NEXT N
2100 GOTO 1270
2110 PLOT 3,0,31,6,3,11
2120 POKE 33278,0
2130 IF BL= 0THEN 1280
2140 PRINT "SHOOT:";:OUT 8,255
2150 IF PEEK (33278)= 0THEN TI= TI+ 1:GOTO 2150
2160 OUT 8,0:PRINT
2170 IF PEEK (33278)= 53THEN 1280
2180 DI= PEEK (33278)- 49:IF DI> 4THEN DI= DI- 1
2190 IF DI< 0OR DI> 7THEN TI= TI+ INT (RND (1)* 2* SP):GOTO 2110
2200 PLOT 6,7,29,2,0,6,242,127,6,127,125,0,125,0,6,240,255
2210 DI= S5(DI)
2220 PLOT 3,0,31,6,8,11,3,64,0
2230 BL= BL- 1
2240 X= 2* H+ S1(DI)
2250 Y= 127- 4* V+ S2(DI)
2260 X2= INT (X/ 2)- 1
2270 Y2= INT ((127- Y)/ 4)- 1
2280 IF X< 2OR X> 125OR Y< 8OR Y> 123THEN 1470
2290 IF BO(X2,Y2)= 42OR BO(X2,Y2)= 44THEN BO(X2,Y2)= 42:GOTO 2310
2300 IF BO(X2,Y2)< > 0THEN 2430
2310 PLOT 30,6,2:GOTO 2330
2320 PLOT 2,X1,Y1,255
2330 PLOT 2,X,Y,255
2340 X1= X:Y1= Y
2350 X= X+ S3(DI):Y= Y+ S4(DI)
2360 X2= INT (X/ 2)- 1
2370 Y2= INT ((127- Y)/ 4)- 1
2380 IF X< 2OR X> 125OR Y< 8OR Y> 123THEN PLOT 2,X1,Y1,255:GOTO 1470
2390 IF BO(X2,Y2)= 42OR BO(X2,Y2)= 44THEN BO(X2,Y2)= 42:GOTO 2320
2400 IF BO(X2,Y2)< > 0THEN 2420
2410 GOTO 2320
2420 PLOT 2,X1,Y1,255
2430 X= X2+ 1:Y= Y2+ 1
2440 IF BO(X2,Y2)> 40GOTO 1470
2450 IF BO(X2,Y2)> 2.5THEN 2530
2460 FOR N= 1TO 7
2470 PLOT 29,3,127,X,Y,2,100,3,127,X,Y,7,100
2480 PLOT 3,127,X,Y,6,100,3,127,X,Y,7,100
2490 NEXT
2500 PLOT 3,127,X,Y,0,32
2510 BO(X- 1,Y- 1)= 0
2520 GOTO 1470
2530 FOR N1= 1TO 7
2540 PLOT 29,3,127,X,Y,2,35,3,127,X,Y,7,35
2550 PLOT 3,127,X,Y,1,35,3,127,X,Y,7,35
2560 NEXT
2570 GOSUB 2950
2580 N= BO(X- 1,Y- 1)- 3
2590 IF Z> 1- .1* TI/ (57- SP)THEN PLOT 3,127,X,Y,OC(N),29,OS(N):GOTO 1470
2600 PLOT 3,127,X,Y,0,48
2610 OX(BO(X- 1,Y- 1)- 3)= - 1
2620 BO(X- 1,Y- 1)= 0
2630 OL= OL- 1
2640 IF OL< > 0THEN 1470
2650 PLOT 3,8,31,6,3,31,11,3,8,31
2660 PRINT "CONGRATULATIONS !!!!"
2670 PLOT 3,32,31,15
2680 PRINT "YOU JUST WON THE GAME."
2690 PLOT 3,64,0
2700 GOTO 2020
2710 X= H+ 1:Y= V+ 1
2720 FOR N= 1TO 15
2730 PLOT 3,127,X,Y,6,48,3,127,X,Y,7,48
2740 PLOT 3,127,X,Y,2,48,3,127,X,Y,7,48
2750 NEXT
2760 GOTO 1970
2770 FOR N= 1TO 1000:NEXT
2780 PLOT 12,3,64,0,6,7,29
2790 PLOT 2,32,122,242,95,122,240,255
2800 PLOT 2,32,7,242,95,7,240,255
2810 FOR N= 0TO 29
2820 PLOT 2,32,122,242,95,122,240,255
2830 PLOT 3,127,32,N,2,48
2840 FOR N1= 1TO (29- N)^ 2:NEXT
2850 PLOT 3,127,32,N,0,32
2860 NEXT
2870 PLOT 3,27,29,6,1,29
2880 PRINT "S P L A T !"
2890 PLOT 3,64,0
2900 FOR N= 1TO 64
2910 PLOT 29,2,64- N,7,242,63+ N,7,240,255
2920 FOR N1= 1TO 25
2930 NEXT N1,N:GOTO 1990
2940 REM

2950 Q= RND (1):Z= (K+ Q)* Z- INT ((K+ Q)* Z):RETURN
2960 PRINT "     CARE FOR ANOTHER GAME ";
2970 OUT 8,255:INPUT A$:REM 
2980 IF LEFT$ (A$,1)= "N"THEN LOAD "MENU":RUN
2990 RUN