home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / cpmug / cpmug003.ark / WUMPUS.BAS < prev   
Encoding:
BASIC Source File  |  1984-04-29  |  8.5 KB  |  299 lines

  1. 1 REM WUMPUS 1/28/77
  2. 10 PRINT"WMP23-HUNT THE WUMPUS"
  3. 15 PRINT
  4. 20 PRINT "INSTRUCTIONS(Y OR N)";
  5. 30 INPUT I$
  6. 35 RANDOMIZE
  7. 40 IF I$<>"Y" THEN 70
  8. 50 GOSUB 7000
  9. 70 REM SET UP CAVE
  10. 75 DIM M(8)
  11. 77 DIM S(20,3)
  12. 80 FOR J=1 TO 20
  13. 90 FOR K=1 TO 3
  14. 100 READ S(J,K)
  15. 110 NEXT K
  16. 120 NEXT J
  17. 130 DATA 2,5,8,1,3,10,2,4,12,3,5,14,1,4,6
  18. 140 DATA 5,7,15,6,8,17,1,7,9,8,10,18,2,9,11
  19. 150 DATA 10,12,19,3,11,13,12,14,20,4,13,15,6,14,16
  20. 160 DATA 15,17,20,7,16,18,9,17,19,11,18,20,13,16,19
  21. 200 REM LOCATE M(J) ARRAY ITEMS
  22. 210 REM 1,YOU 2,WUMPUS 3&4,PITS 5&6,BATS 7,BLOCKAGE8,EXIT
  23. 240 LET W=0
  24. 245 LET F=M1=W
  25. 250 FOR J=1 TO 7
  26. 260 LET M(J)=INT(1+RND*20)
  27. 270 NEXT J
  28. 279 REM CHECK FOR CROSSOVERS (IE M(1)=M(2)ETC)
  29. 280 FOR J=1 TO 7
  30. 290 FOR K=J TO 7
  31. 300 IF J=K THEN 330
  32. 320 IF M(J)=M(K) THEN 240
  33. 330 NEXT K
  34. 340 NEXT J
  35. 350 LET A=5
  36. 360 LET M(8)=M(1)
  37. 370 PRINT
  38. 380 PRINT "ENTRANCE IS IN CAVE ";M(8)
  39. 389 REM MAIN LOOP
  40. 390 IF RND<=0.4 THEN 485
  41. 400 GOSUB 3370
  42. 485 IF RND>=0.08 THEN 2000
  43. 490 GOSUB 5000
  44. 1999 REM PRINT LOCATION AND HAZARD WARNINGS
  45. 2000 PRINT
  46. 2010 FOR K=1 TO 3
  47. 2020 FOR J=2 TO 6
  48. 2030 IF S(M(1),K)<>M(J) THEN 2110
  49. 2050 ON J-1 GOTO  2060,2080,2080,2100,2100,2060
  50. 2060 PRINT"I SMELL A WUMPUS"
  51. 2070 GOTO 2110
  52. 2080 PRINT"I FEEL A DRAFT"
  53. 2090 GOTO 2110
  54. 2100 PRINT"BATS NEARBY"
  55. 2110 NEXT J
  56. 2120 NEXT K
  57. 2130 PRINT"YOU ARE IN CAVE ";M(1)
  58. 2139 REM RINGER SUBROUTINES
  59. 2140 LET J=INT(RND*40)
  60. 2145 IF J=0 OR J>7 THEN 2440
  61. 2150 ON J GOTO 2200,2200,2210,2220,2220,2230,2240,2250
  62. 2160 GOTO 2440
  63. 2200 PRINT"AHA!.WUMPUS TRACKS"
  64. 2205 GOTO 2440
  65. 2210 PRINT"AHA!..FOUND OLD ARROW, LUCKY YOU"
  66. 2213 LET A=A+1
  67. 2215 GOTO 2440
  68. 2220 PRINT"OOPS, SLIPPED ON SOME LOOSE GRAVEL"
  69. 2225 GOSUB 5900
  70. 2227 GOTO 2440
  71. 2230 PRINT"OOPS, YOU JUST FELL INTO AN UNDERGROUND POOL"
  72. 2235 GOSUB 5900
  73. 2237 GOTO 2440
  74. 2240 PRINT"THIS LOOKS LIKE A NICE CAVE,WHY NOT STOP FOR LUNCH"
  75. 2245 GOTO 2440
  76. 2250 PRINT"TAKE CARE WITH THAT FLASHLIGHT"
  77. 2255 GOTO  2440
  78. 2440 PRINT "TUNNELS LEAD TO CAVES ";S(M(1),1);S(M(1),2);S(M(1),3)
  79. 2445 PRINT
  80. 2449 REM FEARLESS FREDDY STRIKES HERE
  81. 2450 IF J<>38 THEN 2500
  82. 2460 LET L=M(5)
  83. 2470 GOTO 4260
  84. 2499 REM CHOOSE OPTION
  85. 2500 LET M1=M1+1
  86. 2510 PRINT"DO SOMETHING";
  87. 2520 INPUT I$
  88. 2530 IF I$="S" THEN 3000
  89. 2550 IF I$="A" THEN 3220
  90. 2560 IF I$="M" THEN 4000
  91. 2570 IF (I$="E")*(M(1)=M(8))=1 THEN 8800
  92. 2580 IF I$="H" THEN 2595
  93. 2590 GOTO 2500
  94. 2595 GOSUB 7600
  95. 2597 GOTO 2000
  96. 2999 REM ARROW ROUTINE
  97. 3000 IF A>=1 THEN 3010
  98. 3003 PRINT"WHAT WITH?  DUMMY"
  99. 3005 GOTO 390
  100. 3010 PRINT "CAVE #";
  101. 3012 INPUT L
  102. 3015 FOR K=1 TO 3
  103. 3018 IF S(M(1),K)=L THEN 3130
  104. 3020 NEXT K
  105. 3025 PRINT"NOT POSSIBLE"
  106. 3027 GOTO 3010
  107. 3129 REM SHOOT ARROW
  108. 3130 LET A=A-1
  109. 3132 IF A>=0 THEN 3135
  110. 3133 LET A=0
  111. 3134 GOTO 3220
  112. 3135 IF L=M(2) THEN 3140
  113. 3137 PRINT "MISSED"
  114. 3138 GOTO 3215
  115. 3140 IF RND>=0.8 THEN 3150
  116. 3142 PRINT "YOU GOT THE WUMPUS"
  117. 3144 LET F=F+1
  118. 3146 LET M(2)=0
  119. 3148 GOTO 4400
  120. 3150 PRINT"YOU WOUNDED THE WUMPUS"
  121. 3215 GOSUB 3370
  122. 3220 PRINT A;"ARROWS LEFT"
  123. 3230 GOTO 390
  124. 3369 REM MOVE WUMPUS ROUTINE
  125. 3370 IF W<>1 THEN 3380
  126. 3373 LET M(2)=0
  127. 3375 RETURN
  128. 3380 LET M(2)=S(M(2),(INT(3*RND+1)))
  129. 3385 IF (M(1)=M(2))+(L=M(2))+(M(2)=M(7))<>0 THEN 3380
  130. 3425 RETURN
  131. 3999 REM MOVE ROUTINE
  132. 4000 PRINT "WHERE TO";
  133. 4010 INPUT L
  134. 4020 FOR K=1 TO 3
  135. 4030 IF S(M(1),K)=L THEN 4120
  136. 4080 NEXT K
  137. 4090 IF L=M(1) THEN 4120
  138. 4100 PRINT "NOT POSSIBLE"
  139. 4110 GOTO 4000
  140. 4119 REM CHECK FOR HAZARDS
  141. 4120 IF L<>M(2) THEN 4210
  142. 4130 PRINT "OOPS! BUMPED A WUMPUS!"
  143. 4140 GOTO 4500
  144. 4210 IF (L=M(3))+(L=M(4))=0 THEN 4220
  145. 4214 PRINT"YYYIIIIEEEE...FELL IN PIT"
  146. 4216 GOTO 4520
  147. 4220 IF L<>M(7) THEN 4260
  148. 4230 PRINT "CAVE ENTRANCE IS BLOCKED"
  149. 4240 GOSUB 5900
  150. 4250 GOTO 390
  151. 4260 IF (L=M(5))+(L=M(6))=0 THEN 4265
  152. 4261 PRINT "ZAP..SUPERBAT SNATCH!"
  153. 4263 GOTO 4280
  154. 4265 IF L<>M(8) THEN 4270
  155. 4267 PRINT "EXIT NEARBY"
  156. 4270 LET M(1)=L
  157. 4275 GOTO 390
  158. 4280 LET L=INT(1+RND*20)
  159. 4285 IF (L=M(1))+(L=M(6))+(L=M(7))<>0 THEN 4280
  160. 4290 GOSUB 5900
  161. 4300 GOTO 4120
  162. 4400 IF RND>=.75 THEN 4410
  163. 4402 PRINT "BEWARE OF ITS MATE"
  164. 4404 LET J=2
  165. 4406 GOSUB 6100
  166. 4408 GOTO 3220
  167. 4410 LET W=1
  168. 4420 PRINT "HEE HEE HEE--THE WUMPUS'L GET YOU NEXT TIME"
  169. 4430 GOTO 390
  170. 4499 REM EATEN SUBROUTINE
  171. 4500 IF RND>=.75 THEN 4510
  172. 4502 GOSUB 3370
  173. 4504 GOSUB 5900
  174. 4506 GOTO 4270
  175. 4510 PRINT"TSK TSK TSK--THE WUMPUS GOT YOU"
  176. 4520 PRINT "HA HA HA--YOU LOSE!"
  177. 4530 GOTO 8810
  178. 4999 REM MOVE EVERYTHING
  179. 5000 PRINT"**EARTHQUAKE**"
  180. 5001 FOR J=3 TO 7
  181. 5002 GOSUB 6100
  182. 5003 NEXT J
  183. 5004 GOSUB 5900
  184. 5005 LET M(2)=INT(RND*20+1)
  185. 5007 IF (M(1)=M(2))+(M(2)=M(7))<>0 THEN 5005
  186. 5009 REM MOVE CAVE ENTRANCE
  187. 5010 IF RND<=.1 THEN 5020
  188. 5015 RETURN
  189. 5020 LET M(8)=INT(RND*20+1)
  190. 5025 FOR J=3 TO 7
  191. 5030 IF M(8)<>M(J) THEN 5040
  192. 5033 LET M(8)=INT(RND*20+1)
  193. 5036 GOTO 5030
  194. 5040 NEXT J
  195. 5050 RETURN
  196. 5899 REM DROPPED ARROWS SUBROUTINE
  197. 5900 LET J=INT(RND*10)
  198. 5902 IF (J>A)+(A=0)=0 THEN 5910
  199. 5904 RETURN
  200. 5910 PRINT "DROPPED ARROWS"
  201. 5915 IF J<>0 THEN 5930
  202. 5920 PRINT "ALL ARROWS FOUND"
  203. 5925 RETURN
  204. 5930 LET A=A-J
  205. 5940 PRINT J;"ARROWS LOST";TAB(20);A;"ARROWS LEFT"
  206. 5950 RETURN
  207. 6099 REM RANDOM CAVE REARRANGEMENT SUBROUTINE
  208. 6100 LET M(J)=INT(RND*20)+1
  209. 6110 IF (M(J)=M(1))+(M(J)=M(8))<>0 THEN 6100
  210. 6200 RETURN
  211. 6999 REM INSTRUCTIONS
  212. 7000 PRINT "WELCOME TO HUNT THE WUMPUS"
  213. 7005 PRINT
  214. 7010 PRINT "THE WUMPUS COLONY INHABIT A BURROW OF 20 CAVES"
  215. 7020 PRINT "EACH CAVE HAS THREE TUNNELS LEADING TO OTHER CAVES."
  216. 7030 PRINT "THE OBJECTIVE IS TO DESCEND INTO THE BURROW AND HUNT WUMPI."
  217. 7040 PRINT "AFTER YOU HAVE KILLED AT LEAST ONE, YOU MUST RETURN TO THE"
  218. 7050 PRINT"EXIT AND LEAVE THE BURROW. NOTE THAT THERE MAY BE MORE THAN"
  219. 7060 PRINT "ONE WUMPUS IN THE BURROW. "
  220. 7061 PRINT "YOU HAVE 5 ARROWS."
  221. 7062 PRINT"UNDER CONDITIONS OF STRESS, YOU MAY DROP YOUR ARROWS."
  222. 7065 PRINT"YOUR RATING IS A FUNCTION OF THE NUMBER OF WUMPI SHOT & THE"
  223. 7067 PRINT "TIME SPENT IN THE BURROW"
  224. 7070 PRINT
  225. 7072 GOSUB 7990
  226. 7074 PRINT"HAZARDS"
  227. 7076 PRINT
  228. 7080 PRINT"1---BOTTOMLESS PITS"
  229. 7090 PRINT"TWO ROOMS CONTAIN BOTTOMLESS PITS. IF YOU FALL IN A PIT"
  230. 7100 PRINT"YOU LOSE."
  231. 7110 PRINT
  232. 7112 PRINT
  233. 7114 PRINT"2---SUPERBATS"
  234. 7120 PRINT "TWO ROOMS CONTAIN NESTS OF SUPERBATS. THEY ARE PEACEFUL"
  235. 7130 PRINT"CREATURES WHEN LEFT ALONE. SHOULD YOU INADVERTENTLY"
  236. 7140 PRINT"STUMBLE ACROSS THEIR NEST YOU WILL BE PICKED UP AND"
  237. 7150 PRINT "BE DEPOSITED IN ANOTHER CAVE AT RANDOM."
  238. 7160 PRINT "TOO BAD IF IT CONTAINS ANOTHER HAZARD."
  239. 7162 PRINT
  240. 7164 GOSUB 7990
  241. 7170 PRINT
  242. 7175 PRINT"3---**EARTHQUAKES**"
  243. 7180 PRINT"EARTHQUAKES ARE A COMMON OCCURRENCE. SHOULD ONE OCCUR, THE"
  244. 7185 PRINT "BURROW ENTRANCE MAY BE BLOCKED AND A NEW ONE OPEN UP. THE"
  245. 7190 PRINT"GEOGRAPHY OF THE CAVES WILL BE CHANGED. THE PITS MAY FILL"
  246. 7200 PRINT "UP AND A CAVE MAY BE BLOCKED BY A ROCKFALL. THE BATS WILL"
  247. 7210 PRINT "BE DISTURBED AND MAY SEEK OUT A NEW CAVE. THE WUMPUS"
  248. 7220 PRINT "WILL ALSO BECOME ALARMED AND MAY MOVE TO A NEW CAVE."
  249. 7230 PRINT
  250. 7235 PRINT"4---WUMPUS"
  251. 7240 PRINT "THE WUMPUS IS NOT BOTHERED BY ANY HAZARDS (IT HAS SUCKERS"
  252. 7250 PRINT "ON ITS FEET AND IS TOO BIG FOR A BAT TO LIFT)."
  253. 7260 PRINT "THE WUMPUS IS MOVING IN THE CAVES LOOKING FOR FOOD. IT"
  254. 7270 PRINT "NORMALLY EATS A SPECIES OF MUSHROOM, BUT MAY EAT YOU SHOULD"
  255. 7280 PRINT "YOU ENTER THE CAVE IN WHICH IT IS FEEDING"
  256. 7290 PRINT
  257. 7300 GOSUB 7990
  258. 7600 PRINT
  259. 7605 PRINT "EACH TURN YOU MAY:"
  260. 7610 PRINT " M-MOVE TO AN ADJACENT CAVE THROUGH A CONNECTING TUNNEL"
  261. 7620 PRINT" S-SHOOT AN ARROW THROUGH A TUNNEL TO TRY AND HIT THE WUMPUS"
  262. 7630 PRINT "  IT IS BIG ENOUGH SO THAT AN ARROW ENTERING THE CAVE THAT"
  263. 7640 PRINT "  IT IS OCCUPYING, WILL HIT IT."
  264. 7645 PRINT " A-CHECK ON NUMBER OF ARROWS LEFT"
  265. 7650 PRINT " E-EXIT FROM THE CAVES IF YOU ARE IN THE ENTRANCE CAVE"
  266. 7660 PRINT " H-ASK FOR INSTRUCTIONS"
  267. 7662 PRINT
  268. 7664 GOSUB 7990
  269. 7666 PRINT "WARNINGS"
  270. 7670 PRINT "WHEN YOU ARE ONE CAVE AWAY FROM A HAZARD YOU WILL BE WARNED"
  271. 7680 PRINT "AS FOLLOWS:"
  272. 7685 PRINT
  273. 7690 PRINT " WUMPUS.....I SMELL A WUMPUS"
  274. 7700 PRINT " BATS.....BATS NEARBY"
  275. 7710 PRINT " PIT.....I FEEL A DRAFT"
  276. 7715 PRINT
  277. 7720 PRINT " IF YOU TRY TO ENTER A CAVE BLOCKED BY A FALL OR IF YOU"
  278. 7730 PRINT "RETURN TO THE ENTRANCE CAVE, YOU WILL BE NOTIFID"
  279. 7740 PRINT
  280. 7750 RETURN
  281. 7990 PRINT "TO CONTINUE, TYPE ANY CHARACTER"
  282. 7992 INPUT I$
  283. 7994 PRINT
  284. 7996 PRINT
  285. 7998 RETURN
  286. 8799 REM END GAME
  287. 8800 PRINT "OUT OF THE CAVES"
  288. 8801 IF F<=0 THEN 8805
  289. 8803 PRINT "GOOD HUNTING"
  290. 8805 LET W=INT((F*1000)/M1)
  291. 8807 PRINT "YOUR RATING IS ";W
  292. 8810 IF F<>0 THEN 8830
  293. 8820 PRINT"BETTER LUCK NEXT TIME"
  294. 8830 PRINT
  295. 8840 PRINT "WANT TO TRY AGAIN, IN SPITE OF YOUR INABILITY";
  296. 8850 INPUT I$
  297. 8860 IF I$="Y" THEN 240
  298. 9000 END
  299.