5 rem *** HUNT THE WUMPUS *** 10 dim p(5) 15 print "INSTRUCTIONS (Y-N)"; 20 input i\$ 25 if (i\$ = "N") or (i\$ = "n") then 35 30 gosub 375 35 goto 80 80 rem *** SET UP CAVE (DODECAHEDRAL NODE LIST) *** 85 dim s(20,3) 90 for j = 1 to 20 95 for k = 1 to 3 100 read s(j,k) 105 next k 110 next j 115 data 2,5,8,1,3,10,2,4,12,3,5,14,1,4,6 120 data 5,7,15,6,8,17,1,7,9,8,10,18,2,9,11 125 data 10,12,19,3,11,13,12,14,20,4,13,15,6,14,16 130 data 15,17,20,7,16,18,9,17,19,11,18,20,13,16,19 135 def fnA(X)=INT(20*RND(1))+1 140 def fnB(X)=INT(3*RND(1))+1 145 def fnC(X)=INT(4*RND(1))+1 150 rem *** LOCATE L ARRAY ITEMS *** 155 rem *** 1-YOU, 2-WUMPUS, 3&4-PITS, 5&6-BATS *** 160 dim l(6) 165 dim m(6) 170 for j = 1 to 6 175 l(j) = fna(0) 180 m(j) = l(j) 185 next j 190 rem *** CHECK FOR CROSSOVERS (IE l(1)=l(2), ETC) *** 195 for j = 1 to 6 200 for k = 1 to 6 205 if j = k then 215 210 if l(j) = l(k) then 170 215 next k 220 next j 225 rem *** SET NO. OF ARROWS *** 230 a = 5 235 l = l(1) 240 rem *** RUN THE GAME *** 245 print "HUNT THE WUMPUS" 250 rem *** HAZARD WARNING AND LOCATION *** 255 gosub 585 260 rem *** MOVE OR SHOOT *** 265 gosub 670 270 on o goto 280,300 275 rem *** SHOOT *** 280 gosub 715 285 if f = 0 then 255 290 goto 310 295 rem *** MOVE *** 300 gosub 975 305 if f = 0 then 255 310 if f > 0 then 335 315 rem *** LOSE *** 320 print "HA HA HA - YOU LOSE!" 325 goto 340 330 rem *** WIN *** 335 print "HEE HEE HEE - THE WUMPUS'LL GET YOU NEXT TIME!!" 340 for j = 1 to 6 345 l(j) = m(j) 350 next j 355 print "SAME SETUP (Y-N)"; 360 input i\$ 365 if (i\$ <> "Y") and (i\$ <> "y") then 170 370 goto 230 375 rem *** INSTRUCTIONS *** 380 print "WELCOME TO 'HUNT THE WUMPUS'" 385 print " THE WUMPUS LIVES IN A CAVE OF 20 ROOMS. EACH ROOM" 390 print "HAS 3 TUNNELS LEADING TO OTHER ROOMS. (LOOK AT A" 395 print "DODECAHEDRON TO SEE HOW THIS WORKS-IF YOU DON'T KNOW" 400 print "WHAT A DODECAHEDRON IS, ASK SOMEONE)" 405 print 410 print " HAZARDS:" 415 print " BOTTOMLESS PITS - TWO ROOMS HAVE BOTTOMLESS PITS IN THEM" 420 print " IF YOU GO THERE, YOU FALL INTO THE PIT (& LOSE!)" 425 print " SUPER BATS - TWO OTHER ROOMS HAVE SUPER BATS. IF YOU" 430 print " GO THERE, A BAT GRABS YOU AND TAKES YOU TO SOME OTHER" 435 print " ROOM AT RANDOM. (WHICH MAY BE TROUBLESOME)" 440 input "HIT RETURN TO CONTINUE";a\$ 445 print " WUMPUS:" 450 print " THE WUMPUS IS NOT BOTHERED BY HAZARDS (HE HAS SUCKER" 455 print " FEET AND IS TOO BIG FOR A BAT TO LIFT). USUALLY" 460 print " HE IS ASLEEP. TWO THINGS WAKE HIM UP: YOU SHOOTING AN" 465 print "ARROW OR YOU ENTERING HIS ROOM." 470 print " IF THE WUMPUS WAKES HE MOVES (P=.75) ONE ROOM" 475 print " OR STAYS STILL (P=.25). AFTER THAT, IF HE IS WHERE YOU" 480 print " ARE, HE EATS YOU UP AND YOU LOSE!" 485 print 490 print " YOU:" 495 print " EACH TURN YOU MAY MOVE OR SHOOT A CROOKED ARROW" 500 print " MOVING: YOU CAN MOVE ONE ROOM (THRU ONE TUNNEL)" 505 print " ARROWS: YOU HAVE 5 ARROWS. YOU LOSE WHEN YOU RUN OUT" 510 print " EACH ARROW CAN GO FROM 1 TO 5 ROOMS. YOU AIM BY TELLING" 515 print " THE COMPUTER THE ROOM#S YOU WANT THE ARROW TO GO TO." 520 print " IF THE ARROW CAN'T GO THAT WAY (IF NO TUNNEL) IT MOVES" 525 print " AT RANDOM TO THE NEXT ROOM." 530 print " IF THE ARROW HITS THE WUMPUS, YOU WIN." 535 print " IF THE ARROW HITS YOU, YOU LOSE." 540 input "HIT RETURN TO CONTINUE";a\$ 545 print " WARNINGS:" 550 print " WHEN YOU ARE ONE ROOM AWAY FROM A WUMPUS OR HAZARD," 555 print " THE COMPUTER SAYS:" 560 print " WUMPUS: 'I SMELL A WUMPUS'" 565 print " BAT : 'BATS NEARBY'" 570 print " PIT : 'I FEEL A DRAFT'" 575 print 580 return 585 rem *** PRINT LOCATION & HAZARD WARNINGS *** 590 print 595 for j = 2 to 6 600 for k = 1 to 3 605 if s(l(1),k) <> l(j) then 640 610 on j-1 goto 615,625,625,635,635 615 print "I SMELL A WUMPUS!" 620 goto 640 625 print "I FEEL A DRAFT" 630 goto 640 635 print "BATS NEARBY!" 640 next k 645 next j 650 print "YOU ARE IN ROOM ";l(1) 655 print "TUNNELS LEAD TO ";s(l,1);" ";s(l,2);" ";s(l,3) 660 print 665 return 670 rem *** CHOOSE OPTION *** 675 print "SHOOT OR MOVE (S-M)"; 680 input i\$ 685 if (i\$ <> "S") and (i\$ <> "s") then 700 690 o = 1 695 return 700 if (i\$ <> "M") and (i\$ <> "m") then 675 705 o = 2 710 return 715 rem *** ARROW ROUTINE *** 720 f = 0 725 rem *** PATH OF ARROW *** 735 print "NO. OF ROOMS (1-5)"; 740 input j9 745 if j9 < 1 then 735 750 if j9 > 5 then 735 755 for k = 1 to j9 760 print "ROOM #"; 765 input p(k) 770 if k <= 2 then 790 775 if p(k) <> p(k-2) then 790 780 print "ARROWS AREN'T THAT CROOKED - TRY ANOTHER ROOM" 785 goto 760 790 next k 795 rem *** SHOOT ARROW *** 800 l = l(1) 805 for k = 1 to j9 810 for k1 = 1 to 3 815 if s(l,k1) = p(k) then 895 820 next k1 825 rem *** NO TUNNEL FOR ARROW *** 830 l = s(l,fnb(1)) 835 goto 900 840 next k 845 print "MISSED" 850 l = l(1) 855 rem *** MOVE WUMPUS *** 860 gosub 935 865 rem *** AMMO CHECK *** 870 a = a-1 875 if a > 0 then 885 880 f = -1 885 return 890 rem *** SEE IF ARROW IS AT l(1) OR AT l(2) 895 l = p(k) 900 if l <> l(2) then 920 905 print "AHA! YOU GOT THE WUMPUS!" 910 f = 1 915 return 920 if l <> l(1) then 840 925 print "OUCH! ARROW GOT YOU!" 930 goto 880 935 rem *** MOVE WUMPUS ROUTINE *** 940 k = fnc(0) 945 if k = 4 then 955 950 l(2) = s(l(2),k) 955 if l(2) <> l then 970 960 print "TSK TSK TSK - WUMPUS GOT YOU!" 965 f = -1 970 return 975 rem *** MOVE ROUTINE *** 980 f = 0 985 print "WHERE TO"; 990 input l 995 if l < 1 then 985 1000 if l > 20 then 985 1005 for k = 1 to 3 1010 rem *** CHECK IF LEGAL MOVE *** 1015 if s(l(1),k) = l then 1045 1020 next k 1025 if l = l(1) then 1045 1030 print "NOT POSSIBLE -"; 1035 goto 985 1040 rem *** CHECK FOR HAZARDS *** 1045 l(1) = l 1050 rem *** WUMPUS *** 1055 if l <> l(2) then 1090 1060 print "... OOPS! BUMPED A WUMPUS!" 1065 rem *** MOVE WUMPUS *** 1070 gosub 940 1075 if f = 0 then 1090 1080 return 1085 rem *** PIT *** 1090 if l = l(3) then 1100 1095 if l <> l(4) then 1120 1100 print "YYYYIIIIEEEE . . . FELL IN PIT" 1105 f = -1 1110 return 1115 rem *** BATS *** 1120 if l = l(5) then 1130 1125 if l <> l(6) then 1145 1130 print "ZAP--SUPER BAT SNATCH! ELSEWHEREVILLE FOR YOU!" 1135 l = fna(1) 1140 goto 1045 1145 return 1150 end