Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 100 REM === BASIC MONTH 3: CANNONBALL
- 110 REM === HTTP://REDDIT.COM/R/RETROBATTLESTATIONS
- 120 REM === WRITTEN BY FOZZTEXX
- 130 REM === PORTABLE C64 VERSION BY NEVETS01
- 200 REM === CLEAR SCREEN AND SETUP VARIABLES
- 210 PRINT CHR$(147);
- 220 CL = 40:RW = 24:REM COLUMNS AND ROWS OF SCREEN
- 230 CA = 50:CN = 5:REM ANGLE AND LENGTH OF CANNON
- 240 CX = 5:PX = CL-5:SC = 0:LV = 3
- 250 PI = 3.14159
- 300 REM === PLAY GAME
- 310 CV = INT(RND(1) * 15) + 10:GOSUB 4010:GOSUB 2010
- 320 GOSUB 2510
- 330 IF KE$ = "{up}" THEN CA = CA + 5:IF CA > 85 THEN CA = 85
- 340 IF KE$ = "{down}" THEN CA = CA - 5:IF CA < 15 THEN CA = 15
- 350 IF KE$ = "Q" OR KE$ = "Q" THEN END
- 360 IF KE$ = " " THEN 410
- 370 GOSUB 1010
- 380 GOTO 320
- 400 REM === FIRE!
- 410 LX = (CN + 1) * COS((360 - CA) * PI / 180)
- 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):VY = CV * SIN((360 - CA) * PI / 180)
- 500 REM === MOVE PLAYER AND ANIMATE BALL
- 510 GOSUB 2510
- 520 IF KE$ = "{LEFT}" THEN PX = PX - 1:IF PX < CX+CN THEN PX = CX+CN
- 530 IF KE$ = "{RIGHT}" 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:GOTO 310
- 640 LV = LV - 1: PRINT "{CLEAR}":GOSUB 4010
- 650 IF LV < 1 THEN P$="GAME OVER":X1% = (CL - LEN(P$)) / 2:Y1% = RW / 2:GOSUB 3510:END
- 660 GOTO 310
- 1000 REM === DRAW CANNON
- 1010 PRINT "{HOME}":FOR CQ = 1 TO 16: PRINT"": NEXT
- 1015 IF CA < 21 AND CA > 9 THEN GOSUB 3010 :REM 10-20
- 1025 IF CA < 36 AND CA > 24 THEN GOSUB 3020 :REM 25-35
- 1035 IF CA < 51 AND CA > 39 THEN GOSUB 3030 :REM 40-50
- 1045 IF CA < 66 AND CA > 54 THEN GOSUB 3040 :REM 55-65
- 1055 IF CA < 81 AND CA > 69 THEN GOSUB 3050 :REM 70-80
- 1065 IF CA = 85 THEN GOSUB 3060 :REM 85
- 1070 GOSUB 4000
- 1075 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 === READ THE KEYBOARD
- 2510 KE$ = "" : GET KE$
- 2520 RETURN
- 3000 REM === PLOT A LINE
- 3010 PRINT TAB(CX)" ":PRINT TAB(CX)" ":PRINT TAB(CX)" ##":PRINT TAB(CX)"## " : RETURN
- 3020 PRINT TAB(CX)" ":PRINT TAB(CX)" #":PRINT TAB(CX)" ## ":PRINT TAB(CX)"# " : RETURN
- 3030 PRINT TAB(CX)" #":PRINT TAB(CX)" # ":PRINT TAB(CX)" # ":PRINT TAB(CX)"# " : RETURN
- 3040 PRINT TAB(CX)" # ":PRINT TAB(CX)" # ":PRINT TAB(CX)" # ":PRINT TAB(CX)"# " : RETURN
- 3050 PRINT TAB(CX)" # ":PRINT TAB(CX)" # ":PRINT TAB(CX)"# ":PRINT TAB(CX)"# " : RETURN
- 3060 PRINT TAB(CX)" # ":PRINT TAB(CX)"# ":PRINT TAB(CX)"# ":PRINT TAB(CX)"# " : RETURN
- 3500 REM === PLOT A POINT
- 3510 IF X1% < 1 OR X1% > CL OR Y1% < 1 OR Y1% > RW THEN RETURN
- 3520 PRINT"{HOME}":Y7%=Y1% - 2:FOR Y1 = 1 TO Y7%: PRINT"": NEXT
- 3521 REM PRINT X1%,Y1%
- 3530 PRINT TAB(X1%)P$ :rem + str$(x1%)+str$(y1%);
- 3540 RETURN
- 4000 REM === SHOW SCORE/LIVES/VELOCITY
- 4010 rem P$="VELOCITY:"+STR$(CV)+" ":X1% = CL / 3:Y1%=1:GOSUB 3510
- 4020 rem P$="SCORE:"+STR$(SC):X1% = CL * 2 / 3:GOSUB 3510
- 4030 rem P$=MID$(" UUU",LV+1,3):X1%=CL - 2:GOSUB 3510
- 4031 print "{home}V="+str$(cv)+" A="+str$(ca)+" S="+str$(sc)+" L="+str$(lv)
- 4040 RETURN
Add Comment
Please, Sign In to add comment