home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / games / combot.zip / COMBOT.BAS next >
BASIC Source File  |  1987-11-06  |  30KB  |  666 lines

  1. 10 KEY OFF:CLS
  2. 20 SCREEN 0
  3. 30 WIDTH 40
  4. 40 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
  5. 50 PRINT"░┌───────────────────────────────────┐░"
  6. 60 PRINT"░│                                   │░"
  7. 70 PRINT"░│            2069-A.BAS             │░"
  8. 80 PRINT"░│             COMBOTS               │░"
  9. 90 PRINT"░│                                   │░"
  10. 100 PRINT"░│                                   │░"
  11. 110 PRINT"░│ BROUGHT TO YOU BY THE MEMBERS OF  │░"
  12. 120 PRINT"░│      ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄ ▄▄▄▄▄      │░"
  13. 130 PRINT"░│        █   █   █ █     █   █      │░"
  14. 140 PRINT"░│        █   █▄▄▄█ █     █   █      │░"
  15. 150 PRINT"░│        █   █     █     █   █      │░"
  16. 160 PRINT"░│      ▄▄█▄▄ █     █▄▄▄▄ █▄▄▄█      │░"
  17. 170 PRINT"░│                                   │░"
  18. 180 PRINT"░│      International PC Owners      │░"
  19. 190 PRINT"░│                                   │░"
  20. 200 PRINT"░│P.O. Box 10426, Pittsburgh PA 15234│░"
  21. 210 PRINT"░│                                   │░"
  22. 220 PRINT"░└───────────────────────────────────┘░"
  23. 230 PRINT"░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░"
  24. 240 PRINT
  25. 250 PRINT "       PRESS ANY KEY TO CONTINUE
  26. 260 A$=INKEY$: IF A$="" THEN 260
  27. 270 WIDTH 80
  28. 280 CLS
  29. 1000 '
  30. 1010 ' ----- COMBOTS GAME PROGRAM  -----
  31. 1020 '
  32. 1030 ' ----- SCREEN & MENU SEQUENCE -----
  33. 1040 '
  34. 1050 CLEAR: CLOSE
  35. 1060 KEY OFF
  36. 1070 DEF SEG=64: POKE 23,(PEEK(23) AND -65)+64
  37. 1080 SCREEN 1,0,0,0
  38. 1090 CLS
  39. 1100 DEFINT A-Z
  40. 1110 OPTION BASE 1
  41. 1120 TARGET.X=0:TARGET.Y=0:TURRET.X=0:TURRET.Y=0:LOS.CHECK=0:TIME$="00:00:00"
  42. 1130 LOCATE 13,3,0,7,7: PRINT "Are you using a COLOR monitor? (Y/N)";
  43. 1140 KEY.PRESSED$=INKEY$
  44. 1150 IF KEY.PRESSED$="Y" OR KEY.PRESSED$="y" THEN COLOR 0,0: BEEP
  45. 1160 IF KEY.PRESSED$="N" OR KEY.PRESSED$="n" THEN COLOR 0,1: BEEP
  46. 1170 IF KEY.PRESSED$<>"Y" AND KEY.PRESSED$<>"y" AND KEY.PRESSED$<>"N" AND KEY.PRESSED$<>"n" THEN 1140
  47. 1180 CLS
  48. 1190 LINE(1,0)-(319,188),1,B
  49. 1200 LINE(7,7)-(264,184),1,B
  50. 1210 LINE(267,7)-(315,184),1,B
  51. 1220 PAINT(3,3),1,1
  52. 1230 LOCATE 3,37: PRINT "1";
  53. 1240 LOCATE 4,37: PRINT "OFF";
  54. 1250 LOCATE 5,35: PRINT "S";
  55. 1260 LOCATE 6,35: PRINT "T 2";
  56. 1270 LOCATE 7,35: PRINT "A OFF";
  57. 1280 LOCATE 8,35: PRINT "T";
  58. 1290 LOCATE 9,35: PRINT "U 3";
  59. 1300 LOCATE 10,35: PRINT "S OFF";
  60. 1310 LOCATE 12,35: PRINT "R 4";
  61. 1320 LOCATE 13,35: PRINT "E OFF";
  62. 1330 LOCATE 14,35: PRINT "P";
  63. 1340 LOCATE 15,35: PRINT "O 5";
  64. 1350 LOCATE 16,35: PRINT "R OFF";
  65. 1360 LOCATE 17,35: PRINT "T";
  66. 1370 LOCATE 18,37: PRINT "6";
  67. 1380 LOCATE 19,37: PRINT "OFF";
  68. 1390 LOCATE 21,35: PRINT "TIME-";
  69. 1400 LOCATE 22,35: PRINT "00:00";
  70. 1410 LOCATE 3,3: PRINT "Omigosh, they're coming!!";
  71. 1420 LOCATE 5,5: PRINT "It's the .....";
  72. 1430 PLAY"mbl16t120o4aaaag-8aaaag-8aaaag-8aaaag-8aaaag-8aaaaaaa"
  73. 1440 LOCATE 10,9: PRINT "C O M B O T S !";
  74. 1450 FOR DELAY=1 TO 1500
  75. 1460 NEXT DELAY
  76. 1470 LOCATE 22,4: PRINT "Press Space Bar To Continue";
  77. 1480 KEY.PRESSED$=INKEY$
  78. 1490 IF KEY.PRESSED$<>" " THEN 1480
  79. 1500 BEEP
  80. 1510 LINE(8,8)-(263,183),0,BF
  81. 1520 FOR COUNTER=1 TO 10
  82. 1530 KEY(COUNTER) ON
  83. 1540 NEXT COUNTER
  84. 1550 LOCATE 3,16: PRINT "MENU";
  85. 1560 LOCATE 6,3: PRINT "Selection:            Press:";
  86. 1570 LOCATE 7,3: PRINT STRING$(30,95);
  87. 1580 LOCATE 11,4: PRINT "Program a COMBOT      Key F1";
  88. 1590 LOCATE 15,4: PRINT "Set-up for Play       Key F2";
  89. 1600 LOCATE 19,4: PRINT "End Game              Key F3";
  90. 1610 ON KEY(1) GOSUB 1760
  91. 1620 ON KEY(2) GOSUB 2900
  92. 1630 ON KEY(3) GOSUB 6330
  93. 1640 ON KEY(4) GOSUB 0
  94. 1650 ON KEY(5) GOSUB 0
  95. 1660 ON KEY(6) GOSUB 0
  96. 1670 ON KEY(7) GOSUB 0
  97. 1680 ON KEY(8) GOSUB 0
  98. 1690 ON KEY(9) GOSUB 0
  99. 1700 ON KEY(10) GOSUB 0
  100. 1710 GOTO 1610
  101. 1720 END
  102. 1730 '
  103. 1740 ' ***** END OF SEQUENCE *****
  104. 1750 '
  105. 1760 '
  106. 1770 ' ----- PROGRAM A COMBOT SEQUENCE -----
  107. 1780 '
  108. 1790 BEEP
  109. 1800 LINE(8,8)-(263,183),0,BF
  110. 1810 LOCATE 3,8,0: PRINT "PROGRAMMING A COMBOT";
  111. 1820 LOCATE 5,3,0: PRINT "A combot may perform the three";
  112. 1830 LOCATE 6,3,0: PRINT "actions below:";
  113. 1840 LOCATE 8,3,0: PRINT "FIRE- Fire the laser cannon";
  114. 1850 LOCATE 9,9,0: PRINT "once in the direction";
  115. 1860 LOCATE 10,9,0: PRINT "of current facing; it";
  116. 1870 LOCATE 11,9,0: PRINT "is executed first.";
  117. 1880 LOCATE 13,3,0: PRINT "TURN- Turn one-eighth of a";
  118. 1890 LOCATE 14,9,0: PRINT "revolution clockwise;";
  119. 1900 LOCATE 15,9,0: PRINT "execution is second.";
  120. 1910 LOCATE 17,3,0: PRINT "MOVE- Move one space in the";
  121. 1920 LOCATE 18,9,0: PRINT "direction of current";
  122. 1930 LOCATE 19,9,0: PRINT "facing; execution is";
  123. 1940 LOCATE 20,9,0: PRINT "done last of all.";
  124. 1950 LOCATE 22,5,0: PRINT "Press Space Bar To Continue";
  125. 1960 KEY.PRESSED$=INKEY$
  126. 1970 IF KEY.PRESSED$<>" " THEN 1960
  127. 1980 BEEP
  128. 1990 LINE(8,8)-(263,183),0,BF
  129. 2000 LOCATE 3,3,0: PRINT "Each combot's program will be";
  130. 2010 LOCATE 4,3,0: PRINT "ten actions in length. These";
  131. 2020 LOCATE 5,3,0: PRINT "actions will be performed in";
  132. 2030 LOCATE 6,3,0: PRINT "the sequence you enter.";
  133. 2040 LOCATE 7,3,0: PRINT STRING$(30,95);
  134. 2050 FOR COUNTER=1 TO 10
  135. 2060 LOCATE 9,3,0
  136. 2070 IF COUNTER<10 THEN PRINT "Enter Action No. "+STR$(COUNTER)+":"; ELSE PRINT "Enter Action No."+STR$(COUNTER)+":";
  137. 2080 LOCATE 9,24,1,0,7
  138. 2090 KEY.PRESSED$=INKEY$
  139. 2100 IF LEN(ACTION$)>4 THEN 2760
  140. 2110 IF KEY.PRESSED$="" THEN 2090
  141. 2120 IF (ASC(KEY.PRESSED$)>64 AND ASC(KEY.PRESSED$)<91) OR (ASC(KEY.PRESSED$)>96 AND ASC(KEY.PRESSED$)<123) THEN ACTION$=ACTION$+KEY.PRESSED$ ELSE 2160
  142. 2130 LOCATE 9,(24+LEN(ACTION$)),1,0,7
  143. 2140 PRINT KEY.PRESSED$;
  144. 2150 GOTO 2090
  145. 2160 IF ASC(KEY.PRESSED$)=8 AND LEN(ACTION$)>0 THEN LOCATE 9,(24+LEN(ACTION$)),1,0,7: PRINT CHR$(32);: LOCATE 9,(24+LEN(ACTION$)),1,0,7: ACTION$=LEFT$(ACTION$,LEN(ACTION$)-1): BEEP: GOTO 2090 ELSE IF ASC(KEY.PRESSED$)=8 THEN BEEP: GOTO 2080
  146. 2170 IF ASC(KEY.PRESSED$)<>13 THEN 2090
  147. 2180 IF ACTION$<>"FIRE" AND ACTION$<>"TURN" AND ACTION$<>"MOVE" THEN 2760
  148. 2190 IF ACTION$="FIRE" THEN PROGRAM$=PROGRAM$+"1" ELSE IF ACTION$="TURN" THEN PROGRAM$=PROGRAM$+"2" ELSE PROGRAM$=PROGRAM$+"3"
  149. 2200 LOCATE (10+COUNTER),8,0
  150. 2210 IF COUNTER<10 THEN PRINT "ACTION NO.   "+RIGHT$(STR$(COUNTER),1)+":  "+ACTION$ ELSE PRINT "ACTION NO.  "+RIGHT$(STR$(COUNTER),2)+":  "+ACTION$;
  151. 2220 LOCATE 9,23,0
  152. 2230 PRINT STRING$(6,32);
  153. 2240 ACTION$=""
  154. 2250 NEXT COUNTER
  155. 2260 LOCATE 9,2,0
  156. 2270 PRINT STRING$(32,32);
  157. 2280 LOCATE 9,4,0
  158. 2290 PRINT "COMBOT PROGRAM NOW COMPLETED";
  159. 2300 BEEP
  160. 2310 FOR DELAY=1 TO 1500
  161. 2320 NEXT DELAY
  162. 2330 LOCATE 9,2,0
  163. 2340 PRINT STRING$(32,32);
  164. 2350 LINE(9,9)-(262,47),0,BF
  165. 2360 LOCATE 3,3,0
  166. 2370 PRINT "Your programmed combot needs";
  167. 2380 LOCATE 4,3,0
  168. 2390 PRINT "a name.  Its name may be up";
  169. 2400 LOCATE 5,3,0
  170. 2410 PRINT "to eight letters or numbers";
  171. 2420 LOCATE 6,3,0
  172. 2430 PRINT "in length.";
  173. 2440 LOCATE 9,3,0
  174. 2450 PRINT "Enter combot's name: ";
  175. 2460 LOCATE 9,24,1,0,7
  176. 2470 KEY.PRESSED$=INKEY$
  177. 2480 IF KEY.PRESSED$="" THEN 2470
  178. 2490 IF (ASC(KEY.PRESSED$)>47 AND ASC(KEY.PRESSED$)<58) OR (ASC(KEY.PRESSED$)>64 AND ASC(KEY.PRESSED$)<91) OR (ASC(KEY.PRESSED$)>96 AND ASC(KEY.PRESSED$)<123) THEN BOTSNAME$=BOTSNAME$+KEY.PRESSED$ ELSE 2540
  179. 2500 IF LEN(BOTSNAME$)>8 THEN LOCATE 25,6,0: PLAY"mbl16t90o1abababababababab": PRINT "NAMES MAY BE 1 TO 8 CHARACTERS";: FOR DELAY=1 TO 1500: NEXT DELAY: LOCATE 25,1,0: PRINT STRING$(38,32);: LOCATE 9,24,1: PRINT STRING$(10,32);: BOTSNAME$="": GOTO 2460
  180. 2510 LOCATE 9,(23+LEN(BOTSNAME$)),1,0,7
  181. 2520 PRINT KEY.PRESSED$;
  182. 2530 GOTO 2470
  183. 2540 IF ASC(KEY.PRESSED$)=8 AND LEN(BOTSNAME$)>0 THEN LOCATE 9,(23+LEN(BOTSNAME$)),1,0,7: PRINT CHR$(32);: LOCATE 9,(23+LEN(BOTSNAME$)),1,0,7: BOTSNAME$=LEFT$(BOTSNAME$,LEN(BOTSNAME$)-1): BEEP: GOTO 2470 ELSE IF ASC(KEY.PRESSED$)=8 THEN BEEP:GOTO 2460
  184. 2550 IF ASC(KEY.PRESSED$)<>13 THEN 2470
  185. 2560 IF LEN(BOTSNAME$)<1 THEN BEEP: LOCATE 25,5,0: PRINT "NAME MUST BE 1-8 CHARACTERS LONG";: FOR DELAY=1 TO 1500: NEXT DELAY: LOCATE 25,1,0: PRINT STRING$(39,32);: GOTO 2460
  186. 2570 MESSAGE$="SAVING -"+BOTSNAME$+"- ON DISKETTE"
  187. 2580 LOCATE 25,(20-(LEN(MESSAGE$)\2)),0
  188. 2590 PRINT MESSAGE$;
  189. 2600 BOTSFILE$=BOTSNAME$+".BOT"
  190. 2610 OPEN BOTSFILE$ FOR OUTPUT AS #1
  191. 2620 PRINT#1,PROGRAM$
  192. 2630 CLOSE#1
  193. 2640 LOCATE 25,1,0
  194. 2650 PRINT STRING$(39,32);
  195. 2660 LOCATE 25,2,0
  196. 2670 PRINT "Ready to program another combot? (Y/N)";
  197. 2680 KEY.PRESSED$=INKEY$
  198. 2690 IF KEY.PRESSED$<>"Y" AND KEY.PRESSED$<>"y" AND KEY.PRESSED$<>"N" AND KEY.PRESSED$<>"n" THEN 2680
  199. 2700 IF KEY.PRESSED$="Y" OR KEY.PRESSED$="y" THEN LOCATE 25,1,0: PRINT STRING$(39,32);: PROGRAM$="": ACTION$="": BOTSNAME$="": BOTSFILE$="": GOTO 1980
  200. 2710 LOCATE 25,1,0: PRINT STRING$(39,32);
  201. 2720 LINE(8,8)-(263,183),0,BF
  202. 2730 PROGRAM$="": ACTION$="": BOTSNAME$="": BOTSFILE$=""
  203. 2740 RETURN 1550
  204. 2750 END
  205. 2760 LOCATE 25,5,0
  206. 2770 PRINT "ACTIONS are FIRE, TURN, and MOVE";
  207. 2780 PLAY"mbl13T200acacacacacacacacacacacacacacaca"
  208. 2790 FOR DELAY=1 TO 1500
  209. 2800 NEXT DELAY
  210. 2810 LOCATE 25,1,0
  211. 2820 PRINT STRING$(39,32);
  212. 2830 LOCATE 9,24,0
  213. 2840 PRINT STRING$(9,32);
  214. 2850 ACTION$=""
  215. 2860 GOTO 2090
  216. 2870 '
  217. 2880 ' ***** END OF SEQUENCE *****
  218. 2890 '
  219. 2900 '
  220. 2910 ' ----- SET-UP FOR PLAY SEQUENCE -----
  221. 2920 '
  222. 2930 DIM COMBOT1%(9), COMBOT2%(9),COMBOT%(9),FLASH%(28),RUBBLE%(9)
  223. 2940 BOTSNAME$=""
  224. 2950 LINE(8,8)-(263,183),0,BF
  225. 2960 LOCATE 3,9,0
  226. 2970 PRINT "SETTING UP FOR PLAY";
  227. 2980 LOCATE 6,3,0
  228. 2990 PRINT "Enter COMBOT 1: ";
  229. 3000 LOCATE 6,19,1,0,7
  230. 3010 KEY.PRESSED$=INKEY$
  231. 3020 IF KEY.PRESSED$="" THEN 3010
  232. 3030 IF(ASC(KEY.PRESSED$)>47 AND ASC(KEY.PRESSED$)<58) OR (ASC(KEY.PRESSED$)>64 AND ASC(KEY.PRESSED$)<91) OR (ASC(KEY.PRESSED$)>96 AND ASC(KEY.PRESSED$)<123) THEN BOTSNAME$=BOTSNAME$+KEY.PRESSED$ ELSE 3080
  233. 3040 IF LEN(BOTSNAME$)>8 THEN LOCATE 25,6,0: PLAY"mbl16t90o1abababababababab": PRINT "NAMES MAY BE 1 TO 8 CHARACTERS";: FOR DELAY=1 TO 1500: NEXT DELAY: LOCATE 25,1,0: PRINT STRING$(38,32);: LOCATE 6,19,0: PRINT STRING$(10,32);: BOTSNAME$="": GOTO 3000
  234. 3050 LOCATE 6,(18+LEN(BOTSNAME$)),1,0,7
  235. 3060 PRINT KEY.PRESSED$;
  236. 3070 GOTO 3010
  237. 3080 IF ASC(KEY.PRESSED$)=8 AND LEN(BOTSNAME$)>0 THEN LOCATE 6,(18+LEN(BOTSNAME$)),1,0,7: PRINT CHR$(32);: LOCATE 6,(18+LEN(BOTSNAME$)),1,0,7: BOTSNAME$=LEFT$(BOTSNAME$,LEN(BOTSNAME$)-1): BEEP: GOTO 3010 ELSE IF ASC(KEY.PRESSED$)=8 THEN BEEP:GOTO 3000
  238. 3090 IF ASC(KEY.PRESSED$)<>13 THEN 3010
  239. 3100 IF BOTSNAME$="" THEN 2980
  240. 3110 COMBOT.ONE.NAME$=BOTSNAME$
  241. 3120 BOTSFILE$=COMBOT.ONE.NAME$+".BOT"
  242. 3130 ON ERROR GOTO 3180
  243. 3140 OPEN BOTSFILE$ FOR INPUT AS #1
  244. 3150 INPUT#1,COMBOT.ONE.PROGRAM$
  245. 3160 CLOSE#1
  246. 3170 GOTO 3320
  247. 3180 MESSAGE$="FILE FOR -"+BOTSNAME$+"- DOES NOT EXIST"
  248. 3190 LOCATE 25,((40-LEN(MESSAGE$))\2),0
  249. 3200 PRINT MESSAGE$;
  250. 3210 PLAY"mbl16t125o1aaaabaaaabaaaabaaaabaaaabaaaabbb"
  251. 3220 FOR DELAY=1 TO 1500
  252. 3230 NEXT DELAY
  253. 3240 LOCATE 25,1,0
  254. 3250 PRINT STRING$(39,32);
  255. 3260 LOCATE 6,19,1
  256. 3270 PRINT STRING$(10,32);
  257. 3280 BOTSNAME$=""
  258. 3290 RESUME 3300
  259. 3300 ON ERROR GOTO 0
  260. 3310 GOTO 3000
  261. 3320 BOTSNAME$=""
  262. 3330 LOCATE 9,3,0
  263. 3340 PRINT "Enter COMBOT 2: ";
  264. 3350 LOCATE 9,19,1,0,7
  265. 3360 KEY.PRESSED$=INKEY$
  266. 3370 IF KEY.PRESSED$="" THEN 3360
  267. 3380 IF(ASC(KEY.PRESSED$)>47 AND ASC(KEY.PRESSED$)<58) OR (ASC(KEY.PRESSED$)>64 AND ASC(KEY.PRESSED$)<91) OR (ASC(KEY.PRESSED$)>96 AND ASC(KEY.PRESSED$)<123) THEN BOTSNAME$=BOTSNAME$+KEY.PRESSED$ ELSE 3430
  268. 3390 IF LEN(BOTSNAME$)>8 THEN LOCATE 25,6,0: PLAY"mbl16t90o1abababababababab": PRINT "NAMES MAY BE 1 TO 8 CHARACTERS";: FOR DELAY=1 TO 1500: NEXT DELAY: LOCATE 25,1,0: PRINT STRING$(38,32);: LOCATE 9,19,0: PRINT STRING$(10,32);: BOTSNAME$="": GOTO 3350
  269. 3400 LOCATE 9,(18+LEN(BOTSNAME$)),1,0,7
  270. 3410 PRINT KEY.PRESSED$;
  271. 3420 GOTO 3360
  272. 3430 IF ASC(KEY.PRESSED$)=8 AND LEN(BOTSNAME$)>0 THEN LOCATE 9,(18+LEN(BOTSNAME$)),1,0,7: PRINT CHR$(32);: LOCATE 9,(18+LEN(BOTSNAME$)),1,0,7: BOTSNAME$=LEFT$(BOTSNAME$,LEN(BOTSNAME$)-1): BEEP: GOTO 3360 ELSE IF ASC(KEY.PRESSED$)=8 THEN BEEP:GOTO 3350
  273. 3440 IF ASC(KEY.PRESSED$)<>13 THEN 3360
  274. 3450 IF BOTSNAME$="" THEN 3330
  275. 3460 COMBOT.TWO.NAME$=BOTSNAME$
  276. 3470 BOTSFILE$=COMBOT.TWO.NAME$+".BOT"
  277. 3480 ON ERROR GOTO 3530
  278. 3490 OPEN BOTSFILE$ FOR INPUT AS #1
  279. 3500 INPUT#1,COMBOT.TWO.PROGRAM$
  280. 3510 CLOSE#1
  281. 3520 GOTO 3670
  282. 3530 MESSAGE$="FILE FOR -"+BOTSNAME$+"- DOES NOT EXIST"
  283. 3540 LOCATE 25,((40-LEN(MESSAGE$))\2),0
  284. 3550 PRINT MESSAGE$;
  285. 3560 PLAY"mbl16t125o1aaaabaaaabaaaabaaaabaaaabaaaabbb"
  286. 3570 FOR DELAY=1 TO 1500
  287. 3580 NEXT DELAY
  288. 3590 LOCATE 25,1,0
  289. 3600 PRINT STRING$(39,32);
  290. 3610 LOCATE 9,19,1
  291. 3620 PRINT STRING$(10,32);
  292. 3630 BOTSNAME$=""
  293. 3640 RESUME 3650
  294. 3650 ON ERROR GOTO 0
  295. 3660 GOTO 3350
  296. 3670 ON ERROR GOTO 0
  297. 3680 '------------------ STARTS PUTTING SHAPES NOW ------------------------
  298. 3690 LINE(7,7)-(264,184),1,BF
  299. 3700 HORZ!=0: VERT=0: HALT=0
  300. 3710 WHILE HALT<2
  301. 3720  LINE(136-HORZ!,96-VERT)-(135+HORZ!,95+VERT),0,BF
  302. 3730  HORZ!=HORZ!+1.43
  303. 3740  VERT=VERT+1
  304. 3750  IF HORZ!>100 THEN HORZ!=100
  305. 3760  IF VERT>70 THEN VERT=70
  306. 3770 IF HORZ!=100 AND VERT=70 THEN HALT=HALT+1
  307. 3780 WEND
  308. 3790 LOCATE 25,7,0
  309. 3800 PRINT "Press KEY F4 to restart game";
  310. 3810 FOR COUNTER=1 TO 2
  311. 3820 FOR REPEAT=1 TO 22
  312. 3830 READ X.POINT, Y.POINT
  313. 3840 IF COUNTER=1 THEN PSET(X.POINT, Y.POINT),3
  314. 3850 IF COUNTER=2 THEN PSET(X.POINT, Y.POINT),2
  315. 3860 NEXT REPEAT
  316. 3870 NEXT COUNTER
  317. 3880 PAINT(300,43),2,2
  318. 3890 FOR REPEAT=1 TO 54
  319. 3900 READ X.POINT,Y.POINT
  320. 3910 PSET(X.POINT,Y.POINT),2
  321. 3920 NEXT REPEAT
  322. 3930 GET(50,50)-(57,56),COMBOT%
  323. 3940 GET(296,16)-(303,22),COMBOT1%
  324. 3950 GET(296,40)-(303,46),COMBOT2%
  325. 3960 GET(128,88)-(141,100),FLASH%
  326. 3970 LINE(127,87)-(142,101),0,BF
  327. 3980 FOR REPEAT=1 TO 16
  328. 3990 READ X.POINT,Y.POINT
  329. 4000 PSET(X.POINT,Y.POINT),1
  330. 4010 NEXT REPEAT
  331. 4020 GET(131,91)-(138,97),RUBBLE%
  332. 4030 LINE(127,87)-(142,101),0,BF
  333. 4040 LOCATE 4,37,0: PRINT "100";
  334. 4050 LOCATE 7,37,0: PRINT "100";
  335. 4060 RANDOMIZE(VAL(RIGHT$(TIME$,2))*500)
  336. 4070 COMBOT.ONE.FACING=FIX(RND*8)+1
  337. 4080 COMBOT.TWO.FACING=FIX(RND*8)+1
  338. 4090 X.ONE=FIX(RND*194)+35
  339. 4100 Y.ONE=FIX(RND*135)+25
  340. 4110 X.TWO=FIX(RND*194)+35
  341. 4120 IF X.TWO<(X.ONE+8) AND X.TWO>(X.ONE-8) THEN 4110
  342. 4130 Y.TWO=FIX(RND*135)+25
  343. 4140 IF Y.TWO<(Y.ONE+7) AND Y.TWO>(Y.ONE-7) THEN 4130
  344. 4150 PUT(X.ONE,Y.ONE),COMBOT1%,XOR
  345. 4160 PUT(X.TWO,Y.TWO),COMBOT2%,XOR
  346. 4170 TIME$="00:00:00"
  347. 4180 SHIELD1=100: SHIELD2=100: SHIELD1$=STR$(SHIELD1): SHIELD2$=STR$(SHIELD2): IF LEN(SHIELD1$)>3 THEN SHIELD1$=RIGHT$(SHIELD1$,3): IF LEN(SHIELD2$)>3 THEN SHIELD2$=RIGHT$(SHIELD2$,3)
  348. 4190 FINISH=0
  349. 4200 FOR COUNTER=1 TO 10  '---------------------------------- BEGIN LOOP -----
  350. 4210 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
  351. 4220 COMBOT.ONE.ACTION$=MID$(COMBOT.ONE.PROGRAM$,COUNTER,1)
  352. 4230 COMBOT.TWO.ACTION$=MID$(COMBOT.TWO.PROGRAM$,COUNTER,1)
  353. 4240 IF COMBOT.ONE.ACTION$<COMBOT.TWO.ACTION$ THEN PRIORITY=1
  354. 4250 IF COMBOT.ONE.ACTION$=COMBOT.TWO.ACTION$ THEN PRIORITY=FIX(RND*2)+1
  355. 4260 IF COMBOT.ONE.ACTION$>COMBOT.TWO.ACTION$ THEN PRIORITY=2
  356. 4270 ON PRIORITY GOSUB 4390,4460
  357. 4280 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
  358. 4290 LOCATE 4,37: PRINT SHIELD1$;
  359. 4300 LOCATE 7,37: PRINT SHIELD2$;
  360. 4310 IF SHIELD1<=0 OR SHIELD2<=0 THEN GOSUB 6740
  361. 4320 ON KEY(4) GOSUB 7220
  362. 4330 IF VAL(MID$(TIME$,4,2))>=5 AND VAL(RIGHT$(TIME$,2))>0 THEN GOSUB 7000
  363. 4340 IF FINISH>0 THEN ERASE COMBOT1%,COMBOT2%,FLASH%,COMBOT%,RUBBLE%: RESTORE: RETURN 1510
  364. 4350 IF X.ONE>36 AND X.ONE<228 AND X.TWO>36 AND X.TWO<228 AND Y.ONE>26 AND Y.ONE<158 AND Y.TWO>26 AND Y.TWO<158 THEN LINE(35,25)-(236,166),1,B: LINE(36,26)-(235,165),0,B
  365. 4360 NEXT COUNTER ' -------------------------------------------END LOOP-------
  366. 4370 GOTO 4200
  367. 4380 END
  368. 4390 X.POSITION=X.ONE: Y.POSITION=Y.ONE: COMPARE.X=X.TWO: COMPARE.Y=Y.TWO
  369. 4400 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
  370. 4410 ON VAL(COMBOT.ONE.ACTION$) GOSUB 4530,5650,5700
  371. 4420 X.POSITION=X.TWO: Y.POSITION=Y.TWO: COMPARE.X=X.ONE: COMPARE.Y=Y.ONE
  372. 4430 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
  373. 4440 ON VAL(COMBOT.TWO.ACTION$) GOSUB 4530,5650,5700
  374. 4450 RETURN
  375. 4460 X.POSITION=X.TWO: Y.POSITION=Y.TWO: COMPARE.X=X.ONE: COMPARE.Y=Y.ONE
  376. 4470 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
  377. 4480 ON VAL(COMBOT.TWO.ACTION$) GOSUB 4530,5650,5700
  378. 4490 X.POSITION=X.ONE: Y.POSITION=Y.ONE: COMPARE.X=X.TWO: COMPARE.Y=Y.TWO
  379. 4500 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
  380. 4510 ON VAL(COMBOT.ONE.ACTION$) GOSUB 4530,5650,5700
  381. 4520 RETURN
  382. 4530 ' ----------     FIRE SEQUENCE
  383. 4540 IF X.POSITION=X.ONE THEN ON COMBOT.ONE.FACING GOSUB 4680,4790,4920,5030,5160,5270,5400,5510 ELSE ON COMBOT.TWO.FACING GOSUB 4680,4790,4920,5030,5160,5270,5400,5510
  384. 4550 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
  385. 4560 LINE(TURRET.X,TURRET.Y)-(TARGET.X,TARGET.Y),3
  386. 4570 PLAY"l64t255mso4bfgeafdfcbbacdefgacgaafedcbgffde"
  387. 4580 LINE(TARGET.X,TARGET.Y)-(TURRET.X,TURRET.Y),0
  388. 4590 RANGE=FIX((((TARGET.X-TURRET.X)^2)+((TARGET.Y-TURRET.Y)^2))^.5)
  389. 4600 IF LOS.CHECK=2 AND RANGE>0 THEN SHIELD2=SHIELD2-FIX(750/RANGE): IF SHIELD2<0 THEN SHIELD2=0 ELSE IF LOS.CHECK=2 AND RANGE<=0 THEN SHIELD2=SHIELD2-100: IF SHIELD2<0 THEN SHIELD2=0
  390. 4610 IF LOS.CHECK=3 AND RANGE>0 THEN SHIELD1=SHIELD1-FIX(750/RANGE): IF SHIELD1<0 THEN SHIELD1=0 ELSE IF LOS.CHECK=3 AND RANGE<=0 THEN SHIELD1=SHIELD1-100: IF SHIELD1<0 THEN SHIELD1=0
  391. 4620 IF SHIELD1=0 THEN SHIELD1$="-0-" ELSE SHIELD1$=RIGHT$(STR$(SHIELD1),3): IF LEN(SHIELD1$)<3 THEN SHIELD1$=STRING$((3-LEN(SHIELD$)),32)+SHIELD1$
  392. 4630 IF SHIELD2=0 THEN SHIELD2$="-0-" ELSE SHIELD2$=RIGHT$(STR$(SHIELD2),3): IF LEN(SHIELD2$)<3 THEN SHIELD2$=STRING$((3-LEN(SHIELD2$)),32)+SHIELD2$
  393. 4640 IF LOS.CHECK=2 THEN HIT=2 ELSE IF LOS.CHECK=3 THEN HIT=1
  394. 4650 IF HIT<>0 THEN GOSUB 6920
  395. 4660 RETURN
  396. 4670 '
  397. 4680 ' FACING UP
  398. 4690 TARGET.X=X.POSITION+4: TARGET.Y=Y.POSITION
  399. 4700 TURRET.X=X.POSITION+4: TURRET.Y=Y.POSITION-1
  400. 4710 LOS.CHECK=0
  401. 4720 WHILE LOS.CHECK=0
  402. 4730  TARGET.Y=TARGET.Y-1
  403. 4740  LOS.CHECK=POINT(TARGET.X,TARGET.Y)
  404. 4750 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
  405. 4760 WEND
  406. 4770 TARGET.Y=TARGET.Y+1
  407. 4780 RETURN
  408. 4790 ' FACING UP/RIGHT
  409. 4800 TARGET.X=X.POSITION+7: TARGET.Y=Y.POSITION
  410. 4810 TURRET.X=X.POSITION+8: TURRET.Y=Y.POSITION-1
  411. 4820 LOS.CHECK=0
  412. 4830 WHILE LOS.CHECK=0
  413. 4840  TARGET.X=TARGET.X+1
  414. 4850  TARGET.Y=TARGET.Y-1
  415. 4860  LOS.CHECK=POINT(TARGET.X,TARGET.Y)
  416. 4870 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
  417. 4880 WEND
  418. 4890 TARGET.X=TARGET.X-1
  419. 4900 TARGET.Y=TARGET.Y+1
  420. 4910 RETURN
  421. 4920 ' FACING RIGHT
  422. 4930 TARGET.X=X.POSITION+7: TARGET.Y=Y.POSITION+3
  423. 4940 TURRET.X=X.POSITION+8: TURRET.Y=Y.POSITION+3
  424. 4950 LOS.CHECK=0
  425. 4960 WHILE LOS.CHECK=0
  426. 4970  TARGET.X=TARGET.X+1
  427. 4980  LOS.CHECK=POINT(TARGET.X,TARGET.Y)
  428. 4990 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
  429. 5000 WEND
  430. 5010 TARGET.X=TARGET.X-1
  431. 5020 RETURN
  432. 5030 ' FACING DOWN/RIGHT
  433. 5040 TARGET.X=X.POSITION+7: TARGET.Y=Y.POSITION+6
  434. 5050 TURRET.X=X.POSITION+8: TURRET.Y=Y.POSITION+7
  435. 5060 LOS.CHECK=0
  436. 5070 WHILE LOS.CHECK=0
  437. 5080  TARGET.X=TARGET.X+1
  438. 5090  TARGET.Y=TARGET.Y+1
  439. 5100  LOS.CHECK=POINT(TARGET.X,TARGET.Y)
  440. 5110 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
  441. 5120 WEND
  442. 5130 TARGET.X=TARGET.X-1
  443. 5140 TARGET.Y=TARGET.Y-1
  444. 5150 RETURN
  445. 5160 ' FACING DOWN
  446. 5170 TARGET.X=X.POSITION+3: TARGET.Y=Y.POSITION+6
  447. 5180 TURRET.X=X.POSITION+3: TURRET.Y=Y.POSITION+7
  448. 5190 LOS.CHECK=0
  449. 5200 WHILE LOS.CHECK=0
  450. 5210  TARGET.Y=TARGET.Y+1
  451. 5220  LOS.CHECK=POINT(TARGET.X,TARGET.Y)
  452. 5230 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
  453. 5240 WEND
  454. 5250 TARGET.Y=TARGET.Y-1
  455. 5260 RETURN
  456. 5270 ' FACING DOWN/LEFT
  457. 5280 TARGET.X=X.POSITION: TARGET.Y=Y.POSITION+6
  458. 5290 TURRET.X=X.POSITION-1: TURRET.Y=Y.POSITION+6
  459. 5300 LOS.CHECK=0
  460. 5310 WHILE LOS.CHECK=0
  461. 5320  TARGET.X=TARGET.X-1
  462. 5330  TARGET.Y=TARGET.Y+1
  463. 5340  LOS.CHECK=POINT(TARGET.X,TARGET.Y)
  464. 5350 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
  465. 5360 WEND
  466. 5370 TARGET.X=TARGET.X+1
  467. 5380 TARGET.Y=TARGET.Y-1
  468. 5390 RETURN
  469. 5400 ' FACING LEFT
  470. 5410 TARGET.X=X.POSITION: TARGET.Y=Y.POSITION+3
  471. 5420 TURRET.X=X.POSITION-1: TURRET.Y=Y.POSITION+3
  472. 5430 LOS.CHECK=0
  473. 5440 WHILE LOS.CHECK=0
  474. 5450  TARGET.X=TARGET.X-1
  475. 5460  LOS.CHECK=POINT(TARGET.X,TARGET.Y)
  476. 5470 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
  477. 5480 WEND
  478. 5490 TARGET.X=TARGET.X+1
  479. 5500 RETURN
  480. 5510 ' FACING UP/LEFT
  481. 5520 TARGET.X=X.POSITION: TARGET.Y=Y.POSITION
  482. 5530 TURRET.X=X.POSITION-1: TURRET.Y=Y.POSITION-1
  483. 5540 LOS.CHECK=0
  484. 5550 WHILE LOS.CHECK=0
  485. 5560  TARGET.X=TARGET.X-1
  486. 5570  TARGET.Y=TARGET.Y-1
  487. 5580  LOS.CHECK=POINT(TARGET.X,TARGET.Y)
  488. 5590 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
  489. 5600 WEND
  490. 5610 TARGET.X=TARGET.X+1
  491. 5620 TARGET.Y=TARGET.Y+1
  492. 5630 RETURN
  493. 5640 '
  494. 5650 ' ----------     TURN SEQUENCE (CHANGE FACING)
  495. 5660 IF X.POSITION=X.ONE THEN COMBOT.ONE.FACING=COMBOT.ONE.FACING+1 ELSE IF X.POSITION=X.TWO THEN COMBOT.TWO.FACING=COMBOT.TWO.FACING+1
  496. 5670 IF X.POSITION=X.ONE AND COMBOT.ONE.FACING>8 THEN COMBOT.ONE.FACING=COMBOT.ONE.FACING-8 ELSE IF COMBOT.TWO.FACING>8 THEN COMBOT.TWO.FACING=COMBOT.TWO.FACING-8
  497. 5680 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
  498. 5690 RETURN
  499. 5700 ' ----------     MOVE SEQUENCE
  500. 5710 IF X.POSITION=X.ONE THEN ON COMBOT.ONE.FACING GOSUB 5770,5850,5920,5990,6060,6130,6200,6270 ELSE ON COMBOT.TWO.FACING GOSUB 5770,5850,5920,5990,6060,6130,6200,6270
  501. 5720 IF X.POSITION=X.ONE THEN PUT(X.ONE,Y.ONE),COMBOT1%,XOR: PUT(NEW.X, NEW.Y),COMBOT1%,XOR ELSE PUT(X.TWO,Y.TWO),COMBOT2%,XOR: PUT(NEW.X,NEW.Y),COMBOT2%,XOR
  502. 5730 IF X.POSITION=X.ONE THEN X.ONE=NEW.X: Y.ONE=NEW.Y ELSE X.TWO=NEW.X: Y.TWO=NEW.Y
  503. 5740 LOCATE 22,35: PRINT RIGHT$(TIME$,5);
  504. 5750 RETURN
  505. 5760 '
  506. 5770 NEW.Y=Y.POSITION : NEW.X=X.POSITION ' ----- MOVE STRAIGHT UP -----
  507. 5780 FOR REPEAT=1 TO 7
  508. 5790 COLOR.CHECK=POINT(X.POSITION,Y.POSITION-REPEAT)
  509. 5800 IF X.POSITION<(COMPARE.X+8) AND X.POSITION>(COMPARE.X-8) AND Y.POSITION-REPEAT<(COMPARE.Y+7) AND Y.POSITION-REPEAT>(COMPARE.Y-7) OR COLOR.CHECK=1 OR NEW.Y<26 THEN RETURN ELSE NEW.Y=NEW.Y-1: NEW.X=X.POSITION
  510. 5810 NEXT REPEAT
  511. 5820 RETURN ' ----- END MOVE STRAIGHT UP -----
  512. 5830 '
  513. 5840 '
  514. 5850 NEW.Y=Y.POSITION: NEW.X=X.POSITION ' ----- MOVE UP/RIGHT -----
  515. 5860 FOR REPEAT=1 TO 5
  516. 5870 COLOR.CHECK=POINT(X.POSITION+8+REPEAT,Y.POSITION-7)
  517. 5880 IF X.POSITION+REPEAT<(COMPARE.X+8) AND X.POSITION+REPEAT>(COMPARE.X-8) AND Y.POSITION-REPEAT<(COMPARE.Y+7) AND Y.POSITION-REPEAT>(COMPARE.Y-7) OR COLOR.CHECK=1 OR NEW.Y<26 OR NEW.X>228 THEN RETURN ELSE NEW.X=NEW.X+1: NEW.Y=NEW.Y-1
  518. 5890 NEXT REPEAT
  519. 5900 RETURN ' ----- END MOVE UP/RIGHT -----
  520. 5910 '
  521. 5920 NEW.Y=Y.POSITION: NEW.X=X.POSITION ' ----- MOVE STRAIGHT RIGHT -----
  522. 5930 FOR REPEAT=1 TO 7
  523. 5940 COLOR.CHECK=POINT(X.POSITION+8+REPEAT,Y.POSITION)
  524. 5950 IF X.POSITION+REPEAT<(COMPARE.X+8) AND X.POSITION+REPEAT>(COMPARE.X-8) AND Y.POSITION<(COMPARE.Y+7) AND Y.POSITION>(COMPARE.Y-7) OR COLOR.CHECK=1 OR NEW.X>228 THEN RETURN ELSE NEW.X=NEW.X+1: NEW.Y=Y.POSITION
  525. 5960 NEXT REPEAT
  526. 5970 RETURN ' ----- END MOVE STRAIGHT RIGHT -----
  527. 5980 '
  528. 5990 NEW.Y=Y.POSITION: NEW.X=X.POSITION ' ----- MOVE DOWN/RIGHT -----
  529. 6000 FOR REPEAT=1 TO 5
  530. 6010 COLOR.CHECK=POINT(X.POSITION+8+REPEAT,Y.POSITION+7+REPEAT)
  531. 6020 IF X.POSITION+REPEAT<(COMPARE.X+8) AND X.POSITION+REPEAT>(COMPARE.X-8) AND Y.POSITION+7+REPEAT<(COMPARE.Y+7) AND Y.POSITION+7+REPEAT>(COMPARE.Y-7) OR COLOR.CHECK=1 OR NEW.X>228 OR NEW.Y>158 THEN RETURN ELSE NEW.Y=NEW.Y+1: NEW.X=NEW.X+1
  532. 6030 NEXT REPEAT
  533. 6040 RETURN ' ----- END MOVE DOWN/RIGHT -----
  534. 6050 '
  535. 6060 NEW.Y=Y.POSITION: NEW.X=X.POSITION ' ----- MOVE STRAIGHT DOWN -----
  536. 6070 FOR REPEAT=1 TO 7
  537. 6080 COLOR.CHECK=POINT(X.POSITION,Y.POSITION+7+REPEAT)
  538. 6090 IF X.POSITION<(COMPARE.X+8) AND X.POSITION>(COMPARE.X-8) AND Y.POSITION+7+REPEAT<(COMPARE.Y+7) AND Y.POSITION+7+REPEAT>(COMPARE.Y-7)  OR COLOR.CHECK=3 OR NEW.Y>158 THEN RETURN ELSE NEW.Y=NEW.Y+1: NEW.X=X.POSITION
  539. 6100 NEXT REPEAT
  540. 6110 RETURN ' ----- END MOVE STRAIGHT DOWN -----
  541. 6120 '
  542. 6130 NEW.Y=Y.POSITION: NEW.X=X.POSITION ' ----- MOVE DOWN/LEFT -----
  543. 6140 FOR REPEAT=1 TO 5
  544. 6150 COLOR.CHECK=POINT(X.POSITION-REPEAT,Y.POSITION+7+REPEAT)
  545. 6160 IF X.POSITION-REPEAT<(COMPARE.X+8) AND X.POSITION-REPEAT>(COMPARE.X-8) AND Y.POSITION+7+REPEAT<(COMPARE.Y+7) AND Y.POSITION+7+REPEAT>(COMPARE.Y-7) OR COLOR.CHECK=1 OR NEW.X<36 OR NEW.Y>158 THEN RETURN ELSE NEW.Y=NEW.Y+1: NEW.X=NEW.X-1
  546. 6170 NEXT REPEAT
  547. 6180 RETURN ' ----- END MOVE DOWN/LEFT -----
  548. 6190 '
  549. 6200 NEW.Y=Y.POSITION: NEW.X=X.POSITION ' ----- MOVE STRAIGHT LEFT -----
  550. 6210 FOR REPEAT=1 TO 7
  551. 6220 COLOR.CHECK=POINT(X.POSITION-REPEAT,Y.POSITION)
  552. 6230 IF X.POSITION-REPEAT<(COMPARE.X+8) AND X.POSITION-REPEAT>(COMPARE.X-8) AND Y.POSITION<(COMPARE.Y+7) AND Y.POSITION>(COMPARE.Y-7) OR COLOR.CHECK=1 OR NEW.X<36 THEN RETURN ELSE NEW.X=NEW.X-1: NEW.Y=Y.POSITION
  553. 6240 NEXT REPEAT
  554. 6250 RETURN ' ----- END MOVE STRAIGHT LEFT -----
  555. 6260 '
  556. 6270 NEW.Y=Y.POSITION: NEW.X=X.POSITION ' ----- MOVE UP/LEFT -----
  557. 6280 FOR REPEAT=1 TO 5
  558. 6290 COLOR.CHECK=POINT(X.POSITION-REPEAT,Y.POSITION-REPEAT)
  559. 6300 IF X.POSITION-REPEAT<(COMPARE.X+8) AND X.POSITION-REPEAT>(COMPARE.X-8) AND Y.POSITION-REPEAT<(COMPARE.Y+7) AND Y.POSITION-REPEAT>(COMPARE.Y-7) OR COLOR.CHECK=1 OR NEW.X<36 OR NEW.Y<26 THEN RETURN ELSE NEW.Y=NEW.Y-1: NEW.X=NEW.X-1
  560. 6310 NEXT REPEAT
  561. 6320 RETURN ' ----- END MOVE UP/LEFT -----
  562. 6330 ' END GAME
  563. 6340 DIM COMBOT1%(9),COMBOT2%(9)
  564. 6350 GET(296,16)-(303,22),COMBOT1%
  565. 6360 GET(296,40)-(303,46),COMBOT2%
  566. 6370 SOUND 1000,5: SOUND 1500,5: SOUND 2000,5: SOUND 3000,5: SOUND 3333,25
  567. 6380 LINE(8,8)-(263,183),0,BF
  568. 6390 LOCATE 25,1,0
  569. 6400 PRINT STRING$(38,32);
  570. 6410 ON ERROR GOTO 6710
  571. 6420 FOR BOTS=1 TO 150
  572. 6430 X=FIX(RND*249)+8
  573. 6440 Y=FIX(RND*170)+8
  574. 6450 PUT(X,Y),COMBOT1%,PSET
  575. 6460 X=FIX(RND*249)+8
  576. 6470 Y=FIX(RND*170)+8
  577. 6480 PUT(X,Y),COMBOT2%,PSET
  578. 6490 NEXT BOTS
  579. 6500 LOCATE 4,10,0: PRINT STRING$(17,32);
  580. 6510 LOCATE 5,10,0: PRINT STRING$(17,32);
  581. 6520 LOCATE 6,10,0: PRINT STRING$(17,32);
  582. 6530 LOCATE 5,11,0
  583. 6540 PRINT "REMEMBER.......";
  584. 6550 FOR DELAY=1 TO 1000: NEXT DELAY
  585. 6560 LOCATE 12,5,0: PRINT STRING$(27,32);
  586. 6570 LOCATE 13,5,0: PRINT STRING$(27,32);
  587. 6580 LOCATE 14,5,0: PRINT STRING$(27,32);
  588. 6590 LOCATE 13,6,0
  589. 6600 PRINT "there might be a COMBOT..";
  590. 6610 FOR DELAY=1 TO 1000: NEXT DELAY
  591. 6620 LOCATE 17,11,0: PRINT STRING$(14,32);
  592. 6630 LOCATE 18,11,0: PRINT STRING$(14,32);
  593. 6640 LOCATE 19,11,0: PRINT STRING$(14,32);
  594. 6650 LOCATE 18,12,0
  595. 6660 PRINT "BEHIND YOU !!";
  596. 6670 SOUND 1000,5: SOUND 1500,5: SOUND 2000,5: SOUND 3000,5: SOUND 3333,25
  597. 6680 FOR DELAY=1 TO 5000: NEXT DELAY
  598. 6690 CLS
  599. 6700 END
  600. 6710 RESUME 6720
  601. 6720 ON ERROR GOTO 0
  602. 6730 GOTO 6530
  603. 6740 ' ONE OR BOTH COMOBOTS SHOT UP
  604. 6750 IF SHIELD1=0 AND SHIELD2>0 THEN WINNER$=COMBOT.TWO.NAME$: COMMENT$="And the WINNER is "+WINNER$
  605. 6760 IF SHIELD2=0 AND SHIELD1>0 THEN WINNER$=COMBOT.ONE.NAME$: COMMENT$="And the WINNER is "+WINNER$
  606. 6770 IF SHIELD1=0 AND SHIELD2=0 THEN IF PRIORITY=1 THEN WINNER$=COMBOT.ONE.NAME$: COMMENT$=WINNER$+" barely WINS!" ELSE WINNER$=COMBOT.TWO.NAME$: COMMENT$=WINNER$+" barely WINS!"
  607. 6780 IF SHIELD1=0 THEN PUT(X.ONE,Y.ONE),COMBOT1%,PRESET: FOR DELAY=1 TO 750: NEXT DELAY: PUT(X.ONE,Y.ONE),COMBOT%,PSET: PUT(X.ONE,Y.ONE),RUBBLE%,PSET
  608. 6790 IF SHIELD2=0 THEN PUT(X.TWO,Y.TWO),COMBOT2%,PRESET: FOR DELAY=1 TO 750: NEXT DELAY: PUT(X.TWO,Y.TWO),COMBOT%,PSET: PUT(X.TWO,Y.TWO),RUBBLE%,PSET
  609. 6800 IF SHIELD1=0 AND SHIELD2=0 THEN PUT(X.ONE,Y.ONE),COMBOT1%,PRESET:PUT(X.TWO,Y.TWO),COMBOT2%,PRESET:FOR DELAY=1 TO 750:NEXT DELAY:PUT(X.ONE,Y.ONE),COMBOT%,PSET:PUT(X.TWO,Y.TWO),COMBOT%,PSET:PUT(X.ONE,Y.ONE),RUBBLE%,PSET:PUT(X.TWO,Y.TWO),RUBBLE%,PSET
  610. 6810 SOUND 1000,5: SOUND 1500,5: SOUND 2000,5: SOUND 3000,5: SOUND 3333,25
  611. 6820 FOR DELAY=1 TO 2500: NEXT DELAY
  612. 6830 LINE(8,8)-(263,183),0,BF
  613. 6840 LOCATE 13,(18-(LEN(COMMENT$)/2))
  614. 6850 PRINT COMMENT$;
  615. 6860 SOUND 1000,5: SOUND 1500,5: SOUND 2000,5: SOUND 3000,5: SOUND 3333,25
  616. 6870 FINISH=1
  617. 6880 FOR DELAY=1 TO 4500: NEXT DELAY
  618. 6890 LOCATE 25,1,0
  619. 6900 PRINT STRING$(38,32);
  620. 6910 RETURN
  621. 6920 ' PUT FLASH ON SCREEN FOR HIT AND MAKE SOUND
  622. 6930 IF HIT=1 THEN FLASH.X=X.ONE-4: FLASH.Y=Y.ONE-3 ELSE FLASH.X=X.TWO-4: FLASH.Y=Y.TWO-3
  623. 6940 HIT=0
  624. 6950 PUT(FLASH.X,FLASH.Y),FLASH%,XOR
  625. 6960 SOUND 4500,15
  626. 6970 FOR DELAY=1 TO 1250: NEXT DELAY
  627. 6980 PUT(FLASH.X,FLASH.Y),FLASH%,XOR
  628. 6990 RETURN
  629. 7000 ' TIME LIMIT EXPIRES
  630. 7010 SOUND 4000,5
  631. 7020 FINISH=1
  632. 7030 LOCATE 25,1,0
  633. 7040 PRINT STRING$(38,32);
  634. 7050 LOCATE 25,9,0
  635. 7060 PRINT "-TIME LIMIT HAS EXPIRED-";
  636. 7070 FOR DELAY=1 TO 1500: NEXT DELAY
  637. 7080 LOCATE 25,1,0
  638. 7090 PRINT STRING$(38,32);
  639. 7100 IF SHIELD1=SHIELD2 THEN MESSAGE$="Sorry, but it's a tie !"
  640. 7110 IF SHIELD1>SHIELD2 THEN MESSAGE$=COMBOT.ONE.NAME$+" wins by decision!"
  641. 7120 IF SHIELD1<SHIELD2 THEN MESSAGE$=COMBOT.TWO.NAME$+" wins by decision!"
  642. 7130 SOUND 1000,5: SOUND 1500,5: SOUND 2000,5: SOUND 3000,5: SOUND 3333,25
  643. 7140 FOR DELAY=1 TO 1000: NEXT DELAY
  644. 7150 LINE(8,8)-(263,183),0,BF
  645. 7160 LOCATE 13,(18-(LEN(MESSAGE$)/2))
  646. 7170 PRINT MESSAGE$;
  647. 7180 SOUND 1000,5: SOUND 1500,5: SOUND 2000,5: SOUND 3000,5: SOUND 3333,25
  648. 7190 FOR DELAY=1 TO 5000: NEXT DELAY
  649. 7200 FINISH=1
  650. 7210 RETURN
  651. 7220 ' RESTART SET-UP
  652. 7230 FINISH=1
  653. 7240 LINE(7,7)-(264,184),1,B
  654. 7250 LOCATE 25,1,0
  655. 7260 PRINT STRING$(38,32);
  656. 7270 PLAY"l8t175o2mnabcp8abcp8abccc"
  657. 7280 RETURN
  658. 7290 ' -------------------------------------------------------------
  659. 7300 DATA 296,18,296,19,296,20,297,17,297,21,298,17,298,21,299,16,299,22,300,16,300,22,301,17,301,21,302,17,302,21,303,18,303,19,303,20,298,19,299,19,300,19,301,19
  660. 7310 DATA 296,42,296,43,296,44,297,41,297,45,298,41,298,45,299,40,299,46,300,40,300,46,301,41,301,45,302,41,302,45,303,42,303,43,303,44,298,41,299,40,300,40,301,41
  661. 7320 DATA 128,88,141,88,129,89,133,89,136,89,140,89,130,90,134,90,135,90,139,90,131,91,132,91,137,91,138,91,132,92,133,92,136,92,137,92,129,93,133,93,134,93,135,93,136,93,140,93
  662. 7330 DATA 130,94,131,94,134,94,135,94,138,94,139,94,129,95,133,95,134,95,135,95,136,95,140,95,132,96,133,96,136,96,137,96,131,97,132,97,137,97,138,97,130,98,134,98,135,98,139,98,129,99,133,99,136,99,140,99,128,100,141,100
  663. 7340 DATA 135,94,134,95,135,95,132,96,133,96,134,96,135,96,136,96,131,97,132,97,133,97,134,97,135,97,136,97,137,97,138,97
  664. 7350 ' --------------------------------------------------------------
  665. 31,97,132,97,133,97,134,97,135,97,136,97,137,97,138,97
  666. 7350 ' --------------------------------------------