home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib21a.dsk / AUGUST.1984 / BEACH.HEAD.bas < prev    next >
BASIC Source File  |  2023-02-26  |  19KB  |  387 lines

  1. 10  REM  **********************
  2. 20  REM  *     BEACH.HEAD     *
  3. 30  REM  *  BY GRAHAM FRAME   *
  4. 40  REM  * COPYRIGHT (C) 1984 *
  5. 50  REM  * BY MICRO-SPARC INC *
  6. 60  REM  * LINCOLN, MA. 01773 *
  7. 70  REM  **********************
  8. 80  IF  PEEK(104) < >64  THEN  POKE 103,1: POKE 104,64: POKE 16384,0: PRINT  CHR$(4);"RUN BEACH.HEAD"
  9. 90  REM  ACTUAL START OF PROGRAM AFTER LOADING ABOVE HI-RES SCREEN
  10. 100  POKE 232,1: POKE 233,8
  11. 110  PRINT  CHR$(4);"BLOAD BEACH.SHAPES,A$801"
  12. 120  HOME : VTAB 10: HTAB 15: PRINT "BEACH HEAD": PRINT 
  13. 130  VTAB 23: PRINT "** COPYRIGHT 1984 BY MICROSPARC, INC. **": VTAB 12
  14. 140  PRINT : PRINT  TAB( 12)"BY GRAHAM FRAME "
  15. 150  DIM A(12,2),M(20,2),PO$(12),ST$(12),SH(12),G(12),FF(12),EE(12)
  16. 160  VTAB 20: HTAB 10: INPUT "INSTRUCTIONS? (Y/N) ";X$
  17. 170  IF X$ = "Y"  THEN 3080
  18. 180  IF X$ < >"N"  THEN 160
  19. 190 :
  20. 200  REM   **  SET VARIABLES  **
  21. 210 :
  22. 220  FOR X = 1 TO 5: REM  MINES
  23. 230 M(X,1) = ( INT( RND(1) *9) +12) *5:M(X,2) = 110
  24. 240  NEXT X
  25. 250  FOR X = 6 TO 15
  26. 260 M(X,1) = ( INT( RND(1) *20) +27) *5:M(X,2) = 110
  27. 270  NEXT X
  28. 280  FOR X = 16 TO 20
  29. 290 M(X,1) = ( INT( RND(1) *8) +47) *5:M(X,2) = 110
  30. 300  NEXT X
  31. 310  FOR X = 1 TO 12
  32. 320 ST$(X) = "OK":PO$(X) = "R":SH(X) = 1:G(X) = 2:FF(X) = 0:EE(X) = 0
  33. 330  NEXT X
  34. 340 MG(1) =  INT( RND(1) *277) +1: REM  MACHINE GUN
  35. 350 MG(2) = 40
  36. 360 FL = 0:RG = 30:LL = 1:RR = 1:GG = 1
  37. 370  HOME : VTAB 10
  38. 380  PRINT "LEVEL OF DIFFICULTY:"
  39. 390  PRINT : PRINT "1) VERY DIFFICULT"
  40. 400  PRINT "2) ALMOST IMPOSSIBLE"
  41. 410  PRINT : INPUT "PLEASE ENTER YOUR CHOICE (1 OR 2) ";ZZ$
  42. 420  IF ZZ$ < >"1"  AND ZZ$ < >"2"  THEN 370
  43. 430 VV =  VAL(ZZ$)
  44. 440  GOTO 960
  45. 450 :
  46. 460  REM   **  SUB-ROUTINES  **
  47. 470 :
  48. 480 ZZ =  PEEK( -16336):ZZ =  PEEK( -16336):ZZ =  PEEK( -16336): RETURN : REM  SOUND
  49. 490  IF FL = 1  THEN  XDRAW 2 AT XC,YC: REM  EXPLOSIONS
  50. 500  IF FL = 2  THEN  XDRAW 2 AT A(X,1),A(X,2)
  51. 510  FOR Z = 1 TO 500: NEXT Z
  52. 520  IF FL = 1  THEN  XDRAW 2 AT XC,YC
  53. 530  IF FL = 2  THEN  XDRAW 2 AT A(X,1),A(X,2)
  54. 540  HCOLOR= 0: DRAW 1 AT A(X,1),A(X,2)
  55. 550  HCOLOR= 3:A(X,1) = 0:A(X,2) = 0
  56. 560 ST$(X) = "KILLED"
  57. 570  HOME : VTAB 23
  58. 580  IF FL = 1  THEN  PRINT "MAN #";X;" KILLED BY MINE."
  59. 590  IF FL = 2  THEN  PRINT "MAN #";X;" BLOWS HIMSELF UP!"
  60. 600  FOR Z = 1 TO 1000: NEXT Z
  61. 610  HOME : VTAB 23: RETURN 
  62. 620  FOR E = 1 TO 200: NEXT E: RETURN 
  63. 630  IF C$ = "D"  THEN FF(X) = 1
  64. 640  IF C$ = "U"  THEN FF(X) = 0
  65. 650  IF C$ = "L"  THEN SH(X) = 1: GOTO 760
  66. 660  IF C$ = "A"  AND PO$(X) = "R"  THEN  HOME : VTAB 23: PRINT "YOU CAN'T AIM WHILE RUNNING.": FOR E = 1 TO 1000: NEXT E: HOME : VTAB 23:FL = 3: RETURN 
  67. 670  IF C$ = "F"  AND SH(X) >0  AND PO$(X) < >"A"  THEN  HOME : VTAB 23: PRINT "YOU JUST SHOT YOURSELF IN THE FOOT.": PRINT "YOU DIDN'T AIM FIRST.": FOR E = 1 TO 1500: NEXT E:SH(X) = SH(X) -1:PO$(X) = C$: RETURN 
  68. 680  IF C$ = "F"  AND SH(X) = 0  THEN  HOME : VTAB 23: PRINT "CLICK - RIFLE NOT LOADED!": FOR E = 1 TO 1000: NEXT E:PO$(X) = C$: RETURN 
  69. 690  IF C$ = "F"  THEN PO$(X) = C$: GOTO 2730
  70. 700  IF PO$(X) = "P"  AND C$ < >"T"  THEN FL = 2: GOSUB 450: GOSUB 490:PO$(X) = C$: RETURN 
  71. 710  IF C$ = "P"  AND G(X) = 0  THEN  HOME : VTAB 23: PRINT "NO GRENADES LEFT.": FOR E = 1 TO 1000: NEXT E: HOME : VTAB 23:FL = 3: RETURN 
  72. 720  IF C$ = "T"  AND G(X) = 0  THEN  HOME : VTAB 23: PRINT "NO GRENADES LEFT.": FOR E = 1 TO 1000: NEXT E: HOME : VTAB 23:FL = 3: RETURN 
  73. 730  IF C$ = "T"  AND PO$(X) < >"P"  THEN  HOME : VTAB 23: PRINT "NICE THROW": FOR E = 1 TO 1000: NEXT E: PRINT " - BUT YOU FORGOT TO PULL THE PIN": FOR E = 1 TO 1000: NEXT E:G(X) = G(X) -1:EE(X) = 1: HOME : VTAB 23:PO$(X) = C$: RETURN 
  74. 740  IF C$ = "P"  AND A(X,2) =  >85  AND A(X,1) >1  THEN  HOME : VTAB 23: PRINT "CAN'T SEE THE MACHINE GUN FROM HERE,SIR.": FOR E = 1 TO 1500: NEXT E:FL = 3: HOME : VTAB 23: RETURN 
  75. 750  IF C$ = "T"  THEN PO$(X) = C$: GOTO 2960
  76. 760 PO$(X) = C$: RETURN 
  77. 770  HCOLOR= 0: DRAW 1 AT XO,YO: HCOLOR= 3: DRAW 1 AT XC,YC:PO$(X) = "STUCK":A(X,1) = XC:A(X,2) = YC: RETURN 
  78. 780  IF A(X,2) =  >60  AND A(X,2) =  <70  AND A(X,1) =  >225  AND A(X,1) =  <235  THEN AA = 1: RETURN 
  79. 790  IF A(X,2) =  >115  AND A(X,2) =  <125  AND A(X,1) =  >190  AND A(X,1) =  <200  THEN AA = 1: RETURN 
  80. 800  IF A(X,2) =  >80  AND A(X,2) =  <90  AND A(X,1) =  >130  AND A(X,1) =  <140  THEN AA = 1: RETURN 
  81. 810  IF A(X,2) =  >95  AND A(X,2) =  <105  AND A(X,1) =  >50  AND A(X,1) =  <65  THEN AA = 1: RETURN 
  82. 820  RETURN 
  83. 830  HOME : NORMAL : VTAB 23: PRINT "NICE THROW": FOR E = 1 TO 1000: NEXT E: XDRAW 2 AT D1,D2
  84. 840  GOSUB 450
  85. 850  HOME : NORMAL : VTAB 24: PRINT "NOT WITHIN OUR RANGE, SIR."
  86. 860  FOR E = 1 TO 1000: NEXT E
  87. 870  XDRAW 2 AT D1,D2
  88. 880  RETURN 
  89. 890  HPLOT X -1,Y TO X +1,Y: REM  TREE SHAPE
  90. 900  HPLOT X -2,Y +2 TO X +2,Y +2
  91. 910  HPLOT X -4,Y +4 TO X +4,Y +4
  92. 920  HPLOT X -6,Y +6 TO X +6,Y +6
  93. 930  HPLOT X +1,Y +6 TO X +1,Y +10
  94. 940  RETURN 
  95. 950  HPLOT X,Y TO X +4,Y -3: RETURN 
  96. 960 :
  97. 970  REM   **  DISPLAY MAP OF AREA  **
  98. 980 :
  99. 990  HGR 
  100. 1000  HCOLOR= 1: SCALE= 1: ROT= 0
  101. 1010  FOR X = 10 TO 250  STEP 20: REM  TREES
  102. 1020 Y = 5: GOSUB 890: NEXT X
  103. 1030  FOR X = 20 TO 260  STEP 20
  104. 1040 Y = 20: GOSUB 890: NEXT X
  105. 1050  FOR X = 10 TO 250  STEP 20
  106. 1060 Y = 30: GOSUB 890: NEXT X
  107. 1070  HCOLOR= 5: REM  ROCKS
  108. 1080  HPLOT 228,59 TO 229,59 TO 230,60 TO 228,60 TO 228,61 TO 231,61 TO 231,62 TO 227,62 TO 227,63 TO 232,63 TO 233,64 TO 226,64
  109. 1090  HPLOT 190,108 TO 192,108 TO 193,109 TO 189,110 TO 193,110 TO 194,111 TO 188,111 TO 187,112 TO 195,112 TO 186,114 TO 196,114
  110. 1100  HPLOT 132,75 TO 133,75 TO 134,76 TO 132,76 TO 131,77 TO 134,77 TO 135,78 TO 131,78 TO 130,79 TO 136,79
  111. 1110  HPLOT 52,92 TO 54,92 TO 55,93 TO 51,94 TO 57,94 TO 58,95 TO 50,95 TO 50,96 TO 60,96 TO 62,97 TO 50,97
  112. 1120  HCOLOR= 2
  113. 1130  HCOLOR= 2: FOR X = 107 TO 135  STEP 4
  114. 1140 Y = 117: GOSUB 950: NEXT X: REM  BARBED WIRE
  115. 1150  FOR X = 234 TO 265  STEP 4
  116. 1160 Y = 97: GOSUB 950: NEXT X
  117. 1170  FOR X = 1 TO 60  STEP 4
  118. 1180 Y = 108: GOSUB 950: NEXT X
  119. 1190  HCOLOR= 3: HPLOT 2,150 TO 278,150: REM  WAVES
  120. 1200  HCOLOR= 6: HPLOT 2,153 TO 278,153
  121. 1210  HPLOT 2,156 TO 278,156
  122. 1220  HCOLOR= 5: HPLOT 2,41 TO 278,41: HPLOT 2,43 TO 278,43: REM  CLIFFS
  123. 1230 :
  124. 1240  REM    **  SHOW MEN  **
  125. 1250 :
  126. 1260  HCOLOR= 3:I = ( INT( RND(1) *46) +5) *5
  127. 1270  DRAW 1 AT I -10,125:A(1,1) = I -10:A(1,2) = 125: GOSUB 620
  128. 1280  DRAW 1 AT I,125:A(2,1) = I:A(2,2) = 125: GOSUB 620
  129. 1290  DRAW 1 AT I +10,125:A(3,1) = I +10:A(3,2) = 125: GOSUB 620
  130. 1300  DRAW 1 AT I -10,130:A(4,1) = I -10:A(4,2) = 130: GOSUB 620
  131. 1310  DRAW 1 AT I,130:A(5,1) = I:A(5,2) = 130: GOSUB 620
  132. 1320  DRAW 1 AT I +10,130:A(6,1) = I +10:A(6,2) = 130: GOSUB 620
  133. 1330  DRAW 1 AT I -10,135:A(7,1) = I -10:A(7,2) = 135: GOSUB 620
  134. 1340  DRAW 1 AT I,135:A(8,1) = I:A(8,2) = 135: GOSUB 620
  135. 1350  DRAW 1 AT I +10,135:A(9,1) = I +10:A(9,2) = 135: GOSUB 620
  136. 1360  DRAW 1 AT I -10,140:A(10,1) = I -10:A(10,2) = 140: GOSUB 620
  137. 1370  DRAW 1 AT I,140:A(11,1) = I:A(11,2) = 140: GOSUB 620
  138. 1380  DRAW 1 AT I +10,140:A(12,1) = I +10:A(12,2) = 140: GOSUB 620
  139. 1390  HOME : VTAB 23: PRINT "LANDING COMPLETED.": FOR Z = 1 TO 1000: NEXT Z
  140. 1400  DRAW 1 AT 35,35
  141. 1410  DRAW 1 AT 260,35
  142. 1420  GOTO 2040
  143. 1430 :
  144. 1440  REM   ** MOVEMENT PHASE **
  145. 1450 :
  146. 1460  FOR X = 1 TO 12
  147. 1470 FL = 0
  148. 1480  IF ST$(X) = "KILLED"  THEN 2030
  149. 1490  HOME : VTAB 22: PRINT "MAN #";
  150. 1500  PRINT  TAB( 7)"STATUS";
  151. 1510  PRINT  TAB( 14)"POSITION";
  152. 1520  PRINT  TAB( 23)"SHOTS";
  153. 1530  PRINT  TAB( 30)"GRENADES"
  154. 1540  PRINT  TAB( 3)X;
  155. 1550  PRINT  TAB( 8)PO$(X);
  156. 1560  IF FF(X) = 0  THEN  PRINT  TAB( 16)"UP";
  157. 1570  IF FF(X) = 1  THEN  PRINT  TAB( 16)"DOWN";
  158. 1580  PRINT  TAB( 25)SH(X);
  159. 1590  PRINT  TAB( 32)G(X)
  160. 1600  FOR Y = 1 TO 10
  161. 1610  XDRAW 1 AT A(X,1),A(X,2)
  162. 1620  FOR E = 1 TO 10: NEXT E
  163. 1630  XDRAW 1 AT A(X,1),A(X,2)
  164. 1640  NEXT Y
  165. 1650 I =  PEEK( -16384): IF I >127  THEN  POKE  -16368,0
  166. 1660  PRINT "COMMAND? (ENTER '?' TO SEE LEGEND )";: GET C$
  167. 1670  IF C$ < >"R"  AND C$ < >"C"  AND C$ < >"D"  AND C$ < >"U"  AND C$ < >"A"  AND C$ < >"F"  AND C$ < >"L"  AND C$ < >"P"  AND C$ < >"T"  AND C$ < >"?"  AND C$ < >"Q"  THEN 1490
  168. 1680  IF C$ = "Q"  THEN 3820
  169. 1690  IF C$ = "?"  THEN  HOME : VTAB 21: PRINT "C-CRAWL  R-RUN  S-SET POSITION  A-AIM": PRINT "F-FIRE  L-LOAD   D-LIE DOWN   U-STANDUP": PRINT "P-PULL PIN   T-THROW GRENADE  Q-QUIT": INPUT "PRESS RETURN  TO CONTINUE..";Z$: IF Z$ = ""  THEN  HOME : VTAB 23: GOTO 1490
  170. 1700  IF PO$(X) = "P"  AND C$ < >"T"  THEN FL = 2: GOSUB 450: GOSUB 490: GOTO 2030
  171. 1710  IF C$ < >"R"  AND C$ < >"C"  THEN  GOSUB 630: IF FL = 3  THEN FL = 0: GOTO 1490
  172. 1720  IF C$ < >"R"  AND C$ < >"C"  THEN 2030
  173. 1730  IF C$ = "R"  AND FF(X) = 1  THEN  HOME : VTAB 23: PRINT "YOU MUST STANDUP BEFORE RUNNING": FOR E = 1 TO 1000: NEXT E: GOTO 1490
  174. 1740  IF C$ = "C"  AND FF(X) = 0  THEN  HOME : VTAB 23: PRINT "YOU MUST LIE DOWN BEFORE CRAWLING": FOR E = 1 TO 1000: NEXT E: GOTO 1490
  175. 1750 XC = A(X,1):YC = A(X,2)
  176. 1760 XO = XC:YO = YC
  177. 1770  IF C$ = "C"  THEN ST = 5:PO$(X) = C$
  178. 1780  IF C$ = "R"  THEN ST = 20:PO$(X) = C$
  179. 1790 K =  PEEK( -16384): IF K >127  THEN  POKE  -16368,0
  180. 1800  XDRAW 1 AT XC,YC
  181. 1810  IF K <128  THEN K$ = "": GOTO 1830
  182. 1820 K$ =  CHR$(K -128)
  183. 1830  IF K$ = "I"  THEN YC = YC -5
  184. 1840  IF YC < >110  THEN 1880
  185. 1850  FOR U = 1 TO 20
  186. 1860  IF XC = M(U,1)  THEN FL = 1: GOSUB 450: GOSUB 490:M(U,1) = 0:M(U,2) = 0: GOTO 2030: REM  MINE EXPLOSION
  187. 1870  NEXT U
  188. 1880  IF YC = 115  AND XC >110  AND XC <135  THEN YC = 115: GOSUB 770: GOTO 2030: REM  BARBED WIRE
  189. 1890  IF YC = 95  AND XC >235  AND XC <265  THEN YC = 95: GOSUB 770: GOTO 2030
  190. 1900  IF YC = 105  AND XC >2  AND XC <60  THEN YC = 105: GOSUB 770: GOTO 2030
  191. 1910  IF YC =  <40  THEN  HOME : VTAB 23: PRINT "FELL OFF THE CLIFF - TOUGH LUCK.": FOR E = 1 TO 2000: NEXT E: HCOLOR= 0: DRAW 1 AT XO,YO: DRAW 1 AT XC,YC: HCOLOR= 3:ST$(X) = "KILLED":A(X,1) = 0:A(X,2) = 0: GOTO 2030
  192. 1920  IF K$ = "J"  THEN XC = XC -5
  193. 1930  IF XC =  <5  THEN FL = 1: GOSUB 450: GOSUB 490: GOTO 2030
  194. 1940  IF K$ = "K"  THEN XC = XC +5
  195. 1950  IF XC =  >275  THEN FL = 1: GOSUB 450: GOSUB 490: GOTO 2030
  196. 1960  IF K$ = "M"  THEN YC = YC +5
  197. 1970  IF  INT( SQR((YC -YO) ^2 +(XC -XO) ^2)) > = ST  THEN  HCOLOR= 0: DRAW 1 AT XO,YO: HCOLOR= 3: DRAW 1 AT XC,YC:A(X,1) = XC:A(X,2) = YC: HOME : VTAB 23: PRINT "YOU ARE ONLY ALLOWED ";ST/5;" PACES": FOR E = 1 TO 1000: NEXT E: HOME : GOTO 2030
  198. 1980  IF K$ = "S"  THEN  HCOLOR= 0: DRAW 1 AT XO,YO: HCOLOR= 3: DRAW 1 AT XC,YC:PO$(X) = C$:A(X,1) = XC:A(X,2) = YC: GOTO 2030
  199. 1990  IF YC =  >150  THEN  HOME : VTAB 23: PRINT "MAN #";X;" DROWNED IN THE SEA": FOR E = 1 TO 1000: NEXT E: HCOLOR= 0: DRAW 1 AT XO,YO: DRAW 1 AT XC,YC: HCOLOR= 3:ST$(X) = "KILLED":A(X,1) = 0:A(X,2) = 0: GOTO 2030
  200. 2000  XDRAW 1 AT XC,YC
  201. 2010  GOTO 1790
  202. 2020 PO$(X) = C$
  203. 2030  NEXT X
  204. 2040 :
  205. 2050  REM   **  MORTAR SHELL PHASE  **
  206. 2060 :
  207. 2070  HOME : VTAB 23: INVERSE :TT = 0:TX = 0:TY = 0
  208. 2080  PRINT "ENEMY MORTAR FIRE"
  209. 2090  FOR X = 1 TO 12
  210. 2100  IF ST$(X) = "KILLED"  THEN 2130
  211. 2110 TX = TX +A(X,1):TY = TY +A(X,2): REM  AVG. OF POSITIONS
  212. 2120 TT = TT +1
  213. 2130  NEXT X
  214. 2140  IF TT =  <0  THEN 3820
  215. 2150 HH =  INT(TX/TT):SS =  INT(TY/TT)
  216. 2160  FOR E = 1 TO 2
  217. 2170 MX = HH + INT( RND(1) *50) - INT( RND(1) *50):MY = SS + INT( RND(1) *50) - INT( RND(1) *50)
  218. 2180  IF MX >275  OR MX <5  OR MY >150  OR MY <60  THEN 2170
  219. 2190  XDRAW 2 AT MX,MY
  220. 2200  GOSUB 450
  221. 2210  FOR Z = 1 TO 500: NEXT Z
  222. 2220  XDRAW 2 AT MX,MY
  223. 2230  FOR X = 1 TO 12
  224. 2240  IF PO$(X) = "KILLED"  THEN 2270
  225. 2250 DMS =  INT( SQR((A(X,1) -MX) ^2 +(A(X,2) -MY) ^2)): REM  DISTANCE FROM EXPLOSION
  226. 2260  IF DMS <6  THEN  VTAB 24: NORMAL : PRINT "MAN #";X;" KILLED BY MORTAR FIRE": FOR Z = 1 TO 1000: NEXT Z: HCOLOR= 0: DRAW 1 AT A(X,1),A(X,2): HCOLOR= 3:ST$(X) = "KILLED":A(X,1) = 0:A(X,2) = 0
  227. 2270  NEXT X
  228. 2280  NEXT E: NORMAL 
  229. 2290 :
  230. 2300  REM  * ENEMY MACHINE GUN *
  231. 2310 :
  232. 2320 DF = 0: IF GG = 0  THEN 3670
  233. 2330  HOME : VTAB 23: INVERSE : PRINT "ENEMY MACHINE GUN FIRE"
  234. 2340  FOR X = 1 TO 12
  235. 2350  IF A(X,2) <85  AND A(X,1) >1  THEN DF = 1: REM  CAN SEE MACHINE GUN
  236. 2360  GOSUB 450
  237. 2370  NEXT X
  238. 2380  IF DF = 0  THEN 2430
  239. 2390  NORMAL : VTAB 24: PRINT "WE CAN SEE MACHINE GUN, SIR!"
  240. 2400  FOR Y = 1 TO 30
  241. 2410  HCOLOR= 3: HPLOT MG(1),MG(2) TO MG(1),MG(2) +2: FOR E = 1 TO 10: NEXT E: HCOLOR= 0: HPLOT MG(1),MG(2) TO MG(1),MG(2) +2: FOR E = 1 TO 10: NEXT E
  242. 2420  NEXT Y
  243. 2430  FOR X = 1 TO 12
  244. 2440  IF ST$(X) = "KILLED"  THEN 2540
  245. 2450  IF A(X,2) =  <50  THEN 2540
  246. 2460 AA = 0: GOSUB 780: IF AA = 1  THEN 2540: REM  ROCK COVER
  247. 2470  IF VV = 1  THEN DR =  INT( RND(1) *15) +1: REM  DIE ROLL
  248. 2480  IF VV = 2  THEN DR =  INT( RND(1) *9) +1: REM  DIE ROLL
  249. 2490  IF FF(X) = 1  THEN DR = DR +2
  250. 2500  IF A(X,2) >100  THEN DR = DR +1
  251. 2510  IF A(X,2) =  <100  THEN DR = DR -2
  252. 2520  IF A(X,2) <80  THEN DR = DR -2
  253. 2530  IF DR =  <3  THEN  NORMAL : VTAB 24: PRINT "MAN #";X;" KILLED BY MACHINE GUN FIRE": FOR Z = 1 TO 1000: NEXT Z: HCOLOR= 0: DRAW 1 AT A(X,1),A(X,2): HCOLOR= 3:ST$(X) = "KILLED":A(X,1) = 0:A(X,2) = 0
  254. 2540  NEXT X
  255. 2550  NORMAL 
  256. 2560 :
  257. 2570  REM  * DEFENDER FIRING *
  258. 2580 :
  259. 2590  IF LL = 0  AND RR = 0  THEN 2710
  260. 2600  HOME : VTAB 22: INVERSE : PRINT "ENEMY SNIPER FIRE": FOR E = 1 TO 500: NEXT E
  261. 2610  FOR X = 1 TO 12
  262. 2620  IF ST$(X) = "KILLED"  THEN 2700
  263. 2630  IF A(X,2) =  >100  THEN 2700
  264. 2640 AA = 0: GOSUB 780: IF AA = 1  THEN 2700: REM  ROCK COVER
  265. 2650 DR =  INT( RND(1) *6) +1: REM  DIE ROLL
  266. 2660  IF A(X,2) <80  THEN DR = DR -1
  267. 2670  IF A(X,2) <60  THEN DR = 1
  268. 2680  GOSUB 450
  269. 2690  IF DR =  <2  THEN  NORMAL : VTAB 24: PRINT "MAN #";X;" KILLED BY SNIPER FIRE": FOR Z = 1 TO 1500: NEXT Z: HCOLOR= 0: DRAW 1 AT A(X,1),A(X,2): HCOLOR= 3:ST$(X) = "KILLED":A(X,1) = 0:A(X,2) = 0
  270. 2700  NEXT X
  271. 2710  NORMAL 
  272. 2720  GOTO 1430
  273. 2730 :
  274. 2740  REM  ** ATTACKER FIRING **
  275. 2750 :
  276. 2760  NORMAL : HOME : VTAB 23
  277. 2770  IF LL = 0  AND RR = 0  THEN  PRINT "BOTH SNIPERS ARE ALREADY KILLED, SIR?": FOR E = 1 TO 1000: NEXT E: GOTO 760
  278. 2780  PRINT "ENTER TARGET FOR MAN #";X
  279. 2790  INPUT "L)EFT SNIPER OR R)IGHT SNIPER? ";ZZ$
  280. 2800  IF ZZ$ = "L"  AND LL = 0  THEN  HOME : VTAB 23: PRINT "NO SNIPER THERE, SIR?": FOR E = 1 TO 1000: NEXT E: GOTO 2760
  281. 2810  IF ZZ$ = "R"  AND RR = 0  THEN  HOME : VTAB 23: PRINT "NO SNIPER THERE, SIR?": FOR E = 1 TO 1000: NEXT E: GOTO 2760
  282. 2820 DR =  INT( RND(1) *10) +1: REM  DIE ROLL
  283. 2830  IF ZZ$ = "L"  THEN 2860
  284. 2840  IF ZZ$ = "R"  THEN 2910
  285. 2850  IF ZZ$ < >"R"  AND ZZ$ < >"L"  THEN 2760
  286. 2860 LDD =  INT( SQR((A(X,1) -20) ^2 +(A(X,2) -35) ^2))
  287. 2870  GOSUB 450:SH(X) = SH(X) -1
  288. 2880  IF LDD >100  THEN DR = DR +3
  289. 2890  IF DR =  <7  THEN  HOME : VTAB 23: PRINT "GOT HIM": FOR E = 1 TO 1000: NEXT E: HCOLOR= 0: DRAW 1 AT 35,35:LL = 0: GOTO 760
  290. 2900  HOME : VTAB 23: PRINT "MISSED": FOR E = 1 TO 1000: NEXT E: GOTO 760
  291. 2910 RDD =  INT( SQR((A(X,1) -260) ^2 +(A(X,2) -35) ^2))
  292. 2920  GOSUB 450:SH(X) = SH(X) -1
  293. 2930  IF RDD >100  THEN DR = DR +3
  294. 2940  IF DR =  <7  THEN  HOME : VTAB 23: PRINT "GOT HIM": FOR E = 1 TO 1000: NEXT E: HCOLOR= 0: DRAW 1 AT 260,35:RR = 0: GOTO 760
  295. 2950  HOME : VTAB 23: PRINT "MISSED": FOR E = 1 TO 1000: NEXT E: GOTO 760
  296. 2960 :
  297. 2970  REM  * GRENADE EXPLOSION *
  298. 2980 :
  299. 2990  IF EE(X) = 1  THEN 760
  300. 3000  IF GG = 0  THEN  HOME : NORMAL : VTAB 23: PRINT "MACHINE GUN ALREADY DESTROYED, SIR?": FOR E = 1 TO 1000: NEXT E: GOTO 760
  301. 3010 DMG =  INT( SQR((A(X,1) -MG(1)) ^2 +(A(X,2) -MG(2)) ^2))
  302. 3020  IF DMG =  <RG  THEN  HOME : VTAB 23: PRINT "NICE THROW": FOR E = 1 TO 1000: NEXT E: GOSUB 450: XDRAW 2 AT MG(1),MG(2): HOME : VTAB 23: FLASH : PRINT "MACHINE GUN DESTROYED!!!": FOR E = 1 TO 1000: NEXT E: XDRAW 2 AT MG(1),MG(2):GG = 0: GOTO 3670
  303. 3030 D1 = A(X,1) - INT((RG/DMG) *(A(X,1) -MG(1)))
  304. 3040 D2 = A(X,2) - INT((RG/DMG) *(A(X,2) -MG(2)))
  305. 3050 G(X) = G(X) -1
  306. 3060  GOSUB 830
  307. 3070  GOTO 760
  308. 3080 :
  309. 3090  REM  **  INSTRUCTIONS  **
  310. 3100 :
  311. 3110  HOME : HTAB 15: PRINT "INSTRUCTIONS": PRINT 
  312. 3120  PRINT  TAB( 5)"YOUR MISSION IS TO LAND AND SECURE"
  313. 3130  PRINT "THE BEACH HEAD WITH MINIMAL LOSS"
  314. 3140  PRINT "OF LIFE."
  315. 3150  PRINT : HTAB 5: PRINT "YOU WILL LAND 12 MEN ON THE"
  316. 3160  PRINT "BEACH AND PROCEED TO LOCATE AND DESTROY"
  317. 3170  PRINT "THE MACHINE GUN NEST LOCATED THERE."
  318. 3180  PRINT : HTAB 5: PRINT "THIS WILL BE A FORMIDABLE IF NOT"
  319. 3190  PRINT "IMPOSSIBLE TASK."
  320. 3200  PRINT : HTAB 5: PRINT "YOUR SOLDIERS ARE EQUIPPED ONLY"
  321. 3210  PRINT "WITH RIFLES AND 2 GRENADES EACH.": PRINT 
  322. 3220  HTAB 5: PRINT "HOWEVER, THE ENEMY IS LOCATED ON A"
  323. 3230  PRINT "CLIFF TOP OVERLOOKING THE BEACH AND HAS"
  324. 3240  PRINT "THE FOLLOWING DEFENSES:-"
  325. 3250  PRINT : PRINT : INPUT "PRESS <RETURN> TO CONTINUE...";Z$
  326. 3260  IF Z$ = ""  THEN 3270
  327. 3270  HOME : PRINT : HTAB 10: PRINT "1) A MACHINE GUN"
  328. 3280  PRINT  TAB( 10)"2) SNIPERS"
  329. 3290  PRINT  TAB( 10)"3) MORTAR SHELLS"
  330. 3300  PRINT  TAB( 10)"4) BARBED WIRE"
  331. 3310  PRINT  TAB( 10)"5) MINEFIELDS"
  332. 3320  PRINT : HTAB 5: PRINT "THERE ARE A FEW ROCKS ON THE BEACH"
  333. 3330  PRINT "WHICH WILL PROVIDE SOME COVER."
  334. 3340  PRINT : HTAB 5: PRINT "YOU MAY RUN A MAXIMUM OF 4 STEPS"
  335. 3350  PRINT "EACH TURN OR CRAWL A MAXIMUM OF 1 STEP."
  336. 3360  PRINT "YOU ARE LESS LIKELY TO BE HIT BY "
  337. 3370  PRINT "MACHINE GUN FIRE IF YOU LIE DOWN AND"
  338. 3380  PRINT "CRAWL."
  339. 3390  PRINT : HTAB 5: PRINT "YOUR GRENADES ARE TO BE USED ONLY TO DESTROY THE MACHINE GUN."
  340. 3400  PRINT : PRINT : INPUT "PRESS <RETURN> TO CONTINUE...";Z$
  341. 3410  IF Z$ = ""  THEN 3420
  342. 3420  HOME : PRINT : HTAB 5: PRINT "THE COMMANDS TO MOVE YOUR MEN"
  343. 3430  PRINT "ARE AS FOLLOWS:-"
  344. 3440  PRINT : PRINT : HTAB 10: PRINT "R-RUN"
  345. 3450  PRINT  TAB( 10)"C-CRAWL"
  346. 3460  PRINT : PRINT "THEN PRESS THE FOLLOWING KEYS:-": PRINT 
  347. 3470  PRINT  TAB( 10)"'I'-TO MOVE UP"
  348. 3480  PRINT  TAB( 10)"'J'-TO MOVE LEFT"
  349. 3490  PRINT  TAB( 10)"'K'-TO MOVE RIGHT"
  350. 3500  PRINT  TAB( 10)"'M'-TO MOVE DOWN"
  351. 3510  PRINT  TAB( 10)"'S'-TO SET MAN IN NEW POSITION"
  352. 3520  PRINT : PRINT : INPUT "PRESS <RETURN> TO CONTINUE...";Z$
  353. 3530  IF Z$ = ""  THEN 3540
  354. 3540  HOME : VTAB 3: PRINT  TAB( 7)"OTHER COMMANDS ARE:-"
  355. 3550  PRINT : PRINT  TAB( 7)"D-LIE DOWN"
  356. 3560  PRINT  TAB( 7)"U-STAND UP"
  357. 3570  PRINT  TAB( 7)"A-AIM RIFLE"
  358. 3580  PRINT  TAB( 7)"F-FIRE RIFLE"
  359. 3590  PRINT  TAB( 7)"L-LOAD RIFLE"
  360. 3600  PRINT  TAB( 7)"P-PULL PIN (OF GRENADE)"
  361. 3610  PRINT  TAB( 7)"T-THROW GRENADE (AT MACHINE GUN)"
  362. 3620  PRINT  TAB( 7)"?-REFER TO COMMAND LIST"
  363. 3630  PRINT  TAB( 7)"Q-QUIT PROGRAM"
  364. 3640  VTAB 16: PRINT  TAB( 7)"GOOD LUCK!-- YOU'LL NEED IT!!!"
  365. 3650  VTAB 20: PRINT : INPUT "PRESS <RETURN> TO BEGIN...";Z$
  366. 3660  GOTO 200
  367. 3670 :
  368. 3680  REM  ** END **
  369. 3690 :
  370. 3700  TEXT : NORMAL : HOME : HTAB 10: VTAB 10
  371. 3710  PRINT "CONGRATULATIONS!!": PRINT 
  372. 3720  PRINT "YOU HAVE COMPLETED YOUR MISSION"
  373. 3730  PRINT "SUCCESSFULLY."
  374. 3740  FOR X = 1 TO 12
  375. 3750  IF ST$(X) = "KILLED"  THEN NK = NK +1
  376. 3760  NEXT X
  377. 3770  PRINT : PRINT "NO. OF MEN KILLED=";NK"
  378. 3780  PRINT : PRINT : INPUT "CARE TO TRY AGAIN, CHAMP? (Y/N) ";ZZ$
  379. 3790  IF ZZ$ = "Y"  THEN  HOME : GOTO 160
  380. 3800  IF ZZ$ < >"Y"  AND ZZ$ < >"N"  THEN 3780
  381. 3810  END 
  382. 3820  NORMAL : TEXT : HOME 
  383. 3830  HTAB 10: VTAB 10: PRINT "GAME OVER."
  384. 3840  PRINT : INPUT "CARE TO PLAY AGAIN? (Y/N) ";ZZ$
  385. 3850  IF ZZ$ = "Y"  THEN  HOME : GOTO 160
  386. 3860  IF ZZ$ < >"Y"  AND ZZ$ < >"N"  THEN 3820
  387. 3870  HOME : HTAB 10: VTAB 10: PRINT "BYE BYE": END