10 REM === GAME TEMPLATE === 20 DIM ANS$ : DIM PROMPT$ : DIM RESP : DIM MIN : DIM MAX : DIM SHOW : DIM RESULT 22 REM === DATA SECTION === 25 DIM YOURGRID(25) : DIM ENEMYGRID(25) : DIM OUTPOSTS(2) : DIM TURN : DIM WINNER 26 DIM GSTART : DIM GEND : DIM G : DIM DISPLAYLINE$ : DIM X : DIM Y : DIM OUTPOST : DIM O 30 DIM RUNNING : DIM GAMEOVER : DIM OUTPOSTSET : DIM LOCATION : DIM GOTLOC 90 PRINT "*** BOMBARDMENT : B.A.S.I.C. ***" : RUNNING = 1 100 REM === RUNNING LOOP START === 110 GAMEOVER = 0 : RESP = 0 : GOSUB 7000 120 IF RESP = 1 THEN GOSUB 9000 130 TURN = 0 : GOSUB 1550 : GOSUB 1800 : GOSUB 1600 140 PRINT "--------- LET THE WAR BEGIN ----------" 200 REM === GAME LOOP START === 210 IF GAMEOVER = 1 THEN GOTO 900 220 GOSUB 3000 270 GOTO 200 900 REM === GAME LOOP END === 920 RESP = 0 : GOSUB 6000 930 IF RESP = 1 THEN GAMEOVER = 0 940 IF RESP = 0 THEN GOTO 4000 960 GOTO 130 1200 REM === CHECK WINNER === 1210 IF OUTPOSTS(1) = 0 THEN WINNER = 2 : RETURN 1220 IF OUTPOSTS(2) = 0 THEN WINNER = 1 : RETURN 1230 WINNER = 0 : RETURN 1250 REM === DISPLAY YOUR GRID === 1260 PRINT "========================" 1270 PRINT "YOUR GRID" 1280 PRINT "========================" 1290 PRINT " X | 1 | 2 | 3 | 4 | 5 |" 1300 PRINT " Y |---+---+---+---+---|" 1310 FOR X = 1 TO 5 1320 GSTART = ((X - 1) * 5) + 1 : GEND = X * 5 : DISPLAYLINE$ = STR$(X) + " |" 1330 FOR G = GSTART TO GEND 1340 IF YOURGRID(G) = -1 THEN DISPLAYLINE$ = DISPLAYLINE$ + " X |" 1350 IF YOURGRID(G) = 1 THEN DISPLAYLINE$ = DISPLAYLINE$ + " O |" 1360 IF YOURGRID(G) = 0 THEN DISPLAYLINE$ = DISPLAYLINE$ + " |" 1370 NEXT G : PRINT DISPLAYLINE$ : NEXT X 1380 PRINT " |---+---+---+---+---|" : RETURN 1400 REM === DISPLAY ENEMY GRID === 1410 PRINT "========================" 1420 PRINT "ENEMY GRID" 1430 PRINT "========================" 1440 PRINT " X | 1 | 2 | 3 | 4 | 5 |" 1450 PRINT " Y |---+---+---+---+---|" 1460 FOR X = 1 TO 5 1470 GSTART = ((X - 1) * 5) + 1 : GEND = X * 5 : DISPLAYLINE$ = STR$(X) + " |" 1480 FOR G = GSTART TO GEND 1490 IF ENEMYGRID(G) = -1 THEN DISPLAYLINE$ = DISPLAYLINE$ + " X |" 1500 IF ENEMYGRID(G) = 1 THEN DISPLAYLINE$ = DISPLAYLINE$ + " |" 1510 IF ENEMYGRID(G) = 0 THEN DISPLAYLINE$ = DISPLAYLINE$ + " |" 1520 NEXT G : PRINT DISPLAYLINE$ : NEXT X 1530 PRINT " |---+---+---+---+---|" : RETURN 1550 REM === CLEAR GRIDS === 1560 FOR G = 1 TO 25 : YOURGRID(G) = 0 : ENEMYGRID(G) = 0 : NEXT G : RETURN 1600 REM === SET OUTPOSTS === 1610 OUTPOSTS(1) = 4 : OUTPOST = 0 1620 FOR O = 1 TO 4 : GOSUB 1250 : OUTPOSTSET = 0 1630 IF OUTPOSTSET = 1 THEN RETURN 1640 PRINT "PLACE YOUR OUTPOST #" + STR$(O) 1650 PRINT "X:" : INPUT X 1660 IF X < 1 OR X > 5 THEN GOTO 1720 1670 PRINT "Y:" : INPUT Y 1680 IF Y < 1 OR Y > 5 THEN GOTO 1730 1690 OUTPOST = ((Y - 1) * 5) + X 1700 IF YOURGRID(OUTPOST) = 0 THEN GOTO 1740 ELSE GOTO 1750 1710 NEXT O : RETURN 1720 PRINT "X MUST BE BETWEEN 1 AND 5." : GOTO 1650 1730 PRINT "Y MUST BE BETWEEN 1 AND 5." : GOTO 1670 1740 OUTPOSTSET = 1 : YOURGRID(OUTPOST) = 1 : GOTO 1710 1750 PRINT "YOU ALREADY HAVE AN OUTPOST THERE." : GOTO 1650 1800 REM === COMPUTER SET OUTPOSTS === 1810 OUTPOSTS(2) = 4 : OUTPOST = 0 1820 FOR O = 1 TO 4 1840 MAX = 25 : MIN = 1 : GOSUB 8000 1850 IF ENEMYGRID(RESULT) = 0 THEN ENEMYGRID(RESULT) = 1 ELSE GOTO 1840 1860 NEXT O : RETURN 1900 REM === COMPUTER TURN === 1910 PRINT "MY TURN..." : LOCATION = 0 : X = 0 : Y = 0 : GOTLOC = 0 1920 IF GOTLOC = 1 THEN GOTO 1970 1930 MAX = 5 : MIN = 1 : GOSUB 8000 : X = RESULT 1940 MAX = 5 : MIN = 1 : GOSUB 8000 : Y = RESULT 1950 LOCATION = ((Y - 1) * 5) + X 1960 IF YOURGRID(LOCATION) > -1 THEN GOTLOC = 1 1965 GOTO 1920 1970 PRINT "..........BOOM!" 1980 IF YOURGRID(LOCATION) = 0 THEN GOTO 2070 1990 PRINT "I GOT YOU. IT WON'T BE LONG NOW!" 2000 PRINT "OUTPOST AT (" + STR$(X) + "," + STR$(Y) + ") WAS HIT." 2010 YOURGRID(LOCATION) = -1 : OUTPOSTS(1) = OUTPOSTS(1) - 1 2020 IF OUTPOSTS(1) = 3 THEN PRINT "YOU ONLY HAVE THREE OUTPOSTS LEFT." 2030 IF OUTPOSTS(1) = 2 THEN PRINT "YOU ONLY HAVE TWO OUTPOSTS LEFT." 2040 IF OUTPOSTS(1) = 1 THEN PRINT "YOU ONLY HAVE ONE OUTPOST LEFT." 2050 IF OUTPOSTS(1) = 0 THEN PRINT "YOU ARE DEAD! YOU HAVE NO OUTPOSTS LEFT." 2060 RETURN 2070 PRINT "I MISSED YOU, YOU DIRTY RAT." 2080 PRINT "I PICKED LOCATION (" + STR$(X) + "," + STR$(Y) + ")." : RETURN 2100 REM === FIRE MISSILE === 2110 X = 0 : Y = 0 2120 PRINT "WHERE DO YOU WANT TO FIRE YOUR MISSILE?" 2140 PRINT "X:" : INPUT X 2150 IF X < 1 OR X > 5 THEN GOTO 2300 2160 PRINT "Y:" : INPUT Y 2170 IF Y < 1 OR Y > 5 THEN GOTO 2310 2180 LOCATION = ((Y - 1) * 5) + X : PRINT "..........BOOM!" 2190 IF ENEMYGRID(LOCATION) = -1 THEN GOTO 2280 2200 IF ENEMYGRID(LOCATION) = 0 THEN GOTO 2290 2210 PRINT "YOU GOT ONE OF MY OUTPOSTS!" 2220 ENEMYGRID(LOCATION) = -1 : OUTPOSTS(2) = OUTPOSTS(2) - 1 2230 IF OUTPOSTS(2) = 3 THEN PRINT "ONE DOWN, THREE TO GO." 2240 IF OUTPOSTS(2) = 2 THEN PRINT "TWO DOWN, TWO TO GO." 2250 IF OUTPOSTS(2) = 1 THEN PRINT "THREE DOWN, ONE TO GO." 2260 IF OUTPOSTS(2) = 0 THEN PRINT "YOU GOT THEM ALL." 2270 RETURN 2280 PRINT "YOU FOOL, YOU ALREADY ATTACKED THERE!" : RETURN 2290 PRINT "HA HA, YOU MISSED!" : RETURN 2300 PRINT "X MUST BE BETWEEN 1 AND 5." : GOTO 2140 2310 PRINT "Y MUST BE BETWEEN 1 AND 5." : GOTO 2160 3000 REM === MAIN LOGIC === 3010 PRINT "-----------------------" 3020 PRINT "TURN #" + STR$(TURN + 1) 3030 PRINT "-----------------------" 3040 IF TURN MOD 2 = 0 THEN GOTO 3110 ELSE GOTO 3120 3050 WINNER = 0 : GOSUB 1200 3060 IF WINNER = 1 THEN GOTO 3095 3070 IF WINNER = 2 THEN GOTO 3105 3080 TURN = TURN + 1 : RETURN 3090 GOSUB 1250 : GOSUB 1400 3095 PRINT "YOU WIN!!!" : GAMEOVER = 1 : RETURN 3100 GOSUB 1250 : GOSUB 1400 3105 PRINT "TOO BAD, BETTER LUCK NEXT TIME." : GAMEOVER = 1 : RETURN 3110 PRINT "PRESS ENTER TO BEGIN YOUR TURN:" : INPUT ANS$ 3115 GOSUB 1250 : GOSUB 1400 : GOSUB 2100 : GOTO 3050 3120 GOSUB 1900 : GOTO 3050 4000 REM === RUNNING LOOP END === 4999 END 5000 REM === ASK A QUESTION === 5010 PRINT PROMPT$ 5020 INPUT ANS$ 5030 IF ANS$="YES" OR ANS$="Y" OR ANS$="yes" OR ANS$="y" THEN RESP=1 : RETURN 5040 IF ANS$="NO" OR ANS$="N" OR ANS$="no" OR ANS$="n" THEN RESP=0 : RETURN 5050 PRINT "PLEASE ANSWER ""YES"" OR ""NO""" 5060 GOTO 5010 6000 REM === ASK TO PLAY AGAIN === 6010 PROMPT$ = "DO YOU WANT TO PLAY AGAIN?" 6020 GOSUB 5000 6030 RETURN 7000 REM === ASK TO SEE THE RULES === 7010 PROMPT$ = "DO YOU WANT TO SEE THE RULES?" 7020 GOSUB 5000 7030 RETURN 8000 REM === GENERATE RANDOM NUMBER === 8010 RANDOMIZE TIMER 8020 RESULT = INT(RND(0)*MAX)+MIN 8030 IF SHOW = 1 THEN PRINT RESULT 8040 RETURN 9000 REM === DISPLAY THE RULES === 9001 PRINT "YOU ARE ON A BATTLEFIELD WITH 4 PLATOONS AND YOU" 9002 PRINT "HAVE 25 OUTPOSTS AVAILABLE WHERE THEY MAY BE PLACED." 9003 PRINT "YOU CAN ONLY PLACE ONE PLATOON AT ANY ONE OUTPOST." 9004 PRINT "THE COMPUTER DOES THE SAME WITH ITS FOUR PLATOONS." 9005 PRINT "" 9006 PRINT "THE OBJECT OF THE GAME IS TO FIRE MISSILES AT THE" 9007 PRINT "OUTPOSTS OF THE COMPUTER. IT WILL DO THE SAME TO YOU." 9008 PRINT "THE ONE WHO DESTROYS ALL FOUR OF THE ENEMY'S PLATOONS" 9009 PRINT "FIRST IS THE WINNER." 9010 PRINT " " 9011 PRINT "GOOD LUCK...AND TELL US WHERE YOU WANT THE BODIES SENT." 9012 PRINT " " 9100 RETURN