ChipMaster's bwBASIC This also includes history going back to v2.10. *WARN* some binary files might have been corrupted by CRLF.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

198 lines
5.1 KiB

  1. 5 PRINT TAB(33);"BATTLE"
  2. 7 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
  3. 10 REM -- BATTLE WRITTEN BY RAY WESTERGARD 10/70
  4. 20 REM COPYRIGHT 1971 BY THE REGENTS OF THE UNIV. OF CALIF.
  5. 30 REM PRODUCED AT THE LAWRENCE HALL OF SCIENCE, BERKELEY
  6. 40 DIM FF(6,6),HH(6,6),AA(4),BB(4),CC(6),LL(4)
  7. 50 FOR X=1 TO 6
  8. 51 FOR Y=1 TO 6
  9. 52 FF(X,Y)=0
  10. 53 NEXT Y
  11. 54 NEXT X
  12. 60 FOR I=1 TO 3
  13. 70 N=4-I
  14. 80 FOR J=1 TO 2
  15. 90 A=INT(6*RND(1)+1)
  16. 100 B=INT(6*RND(1)+1)
  17. 110 D=INT(4*RND(1)+1)
  18. 120 IF FF(A,B)>0 THEN 90
  19. 130 M=0
  20. 140 ON D GOTO 150,340,550,740
  21. 150 BB(1)=B
  22. 160 BB(2)=7:BB(3)=7
  23. 170 FOR K=1 TO N
  24. 180 IF M>1 THEN 240
  25. 190 IF BB(K)=6 THEN 230
  26. 200 IF FF(A,BB(K)+1)>0 THEN 230
  27. 210 BB(K+1)=BB(K)+1
  28. 220 GOTO 280
  29. 230 M=2
  30. 240 IF BB(1)<BB(2) AND BB(1)<BB(3) THEN Z=BB(1)
  31. 242 IF BB(2)<BB(1) AND BB(2)<BB(3) THEN Z=BB(2)
  32. 244 IF BB(3)<BB(1) AND BB(3)<BB(2) THEN Z=BB(3)
  33. 250 IF Z=1 THEN 90
  34. 260 IF FF(A,Z-1)>0 THEN 90
  35. 270 BB(K+1)=Z-1
  36. 280 NEXT K
  37. 290 FF(A,B)=9-2*I-J
  38. 300 FOR K=1 TO N
  39. 310 FF(A,BB(K+1))=FF(A,B)
  40. 320 NEXT K
  41. 330 GOTO 990
  42. 340 AA(1)=A
  43. 350 BB(1)=B
  44. 360 AA(2)=0:AA(3)=0:BB(2)=0:BB(3)=0
  45. 370 FOR K=1 TO N
  46. 380 IF M>1 THEN 460
  47. 390 IF AA(K)=1 OR BB(K)=1 THEN 450
  48. 400 IF FF(AA(K)-1,BB(K)-1)>0 THEN 450
  49. 410 IF FF(AA(K)-1,BB(K))>0 AND FF(AA(K)-1,BB(K))=FF(AA(K),BB(K)-1) THEN 450
  50. 420 AA(K+1)=AA(K)-1
  51. 430 BB(K+1)=BB(K)-1
  52. 440 GOTO 530
  53. 450 M=2
  54. 460 IF AA(1)>AA(2) AND AA(1)>AA(3) THEN Z1=AA(1)
  55. 462 IF AA(2)>AA(1) AND AA(2)>AA(3) THEN Z1=AA(2)
  56. 464 IF AA(3)>AA(1) AND AA(3)>AA(2) THEN Z1=AA(3)
  57. 470 IF BB(1)>BB(2) AND BB(1)>BB(3) THEN Z2=BB(1)
  58. 474 IF BB(2)>BB(1) AND BB(2)>BB(3) THEN Z2=BB(2)
  59. 476 IF BB(3)>BB(1) AND BB(3)>BB(2) THEN Z2=BB(3)
  60. 480 IF Z1=6 OR Z2=6 THEN 90
  61. 490 IF FF(Z1+1,Z2+1)>0 THEN 90
  62. 500 IF FF(Z1,Z2+1)>0 AND FF(Z1,Z2+1)=FF(Z1+1,Z2) THEN 90
  63. 510 AA(K+1)=Z1+1
  64. 520 BB(K+1)=Z2+1
  65. 530 NEXT K
  66. 540 GOTO 950
  67. 550 AA(1)=A
  68. 560 AA(2)=7:AA(3)=7
  69. 570 FOR K=1 TO N
  70. 580 IF M>1 THEN 640
  71. 590 IF AA(K)=6 THEN 630
  72. 600 IF FF(AA(K)+1,B)>0 THEN 630
  73. 610 AA(K+1)=AA(K)+1
  74. 620 GOTO 680
  75. 630 M=2
  76. 640 IF AA(1)<AA(2) AND AA(1)<AA(3) THEN Z=AA(1)
  77. 642 IF AA(2)<AA(1) AND AA(2)<AA(3) THEN Z=AA(2)
  78. 644 IF AA(3)<AA(1) AND AA(3)<AA(2) THEN Z=AA(3)
  79. 650 IF Z=1 THEN 90
  80. 660 IF FF(Z-1,B)>0 THEN 90
  81. 670 AA(K+1)=Z-1
  82. 680 NEXT K
  83. 690 FF(A,B)=9-2*I-J
  84. 700 FOR K=1 TO N
  85. 710 FF(AA(K+1),B)=FF(A,B)
  86. 720 NEXT K
  87. 730 GOTO 990
  88. 740 AA(1)=A
  89. 750 BB(1)=B
  90. 760 AA(2)=7:AA(3)=7
  91. 770 BB(2)=0:BB(3)=0
  92. 780 FOR K=1 TO N
  93. 790 IF M>1 THEN 870
  94. 800 IF AA(K)=6 OR BB(K)=1 THEN 860
  95. 810 IF FF(AA(K)+1,BB(K)-1)>0 THEN 860
  96. 820 IF FF(AA(K)+1,BB(K))>0 AND FF(AA(K)+1,BB(K))=FF(AA(K),BB(K)-1) THEN 860
  97. 830 AA(K+1)=AA(K)+1
  98. 840 BB(K+1)=BB(K)-1
  99. 850 GOTO 940
  100. 860 M=2
  101. 870 IF AA(1)<AA(2) AND AA(1)<AA(3) THEN Z1=AA(1)
  102. 872 IF AA(2)<AA(1) AND AA(2)<AA(3) THEN Z1=AA(2)
  103. 874 IF AA(3)<AA(1) AND AA(3)<AA(2) THEN Z1=AA(3)
  104. 880 IF BB(1)>BB(2) AND BB(1)>BB(3) THEN Z2=BB(1)
  105. 882 IF BB(2)>BB(1) AND BB(2)>BB(3) THEN Z2=BB(2)
  106. 884 IF BB(3)>BB(1) AND BB(3)>BB(2) THEN Z2=BB(3)
  107. 890 IF Z1=1 OR Z2=6 THEN 90
  108. 900 IF FF(Z1-1,Z2+1)>0 THEN 90
  109. 910 IF FF(Z1,Z2+1)>0 AND FF(Z1,Z2+1)=FF(Z1-1,Z2) THEN 90
  110. 920 AA(K+1)=Z1-1
  111. 930 BB(K+1)=Z2+1
  112. 940 NEXT K
  113. 950 FF(A,B)=9-2*I-J
  114. 960 FOR K=1 TO N
  115. 970 FF(AA(K+1),BB(K+1))=FF(A,B)
  116. 980 NEXT K
  117. 990 NEXT J
  118. 1000 NEXT I
  119. 1010 PRINT
  120. 1020 PRINT "THE FOLLOWING CODE OF THE BAD GUYS' FLEET DISPOSITION"
  121. 1030 PRINT "HAS BEEN CAPTURED BUT NOT DECODED:"
  122. 1040 PRINT
  123. 1050 FOR I=1 TO 6
  124. 1051 FOR J=1 TO 6
  125. 1052 HH(I,J)=FF(J,I)
  126. 1053 NEXT J
  127. 1054 NEXT I
  128. 1060 FOR I=1 TO 6
  129. 1061 FOR J=1 TO 6
  130. 1062 PRINT HH(I,J);
  131. 1063 NEXT J
  132. 1064 PRINT
  133. 1065 NEXT I
  134. 1070 PRINT
  135. 1080 PRINT "DE-CODE IT AND USE IT IF YOU CAN"
  136. 1090 PRINT "BUT KEEP THE DE-CODING METHOD A SECRET."
  137. 1100 PRINT
  138. 1110 FOR I=1 TO 6
  139. 1111 FOR J=1 TO 6
  140. 1112 HH(I,J)=0
  141. 1113 NEXT J
  142. 1114 NEXT I
  143. 1120 FOR I=1 TO 3
  144. 1121 LL(I)=0
  145. 1122 NEXT I
  146. 1130 CC(1)=2:CC(2)=2
  147. 1140 CC(3)=1:CC(4)=1
  148. 1150 CC(5)=0:CC(6)=0
  149. 1160 S=0:H=0
  150. 1170 PRINT "START GAME"
  151. 1180 INPUT X,Y
  152. 1185 IF X < 0 AND Y < 0 THEN END
  153. 1190 IF X<1 OR X>6 OR INT(X)<>ABS(X) THEN 1210
  154. 1200 IF Y>0 AND Y<7 AND INT(Y)=ABS(Y) THEN 1230
  155. 1210 PRINT "INVALID INPUT. TRY AGAIN."
  156. 1220 GOTO 1180
  157. 1230 R=7-Y
  158. 1240 C=X
  159. 1250 IF FF(R,C)>0 THEN 1290
  160. 1260 S=S+1
  161. 1270 PRINT "SPLASH! TRY AGAIN."
  162. 1280 GOTO 1180
  163. 1290 IF CC(FF(R,C))<4 THEN 1340
  164. 1300 PRINT "THERE USED TO BE A SHIP AT THAT POINT, BUT YOU SUNK IT."
  165. 1310 PRINT "SPLASH! TRY AGAIN."
  166. 1320 S=S+1
  167. 1330 GOTO 1180
  168. 1340 IF HH(R,C)>0 THEN 1420
  169. 1350 H=H+1
  170. 1360 HH(R,C)=FF(R,C)
  171. 1370 PRINT "A DIRECT HIT ON SHIP NUMBER";FF(R,C)
  172. 1380 CC(FF(R,C))=CC(FF(R,C))+1
  173. 1390 IF CC(FF(R,C))>=4 THEN 1470
  174. 1400 PRINT "TRY AGAIN."
  175. 1410 GOTO 1180
  176. 1420 PRINT "YOU ALREADY PUT A HOLE IN SHIP NUMBER";FF(R,C);
  177. 1430 PRINT "AT THAT POINT."
  178. 1440 PRINT "SPLASH! TRY AGAIN."
  179. 1450 S=S+1
  180. 1460 GOTO 1180
  181. 1470 LL((INT(FF(R,C)-1)/2)+1)=LL((INT(FF(R,C)-1)/2)+1)+1
  182. 1480 PRINT "AND YOU SUNK IT. HURRAH FOR THE GOOD GUYS."
  183. 1490 PRINT "SO FAR, THE BAD GUYS HAVE LOST"
  184. 1500 PRINT LL(1);"DESTROYER(S),";LL(2);"CRUISER(S), AND";
  185. 1510 PRINT LL(3);"AIRCRAFT CARRIER(S)."
  186. 1520 PRINT "YOUR CURRENT SPLASH/HIT RATIO IS";S/H
  187. 1530 IF (LL(1)+LL(2)+LL(3))<6 THEN 1180
  188. 1540 PRINT
  189. 1550 PRINT "YOU HAVE TOTALLY WIPED OUT THE BAD GUYS' FLEET"
  190. 1560 PRINT "WITH A FINAL SPLASH/HIT RATIO OF";S/H
  191. 1570 IF S/H>0 THEN 1590
  192. 1580 PRINT "CONGRATULATIONS -- A DIRECT HIT EVERY TIME."
  193. 1590 PRINT
  194. 1600 PRINT "****************************"
  195. 1610 PRINT
  196. 1620 GOTO 50
  197. 1630 END