10 REM Artillery Duel V1.1 15 REM by Mika Aronen 4/1996 20 RADIAN 30 DIM TX(9),EALPHA(9),ENOPEUS(9),LKM(9),REEALPHA(9),MUUTOS(9),EX(9), AKTIIVI(9) 40 CLS 50 PRINT " CHOOSE YOUR LEVEL:" 60 PRINT " Tove Jansson.........................1" 70 PRINT " President of Hell's Angels...........2" 80 PRINT " Arnold Schwarzenegger................3" 90 A$=INKEY$ 100 RANDOMIZE :IF VAL (A$)<1 OR VAL (A$)>9 THEN GOTO 90 110 TASO=VAL (A$) 120 CLS 130 ALPHA=0:REALPHA=0:P=0 140 G=9.81:OMAX=20 150 FOR VIH=1 TO TASO 160 TX(VIH)=INT (RND 150)+70 170 EALPHA(VIH)=0:LKM(VIH)=0 180 AKTIIVI(VIH)=1 190 NEXT VIH 200 CLS 205 'Draw player 210 LINE (20,26)-(20+5*(COS ALPHA),26-5*(SIN ALPHA)),S 220 LINE (16,27)-(26,27),S:LINE (16,28)-(26,28),S 230 FOR I=17 TO 25 STEP 2:PSET (I,29):NEXT I 240 LINE (0,30)-(240,30),S 250 'Draw opponents 260 ' 270 FOR VIH=1 TO TASO 275 IF AKTIIVI(VIH)=0 THEN GOTO 310 280 LINE (TX(VIH),26)-(TX(VIH)-5*COS (EALPHA(VIH)/60),26-5*SIN (EALPHA(VIH)/60)),S 290 LINE (TX(VIH)-6,27)-(TX(VIH)+4,27),S:LINE (TX(VIH)-6,28)-(TX(VIH)+4,28),S 300 FOR I=TX(VIH)-5 TO TX(VIH)+3 STEP 2:PSET (I,29):NEXT I 310 NEXT VIH 320 TUULI=INT (10-RND 20) 330 PRINT "Angle: Velocity: Wind:";USING "###";TUULI; 340 LOCATE 6,0:PRINT USING "###.#";ALPHA*60 350 LOCATE 25,0:PRINT USING "###";P 360 IF LKM=0 AND RND 1<0.5 THEN GOTO 990 370 LOCATE 15,1:PRINT "SHOOT!!" 380 IF INKEY$ ="" THEN GOTO 390 390 LOCATE 15,1:PRINT " " 395 'Main loop 400 A$=INKEY$ 410 IF ASC (A$)=4 THEN GOSUB 470 420 IF ASC (A$)=5 THEN GOSUB 550 430 IF ASC (A$)=14 THEN GOSUB 630 440 IF ASC (A$)=15 THEN GOSUB 670 450 IF ASC (A$)=13 THEN GOTO 710 460 GOTO 400 470 REM More angle 480 ALPHA=ALPHA+0.05 490 IF ALPHA>PI THEN ALPHA=PI :RETURN 500 LOCATE 6,0:PRINT USING "###.#";ALPHA*60 510 LINE (20,26)-(20+5*(COS REALPHA),26-5*(SIN REALPHA)),R 520 REALPHA=ALPHA 530 LINE (20,26)-(20+5*(COS REALPHA),26-5*(SIN REALPHA)),S 540 RETURN 550 REM Less angle 560 ALPHA=ALPHA-0.05 570 IF ALPHA<0 THEN ALPHA=0:RETURN 580 LOCATE 6,0:PRINT USING "###.#";ALPHA*60 590 LINE (20,26)-(20+5*(COS REALPHA),26-5*(SIN REALPHA)),R 600 REALPHA=ALPHA 610 LINE (20,26)-(20+5*(COS REALPHA),26-5*(SIN REALPHA)),S 620 RETURN 630 REM Velocity increases 640 P=P+1:IF P>60 THEN P=60:RETURN 650 LOCATE 25,0:PRINT USING "###";P 660 RETURN 670 REM Velocity decreases 680 P=P-1:IF P<0 THEN P=0:RETURN 690 LOCATE 25,0:PRINT USING "###";P 700 RETURN 710 REM Fire! 720 X0=20+6*(COS ALPHA):Y0=26-6*(SIN ALPHA) 730 VX0=P*(COS ALPHA):VY0=P*(SIN ALPHA) 740 X=0:Y=0 750 REX=X:REY=Y 760 PSET (X0+X,Y0+Y) 780 X=X+(VX0+(TUULI))/8:Y=Y-VY0/8:VY0=VY0-G/5 790 REX=X:REY=Y:PSET (X0+REX,Y0+REY) 800 IF Y0+Y<30 THEN GOTO 780 810 OX=X0+REX 820 FOR I=1 TO 20:LINE (OX,30)-(OX+(5-RND 10),30-RND 10),S:NEXT I 830 FOR I=29 TO 20 STEP -1:LINE (OX-5,I)-(OX+5,I),R:NEXT I 835 GOSUB 840:GOTO 980 837 REM Check for hits 840 MERKKI=0 842 IF KONE=0 THEN XX=X+X0 ELSE XX=EX(VIH) 850 FOR K=1 TO TASO 860 IF XX>TX(K)-10 AND XX10 AND X+X0<30 THEN CLS :PRINT "YOU SHOT YOURSELF, MORON.":END 990 'Computer's turn 1000 FOR VIH=1 TO TASO 1005 IF AKTIIVI(VIH)=0 THEN GOTO 1280 1010 IF LKM(VIH)=0 THEN EALPHA(VIH)=ALPHA*60-5+INT (RND 10):ENOPEUS(VIH)=P*1.3-10+INT (RND 20):MUUTOS(VIH)=ENOPEUS(VIH)*0.25 1011 REEALPHA(VIH)=0 1015 IF P<20 THEN ENOPEUS(VIH)=40+INT (RND 10):MUUTOS(VIH)=ENOPEUS(VIH)*0.25 1017 IF LKM(VIH)=0 AND ALPHA*60>70 THEN EALPHA(VIH)=25+INT (RND 10) 1020 IF LKM(VIH)=0 THEN GOTO 1060 1030 REM Computer's brain 1040 IF EX(VIH)(OMAX-8) AND EX(VIH)<(OMAX+10) THEN GOTO 1300 1264 KONE=1 1265 GOSUB 840:' Check for computer hits 1266 KONE=0 1280 NEXT VIH 1290 GOTO 200 1300 CLS :LOCATE 16,1:PRINT "YOU LOST" 1302 LOCATE 9,3:PRINT "Another humiliation Y/N?" 1305 IF INKEY$ <>"" THEN GOTO 1305 1310 LOCATE 14,0:PRINT "* * * * * * *" 1315 LOCATE 14,1:PRINT " ":LOCATE 26,1:PRINT " " 1320 LOCATE 14,2:PRINT "* * * * * * *" 1330 FOR I=1 TO 30:IF INKEY$ <>"" GOTO 1400 1331 NEXT I 1340 LOCATE 14,0:PRINT " * * * * * * " 1342 LOCATE 14,1:PRINT "*":LOCATE 26,1:PRINT "*" 1350 LOCATE 14,2:PRINT " * * * * * * " 1360 FOR I=1 TO 30:IF INKEY$ <>"" THEN GOTO 1400 1361 NEXT I 1370 GOTO 1310 1400 IF INKEY$ ="Y" THEN GOTO 40 1405 CLS 1410 END 1420 CLS :PRINT "YOU WON" 1425 LOCATE 8,3:PRINT "Do you want to quit Y/N?" 1430 IF INKEY$ <>"" THEN GOTO 1430 1440 A$=INKEY$ :IF A$="" THEN GOTO 1440 1445 IF A$="N" THEN GOTO 40 1447 CLS 1450 END