Compucolor.org – Virtual Media

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

100 REM 	FOR COMPUCOLOR II MOD FEB 1,80
110 REM 	COPYRIGHT (C) 1978 BY COMPUCOLOR CORPORTATION
120 REM 	WRITTEN BY A.W. GROGONO
130 OUT 8,255:OUT 8,247:TM= 256* PEEK (32941)+ PEEK (32940)
140 Z= TM+ 8:AD= 33283:GOSUB 200:TM= TM+ 1
150 GOTO 210
160 Y1= 5:H= 10:W= 14:C1= 1
170 Z= 28672+ 128* Y1+ X1+ X1:AD= TM+ 126:GOSUB 200
180 Z= 128- W- W:AD= TM+ 149:GOSUB 200:POKE TM+ 129,H- 1
190 POKE TM+ 131,W* (C1+ 1):POKE TM+ 143,35* (1- C1):RETURN
200 ZZ= INT (Z/ 256):POKE AD,Z- 256* ZZ:POKE AD+ 1,ZZ:RETURN
210 DIM H(159),X0(1),SC(1)
220 PLOT 6,2,12,29,27,24,15,12
230 XX= RND (- PEEK (33209))
240 PLOT 12,15
250 YH= 90* RND (1)
260 LH= 4* INT (10* RND (1)+ 1)
270 RH= 4* INT (10* RND (1)+ 1)
280 WH= 4+ 12* RND (1)
290 XH= 55.5+ 16* RND (1)
300 G= .1
310 WF= .003
320 VW= 20* RND (1)- 10:GOTO 390
330 A= XH/ WH:B= 1/ WH:C= LH/ YH:D= RH/ YH
340 PLOT 6,2,2,246,0:FOR I= 1TO 127:J= A- I* B:Y= YH* EXP (- J* J)
350 IF I> XHTHEN H(I)= RH+ Y- Y* D:GOTO 370
360 H(I)= LH+ Y- Y* C
370 XX= RND (- PEEK (33209))
380 PLOT I,H(I):NEXT :PLOT 255:GOTO 560
390 PLOT 3,27,0
400 PRINT "WIND ";INT (4* ABS (VW)+ .5)
410 PLOT 3,27,1
420 IF VW> 0THEN 440
430 PRINT "<------":VW$= "LEFT":GOTO 450
440 PRINT "------>":VW$= "RIGHT":GOTO 450
450 PLOT 3,27,2:PRINT "TO "VW$
460 FOR P= - 1TO 1STEP 2:C= 19.5+ 2.5* P
470 X((P+ 1)/ 2)= XH+ P* (WH+ 32+ 10* RND (1))
480 PLOT 30,C,29,C
490 PLOT 30,16,29
500 PLOT 3,25+ 25* P,1
510 PRINT "PLAYER "(P+ 3)/ 2
520 PLOT 3,25+ 25* P,2
530 PRINT "SCORE: "SC((P+ 1)/ 2)
540 PLOT 3,25+ 25* P,4
550 PRINT "ANGLE/BAGS":NEXT :GOTO 330
560 P= 2* INT (2* RND (1))- 1
570 FOR X= 1TO 2:GOSUB 1070:P= - P:NEXT X
580 T= .5
590 L= 0:P= - P:GOSUB 1030
600 GOSUB 1070
610 PLOT 19.5+ 2.5* P
620 L= 0:GOSUB 1010
630 L= 2+ LEN (I$)
640 E= VAL (I$)
650 IF E< 0THEN 1020
660 GOSUB 1010
670 VI= VAL (I$)/ 2
675 IF VI< 0THEN P= - P:T= T- .5:GOTO 590
680 R= (E- 90)* P/ 57.2958
690 VX= VI* SIN (R)
700 VY= VI* COS (R)
710 X= X((P+ 1)/ 2):Y= H(X((P+ 1)/ 2))
720 Y= INT (Y/ 4)* 4+ 4
730 X0= X:Y0= Y
740 PLOT 30,2
750 IF Y< 0THEN 890
760 IF X< 1OR X> 127THEN 890
770 IF Y> 115THEN 800
780 OUT 7,64
790 PLOT X,Y,X0,Y0:X0= X:Y0= Y
800 VX= VX+ (VW- VX)* WF:VY= VY- G:X= X+ VX:Y= Y+ VY
810 IF X< 1OR X> 127THEN 890
820 IF Y> H(X)THEN 750
830 OUT 7,64
840 X= X+ VX* (H(X)- Y)/ VY
850 X= INT (X):IF X> 127THEN X= 127
860 IF X< 1THEN X= 1
870 Y= H(X)
880 PLOT X0,Y0,X,Y
890 PLOT 255,30,16,29
900 IF INT (X((1- P)/ 2)/ 2)< > INT (X/ 2)THEN 590
910 OUT 7,64
920 Z= 0:PLOT 14,17
930 XX= INT ((X+ Z)/ 2)- 3:IF XX< 0OR XX> 54THEN Z= Z+ P:GOTO 930
935 IF Y> 117THEN Y= 117
940 PLOT 3,XX,29- INT (Y/ 4+ .5)
950 PRINT "KA-POW-EE"
960 PLOT 3,INT (X/ 2),29- INT (Y/ 4+ .5)
970 PLOT 10:PRINT "\*/"
980 OUT 7,64:PLOT 3,80,0
990 SC((P+ 1)/ 2)= SC((P+ 1)/ 2)+ 1
1000 FOR Z= 1TO 2000:NEXT :GOTO 240
1010 PLOT 3,L+ 25+ 25* P,4+ INT (T):OUT 8,255:INPUT "";I$:OUT 8,247:RETURN
1020 OUT 8,255:PLOT 6,2,12,1
1030 X1= L+ 25+ 25* P:GOSUB 160
1040 T= T+ .5:IF INT (T)= 6THEN ZZ= CALL (1):T= 5.5
1050 GOSUB 1060:PRINT SPC( 15)""
1060 PLOT 3,L+ 25+ 25* P,4+ INT (T):RETURN
1070 C= 19.5+ 2.5* - P
1080 PLOT 30,C,29,C
1090 PLOT 2,X((- P+ 1)/ 2),H(X((- P+ 1)/ 2)),255
1100 PLOT 30,16,29:RETURN