Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 210 CLS:SCREEN 0
- 220 CL=38:RW=20
- 230 CA=45:CN=5
- 240 CX=3:PX=CL-5:SC=0:LV=3
- 245 S=TIME
- 250 PI=3.1415
- 300 REM === Play game
- 310 CV = INT(RND(1)*15)+10:GOSUB 4010:GOSUB 2010
- 320 GOSUB 2510
- 330 IF K$="a" THEN CA=CA+5:IF CA>85 THEN CA=85
- 340 IF K$="z" THEN CA=CA-5:IF CA<15 THEN CA=15
- 350 IF K$="q" THEN END
- 360 IF K$=" " THEN 410
- 370 GOSUB 1010
- 380 GOTO 320
- 400 REM === fire
- 410 LX = (CN+1) * COS((360-CA)*PI/180)
- 412 BEEP
- 415 LY = (CN+1) *SIN((360-CA)*PI/180)
- 420 BX=CX+LX:BY=RW+LY
- 430 GOSUB 1510
- 440 VX= CV*COS((360-CA)*PI/180)
- 445 VY= CV*SIN((360-CA)*PI/180)
- 500 REM == move player and ball
- 510 GOSUB 2510
- 520 IF K$="o" THEN PX=PX-1: IF PX<CX+CN THEN PX=CX+CN
- 530 IF K$="p" THEN PX=PX+1: IF PX>CL-1 THEN PX=CL-1
- 540 GOSUB 2010
- 550 BX=BX+(VX/10):BY=BY+(VY/10):GOSUB 1510
- 560 VY=VY+2
- 570 IF BY<RW THEN 510
- 580 P$=" ":X1%=BX%:Y1%=BY%:GOSUB 3510
- 600 REM == score or die
- 610 LX=BX-BX%:LY=BY-BY%:L2=RW-BY%
- 620 IX=BX%+LX*(L2/LY)
- 630 IF IX>=PX-1 AND IX<=PX+1 THEN SC=SC+10:PLAY"cd":GOTO 310
- 635 PLAY"ed"
- 640 LV=LV-1:GOSUB 4010
- 650 IF LV<1 THEN P$="Game over":X1%= (CL-LEN(P$))/2:Y1%=RW/2:GOSUB 3510:PLAY"edc":END
- 660 GOTO 310
- 1000 REM === draw cannon
- 1010 IF (CA=LA) THEN RETURN
- 1020 P$="Angle:"+STR$(CA)+" ":X1%=0:Y1%=1:GOSUB 3510
- 1030 LX=CN*COS((360-LA)*PI/180)
- 1035 LY=CN*SIN((360-LA)*PI/180)
- 1036 REM RETURN
- 1040 X1=CX:Y1=RW:X2=X1+LX:Y2=Y1+LY:P$=" ":GOSUB 3010
- 1050 LX=CN*COS((360-CA)*PI/180)
- 1055 LY=CN*SIN((360-CA)*PI/180)
- 1060 X2=X1+LX:Y2=Y1+LY:P$="%":GOSUB 3010
- 1070 LA=CA:RETURN
- 1500 REM === draw ball
- 1510 X1%=BX:Y1%=BY:P$="o":GOSUB 3510
- 1520 IF BX%<> X1% OR BY%<> Y1% THEN X1%=BX%:Y1%=BY%:P$=" ":GOSUB 3510
- 1530 BX%=BX:BY%=BY
- 1540 RETURN
- 2000 REM === draw player
- 2010 P$="U":X1%=PX:Y1%=RW:GOSUB 3510
- 2020 IF PX%<>X1% THEN X1%=PX%:P$=" ":GOSUB 3510
- 2030 PX%=PX
- 2040 RETURN
- 2500 REM == keyboard
- 2510 K$=INKEY$
- 2520 RETURN
- 3000 REM === plot a line
- 3010 X1%=X1:X2%=X2:Y1%=Y1:Y2%=Y2
- 3020 DX%=ABS(X2%-X1%):SX%=-1:IF X1%<X2% THEN SX%=1
- 3030 DY%=ABS(Y2%-Y1%):SY%=-1:IF Y1%<Y2% THEN SY%=1
- 3040 ER%=-DY%:IF DX%>DY% THEN ER%=DX%
- 3050 ER%=ER%/2
- 3060 GOSUB 3510
- 3070 IF X1%=X2% AND Y1%=Y2% THEN RETURN
- 3080 E2%=ER%
- 3090 IF E2%>-DX% THEN ER%=ER%- DY%:X1%=X1%+SX%
- 3100 IF X1%=X2% AND Y1%=Y2% THEN RETURN
- 3110 IF E2%< DY% THEN ER%=ER%+ DX%:Y1%=Y1%+SY%
- 3120 IF X1%=X2% AND Y1%=Y2% THEN RETURN
- 3130 GOTO 3060
- 3500 REM === plot a point
- 3510 REM 1%<1 OR X1%>CL OR Y1<1 OR Y1%>RW THEN RETURN
- 3520 LOCATE X1%,Y1%:PRINT P$
- 3540 RETURN
- 3999 REM
- 4000 REM === score
- 4010 P$="Velocity:"+STR$(CV)+" ":X1%=CL/3:Y1%=1:GOSUB 3510
- 4020 P$="Score:"+STR$(SC)+" ":X1%=CL*2/3:GOSUB 3510
- 4030 P$=MID$(" UUU",LV+1,3):X1%=CL-4:GOSUB 3510
- 4040 RETURN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement