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