10 REM WUMPS.ECB 100 PRINT "&K&J&J": REM ======== LAST MOD. 8/1/77 R.E.H. 110 PRINT TAB(10);"....................." 120 PRINT TAB(10);"... ..." 130 PRINT TAB(10);"... W U M P U S ..." 140 PRINT TAB(10);"... ..." 150 PRINT TAB(10);"....................." 160 PRINT 170 PRINT " DO YOU NEED INSTRUCTIONS (Y OR N) "; 180 INPUT (1,0)I$ 190 PRINT 200 IF I$="Y" THEN GOSUB 830 210 PRINT "&K": CURSOR 5,10 220 PRINT "*#* YOU ARE ENTERING THE CAVE *#*" 230 DIM S(20,3): REM === SET UP CAVE (DODECAHEDRAL NODE LIST) 240 FOR J=1 TO 20 250 FOR K=1 TO 3 260 READ S(J,K) 270 NEXT K 280 NEXT J 290 DATA 2,5,8,1,3,10,2,4,12,3,5,14,1,4,6 300 DATA 5,7,15,6,8,17,1,7,9,8,10,18,2,9,11 310 DATA 10,12,19,3,11,13,12,14,20,4,13,15,6,14,16 320 DATA 15,17,20,7,16,18,9,17,19,11,18,20,13,16,19 330 REM ...DEF FNA(X)=INT(20*RND(0))+1 340 REM ...DEF FNB(X)=INT(3*RND(0))+1 350 REM ...DEF FNC(L)=INT(4*RND(0))+1 360 REM ========= LOCATE L ARRAY ITEMS 370 REM ========= 1-YOU, 2-WUMPUS, 3&4-PITS, 5&6-BATS 380 DIM L(6) 390 DIM M(6),P(5) 400 FOR J=1 TO 6 410 LET L(J)=INT(20*RND(0))+1 420 LET M(J)=L(J) 430 NEXT J 440 REM ========= CHECK FOR CROSSOVERS (IE L(1)=L(2),ETC) 450 FOR J=1 TO 6 460 FOR K=J TO 6 470 IF J=K THEN 490 480 IF L(J)=L(K) THEN EXIT 400 490 NEXT K 500 NEXT J 510 REM ========= SET ARROWS 520 LET A=5 530 LET L=L(1) 540 CURSOR 9,1: REM ========= RUN THE GAME 550 PRINT TAB(8);"HUNT THE WUMPUS" 560 REM ========= HAZARD WARNINGS AND LOCATIONS 570 GOSUB 1310 580 REM ========= MOVE OR SHOOT 590 GOSUB 1530 600 IF O=1 THEN 630 610 IF O=2 THEN 670 620 REM ========= SHOOT 630 GOSUB 1610 640 IF F=0 THEN 570 650 GOTO 690 660 REM ========= MOVE 670 GOSUB 2120 680 IF F=0 THEN 570 690 IF F>0 THEN 750 700 PRINT "TOO BAD. OUT OF ARROWS" 710 REM ========= LOSE 720 PRINT "HA HA HA - YOU LOSE" 730 GOTO 760 740 REM ========= WIN 750 PRINT "HEE HEE HEE - THE WUMPUS WILL GET YA NEXT TIME&J" 760 FOR J=1 TO 6 770 LET L(J)=M(J) 780 NEXT J 790 PRINT " SAME SET UP? (Y OR N)--->"; 800 INPUT (1,0)I$ 810 PRINT "&K" 820 IF I$="N" THEN 400 ELSE 520 830 REM ========= INSTRUCTIONS 840 PRINT TAB(7);"WELCOME TO HUNT THE WUMPUS" 850 PRINT " THE WUMPUS LIVES IN A CAVE OF 20 ROOMS. EACH" 860 PRINT " ROOM HAS 3 TUNNELS LEADING TO OTHER ROOMS." 870 PRINT " LOOK AT A DODECAHEDRON TO SEE HOW THIS WORKS" 880 PRINT " IF YOU DON'T KNOW WHAT A DODECAHEDRON IS," 890 PRINT " .... ASK SOMEONE. ON *HAZARDS* NOW," 900 GOSUB 2440 910 PRINT " BOTTOMLESS PITS--TWO ROOMS HAVE BOTTOMLESS PITS" 920 PRINT " IN THEM. IF YOU GO THERE, YOU'L FALL INTO THE" 930 PRINT " PIT AND LOSE" 940 PRINT " SUPERBATS--TWO OTHER ROOMS HAVE SUPER BATS." 950 PRINT " IF YOU GO THERE, A BAT GRABS UOU AND TAKES" 960 PRINT " YOU TO SOME OTHER ROOM AT RANDOM." 970 PRINT " (WHICH MIGHT BE TROUBLESOME)" 980 PRINT 990 GOSUB 2440 1000 PRINT " WUMPUS" 1010 PRINT " THE WUMPUS IS NOT BOTHERED BY THE HAZARDS" 1020 PRINT " (HE HAS SUCKER FEET AND IS TOO BIG FOR A BAT" 1030 PRINT " TO LIFT). USUALLY HE IS ASLEEP." 1040 PRINT " TWO THINGS WAKE HIM UP: YOUR ENTERING" 1050 PRINT " HIS ROOM OR YOUR SHOOTING AN ARROW." 1060 PRINT " IF THE WUMPUS WAKES, HE MOVES ONE ROOM (P=.75)" 1070 PRINT " OR STAYS STILL (P=.25). AFTER THAT, IF HE IS" 1080 PRINT " WHERE YOU ARE, HE EATS YOU UP (AND YOU LOSE)." 1090 GOSUB 2440 1100 PRINT " YOU" 1110 PRINT " EACH TURN YOU MAY MOVE OR SHOOT A CROOKED ARROW" 1120 PRINT " MOVING: YOU CAN GO 1 ROOM (THRU 1 TUNNEL)" 1130 PRINT " YOU HAVE 5 ARROWS. YOU LOSE WHEN YOU RUN OUT." 1140 PRINT " EACH ARROW CAN GO FROM 1 TO 5 ROOMS. YOU AIM BY" 1150 PRINT " TELLING THE COMPUTER THE ROOMS YOU WANT THE" 1160 PRINT " ARROW WHICH TO GO. IF THE ARROW CANT GO THAT" 1170 PRINT " WAY, IT MOVES AT RANDOM TO THE NEXT ROOM." 1180 PRINT " IF THE ARROW HITS THE WUMPUS, YOU WIN." 1190 PRINT " IF THE ARROW HITS YOU, YOU LOSE." 1200 GOSUB 2450 1210 PRINT " WARNINGS" 1220 PRINT " WHEN YOU ARE 1 ROOM AWAY FROM WUMPUS OR HAZARD," 1230 PRINT "THE COMPUTER SAYS" 1240 PRINT "WUMPUS--I SMELL A WUMPUS" 1250 PRINT "BATS--I HEAR SQUEAKING" 1260 PRINT "PIT--I FEEL A DRAFT" 1270 PRINT 1280 GOSUB 2440 1290 PRINT 1300 RETURN 1310 REM ========= PRINT LOCATION AND HAZARD WARNINGS 1320 PRINT 1330 FOR J=2 TO 6 1340 FOR K=1 TO 3 1350 IF S(L(1),K)<>L(J) THEN 1460 1360 IF J=2 THEN 1410 1370 IF J=3 THEN 1430 1380 IF J=4 THEN 1430 1390 IF J=5 THEN 1450 1400 IF J=6 THEN 1450 1410 PRINT "I SMELL A WUMPUS" 1420 GOTO 1460 1430 PRINT "I FEEL A DRAFT" 1440 GOTO 1460 1450 PRINT "I HEAR SQUEAKING" 1460 NEXT K 1470 NEXT J 1480 PRINT "YOU ARE IN ROOM ";L(1) 1490 PRINT "TUNNELS LEAD TO ";S(L,1),S(L,2),S(L,3) 1500 PRINT 1510 RETURN 1520 REM --CHOOSE OPTION 1530 PRINT " SHOOT OR MOVE (S-M)--->"; 1540 INPUT (1,0)I$ 1550 IF I$<>"S" THEN 1580 1560 LET O=1 1570 GOTO 1600 1580 IF I$<>"M" THEN 1530 1590 LET O=2 1600 RETURN 1610 REM --ARROW ROUTINE 1620 LET F=0 1630 REM --PATH OF ARROW 1650 PRINT " NO. OF ROOMS (1-5)--->"; 1660 INPUT (1,0)J9 1670 IF J9<1 OR J9>5 THEN 1650 1680 FOR K=1 TO J9 1690 PRINT " ROOM NO ?--->"; 1700 INPUT (2,0)P(K) 1710 IF K<=2 THEN 1750 1720 IF P(K)<>P(K-2) THEN 1750 1730 PRINT "ARROWS ARN'T THAT CROOKED:TRY ANOTHER ROOM" 1740 GOTO 1690 1750 NEXT K 1760 REM ========= SHOOT ARROW 1770 LET L=L(1) 1780 FOR K=1 TO J9 1790 FOR K1=1 TO 3 1800 IF S(L,K1)=P(K) THEN EXIT 1960 1810 NEXT K1 1820 REM ========= NO TUNNEL FOR ARRO 1830 LET L=S(L,INT(3*RND(0))+1) 1840 GOTO 1970 1850 NEXT K 1860 PRINT "MISSED" 1870 LET L=L(1) 1880 REM ========= MOVE WUMPUS 1890 GOSUB 2040 1900 REM ========= AMMO CHECK 1910 LET A=A-1 1920 IF A>0 THEN 1940 1930 LET F=-1 1940 RETURN 1950 REM ========= SEE IF ARROW IS AT L(1) OR L(2) 1960 LET L=P(K) 1970 IF L<>L(2) THEN 2010 1980 PRINT "&JAHA! YOU GOT THE WUMPUS !" 1990 LET F=1 2000 RETURN 2010 IF L<>L(1) THEN 1860 2020 PRINT "&J OUCH! ARROW GOT YOU" 2030 GOTO 1930 2040 REM ========= MOVE WUMPUS 2050 LET K=INT(4*RND(0))+1 2060 IF K=4 THEN 2080 2070 LET L(2)=S(L(2),K) 2080 IF L(2)<>L THEN 2110 2090 PRINT "&J TSK TSK TSK - WUMPUS GOT YOU." 2100 LET F=-1 2110 RETURN 2120 REM =========== MOVE ROUTINE 2130 LET F=0 2140 PRINT " *** WHERE TO ? ---=>"; 2150 INPUT (2,0)L 2160 IF L<1 OR L>20 THEN 2140 2170 FOR K=1 TO 3 2180 REM =========== CHECK IF LEGAL MOVE 2190 IF S(L(1),K)=L THEN 2250 2200 NEXT K 2210 IF L=L(1) THEN 2250 2220 PRINT " NOT POSSIBLE " 2230 GOTO 2140 2240 REM =========== CHECK FOR HAZARDS 2250 LET L(1)=L 2260 REM =========== WUMPUS 2270 IF L<>L(2) THEN 2340 2280 PRINT "&J OOPS ! BUMPED A WUMPUS!" 2290 REM =========== MOVE WUMPUS 2300 GOSUB 2050 2310 IF F=0 THEN 2340 2320 RETURN 2330 REM =========== PIT 2340 IF L<>L(3) AND L<>L(4) THEN 2390 2350 PRINT "&J YYYIIIIEEEE . . . FELL IN PIT !" 2360 LET F=-1 2370 RETURN 2380 REM =========== BATS 2390 IF L<>L(5) AND L<>L(6) THEN 2430 2400 PRINT " ZAP---SUPER BAT SNATCH! ...ELSEWHEREVILLE FOR YOU." 2410 LET L=INT(20*RND(0))+1 2420 GOTO 2250 2430 RETURN 2440 PRINT 2450 PRINT " ......READY TO SEE MORE ? (Y OR N) ---=>"; 2460 INPUT (1,200)N$ 2470 PRINT "&K&J" 2480 RETURN 2500 END