10 REM- HUNT THE WUMPUS 11 REM PREVIOUS SOURCE FROM 2000DMP5-5-84ICLCONTRIB A000 12 REM CONVERTED TO PT BASIC 3/08, CHANGES MADE... 13 REM ADDED PROMPT FOR SEED NUMBER, CALLS RND THAT MANY TIMES 14 REM CHANGED INSTRUCTION, MOVE, SETUP PROMPTS FOR NUMERIC INPUT 15 REM CHANGED 'GOTO [EXPR] OF [LIST]' TO 'IF [COND] THEN [LINE]' 16 REM ADDED LET BEFORE ASSIGNMENTS, REMOVED '10 ETC CODES 17 REM ALTERED INSTRUCTION SPACING TO FIT WITHIN 72 CHARS 18 REM ADDED DUMMY Z TO DEF FN LINES, WAS DEF FNA() ETC 19 REM 20 REM WAS: 20 PRINT "INSTRUCTIONS (Y-N)"; 21 REM WAS: 30 INPUT I$ 22 REM WAS: 40 IF I$="N" THEN 70 30 PRINT "ENTER SEED NUMBER"; 31 INPUT Z 32 FOR Y=1 TO Z 33 LET X=RND(0) 34 NEXT Y 40 PRINT "INSTRUCTIONS (1 FOR YES)"; 41 INPUT Z 42 PRINT 43 PRINT 44 IF Z#1 THEN 70 50 GOSUB 1000 60 REM- SET UP CAVE (DODECAHEDRAL NODE LIST) 70 DIM S[20,3] 80 FOR J=1 TO 20 90 FOR K=1 TO 3 100 READ S[J,K] 110 NEXT K 120 NEXT J 130 DATA 2,5,8,1,3,10,2,4,12,3,5,14,1,4,6 140 DATA 5,7,15,6,8,17,1,7,9,8,10,18,2,9,11 150 DATA 10,12,19,3,11,13,12,14,20,4,13,15,6,14,16 160 DATA 15,17,20,7,16,18,9,17,19,11,18,20,13,16,19 170 DEF FNA(Z)=INT(20*RND(0))+1 180 DEF FNB(Z)=INT(3*RND(0))+1 190 DEF FNC(Z)=INT(4*RND(0))+1 200 REM-LOCATE L ARRAY ITEMS 210 REM-1-YOU,2-WUMPUS,3&4-PITS,5&6-BATS 220 DIM L[6] 230 DIM M[6] 240 FOR J=1 TO 6 250 LET L[J]=FNA(0) 260 LET M[J]=L[J] 270 NEXT J 280 REM-CHECK FOR CROSSOVERS (IE L(1)=L(2),ETC) 290 FOR J=1 TO 6 300 FOR K=J TO 6 310 IF J=K THEN 330 320 IF L[J]=L[K] THEN 240 330 NEXT K 340 NEXT J 350 REM-SET# ARROWS 360 LET A=5 365 LET L=L[1] 370 REM-RUN THE GAME 375 REM WAS: 375 PRINT "HUNT THE WUMPUS"'10 376 PRINT "HUNT THE WUMPUS" 377 PRINT 380 REM-HAZARD WARNINGS & LOCATION 390 GOSUB 2000 400 REM-MOVE OR SHOOT 410 GOSUB 2500 420 REM WAS: 420 GOTO O OF 440,480 420 IF O=1 THEN 440 421 IF O=2 THEN 480 430 REM-SHOOT 440 GOSUB 3000 450 IF F=0 THEN 410 460 GOTO 500 470 REM-MOVE 480 GOSUB 4000 490 IF F=0 THEN 390 500 IF F>0 THEN 550 510 REM-LOSE 520 PRINT "HA HA HA - YOU LOSE!" 530 GOTO 560 540 REM-WIN 550 PRINT "HEE HEE HEE - THE WUMPUS'LL GETCHA NEXT TIME!!" 560 FOR J=1 TO 6 570 LET L[J]=M[J] 580 NEXT J 590 REM WAS: 590 PRINT "SAME SET-UP (Y-N)"; 591 REM WAS: 600 INPUT I$ 592 REM WAS: 610 IF I$#"Y" THEN 240 595 PRINT "SAME SET-UP (1 FOR YES)"; 600 INPUT Z 610 IF Z#1 THEN 240 620 GOTO 360 1000 REM-INSTRUCTIONS 1010 PRINT "WELCOME TO 'HUNT THE WUMPUS'" 1020 PRINT " THE WUMPUS LIVES IN A CAVE OF 20 ROOMS. EACH ROOM" 1030 PRINT "HAS 3 TUNNELS LEADING TO OTHER ROOMS. (LOOK AT A" 1040 PRINT "DODECAHEDRON TO SEE HOW THIS WORKS-IF YOU DON'T KNOW" 1050 PRINT "WHAT A DODECAHEDRON IS, ASK SOMEONE)" 1060 PRINT 1070 PRINT " HAZARDS:" 1080 PRINT " BOTTOMLESS PITS - TWO ROOMS HAVE BOTTOMLESS PITS IN THEM" 1090 PRINT " IF YOU GO THERE, YOU FALL INTO THE PIT (& LOSE!)" 1100 PRINT " SUPER BATS - TWO OTHER ROOMS HAVE SUPER BATS. IF YOU" 1110 PRINT " GO THERE, A BAT GRABS YOU AND TAKES YOU TO SOME OTHER" 1120 PRINT " ROOM AT RANDOM. (WHICH MIGHT BE TROUBLESOME)" 1130 PRINT 1140 PRINT " WUMPUS:" 1150 PRINT " THE WUMPUS IS NOT BOTHERED BY THE HAZARDS (HE HAS SUCKER" 1160 PRINT " FEET AND IS TOO BIG FOR A BAT TO LIFT). USUALLY" 1170 PRINT " HE IS ASLEEP. TWO THINGS WAKE HIM UP: YOUR ENTERING" 1180 PRINT " HIS ROOM OR YOUR SHOOTING AN ARROW." 1190 PRINT " IF THE WUMPUS WAKES, HE MOVES (P=.75) ONE ROOM" 1200 PRINT " OR STAYS STILL (P=.25). AFTER THAT, IF HE IS WHERE YOU" 1210 PRINT " ARE, HE EATS YOU UP (& YOU LOSE!)" 1220 PRINT 1230 PRINT " YOU:" 1240 PRINT " EACH TURN YOU MAY MOVE OR SHOOT A CROOKED ARROW" 1250 PRINT " MOVING: YOU CAN GO ONE ROOM (THRU ONE TUNNEL)" 1260 PRINT " ARROWS: YOU HAVE 5 ARROWS. YOU LOSE WHEN YOU RUN OUT." 1270 PRINT " EACH ARROW CAN GO FROM 1 TO 5 ROOMS. YOU AIM BY TELLING" 1280 PRINT " THE COMPUTER THE ROOM#S YOU WANT THE ARROW TO GO TO." 1290 PRINT " IF THE ARROW CAN'T GO THAT WAY(IE NO TUNNEL) IT MOVES" 1300 PRINT " AT RANDOM TO THE NEXT ROOM." 1310 PRINT " IF THE ARROW HITS THE WUMPUS, YOU WIN." 1320 PRINT " IF THE ARROW HITS YOU, YOU LOSE." 1330 PRINT 1340 PRINT " WARNINGS:" 1350 PRINT " WHEN YOU ARE ONE ROOM AWAY FROM WUMPUS OR HAZARD," 1360 PRINT " THE COMPUTER SAYS:" 1370 PRINT " WUMPUS- 'I SMELL A WUMPUS'" 1380 PRINT " BAT - 'BATS NEARBY'" 1390 PRINT " PIT - 'I FEEL A DRAFT'" 1400 REM WAS: 1400 PRINT '10'10'10 1401 PRINT 1402 PRINT 1410 RETURN 2000 REM-PRINT LOCATION & HAZARD WARNINGS 2010 PRINT 2020 FOR J=2 TO 6 2030 FOR K=1 TO 3 2040 IF S[L[1],K]#L[J] THEN 2110 2050 REM WAS: 2050 GOTO J-1 OF 2060,2080,2080,2100,2100 2051 IF J=2 THEN 2060 2052 IF J=3 OR J=4 THEN 2080 2053 IF J=5 OR J=6 THEN 2100 2060 PRINT "I SMELL A WUMPUS!" 2070 GOTO 2110 2080 PRINT "I FEEL A DRAFT" 2090 GOTO 2110 2100 PRINT "BATS NEARBY!" 2110 NEXT K 2120 NEXT J 2130 PRINT "YOU ARE IN ROOM "L[1] 2140 PRINT "TUNNELS LEAD TO "S[L,1];S[L,2];S[L,3] 2150 PRINT 2160 RETURN 2500 REM-CHOOSE OPTION 2510 REM WAS: 2510 PRINT "SHOOT OR MOVE (S-M)"; 2511 REM WAS: 2520 INPUT I$ 2512 REM WAS: 2530 IF I$#"S" THEN 2560 2515 PRINT "SHOOT OR MOVE (1-2)"; 2520 INPUT Z 2530 IF Z#1 THEN 2560 2540 LET O=1 2550 RETURN 2560 IF Z#2 THEN 2510 2570 LET O=2 2580 RETURN 3000 REM-ARROW ROUTINE 3010 LET F=0 3020 REM-PATH OF ARROW 3030 DIM P[5] 3040 PRINT "NO. OF ROOMS(1-5)"; 3050 INPUT J9 3060 IF J9<1 OR J9>5 THEN 3040 3070 FOR K=1 TO J9 3080 PRINT "ROOM #"; 3090 INPUT P[K] 3100 NEXT K 3110 REM-SHOOT ARROW 3120 LET A=A-1 3130 LET L=L[1] 3140 FOR K=1 TO J9 3150 FOR K1=1 TO 3 3160 IF S[L,K1]=P[K] THEN 3295 3170 NEXT K1 3180 REM-NO TUNNEL FOR ARROW 3190 LET L=S[L,FNB(1)] 3200 GOTO 3300 3210 NEXT K 3220 PRINT "MISSED" 3230 REM-MOVE WUMPUS 3240 GOSUB 3370 3250 REM-AMMO CHECK 3260 IF A>0 THEN 3280 3270 LET F=-1 3280 RETURN 3290 REM-SEE IF ARROW IS AT L(1) OR L(2) 3295 LET L=P[K] 3300 IF L#L[2] THEN 3340 3310 PRINT "AHA! YOU GOT THE WUMPUS!" 3320 LET F=1 3330 RETURN 3340 IF L#L[1] THEN 3210 3350 PRINT "OUCH! ARROW GOT YOU!" 3360 GOTO 3270 3370 REM-MOVE WUMPUS ROUTINE 3380 LET K=FNC(0) 3390 IF K=4 THEN 3440 3400 LET L[2]=S[L[2],K] 3410 IF L[2]#L THEN 3440 3420 PRINT "TSK TSK TSK- WUMPUS GOT YOU!" 3430 LET F=-1 3440 RETURN 4000 REM- MOVE ROUTINE 4010 LET F=0 4020 PRINT "WHERE TO"; 4030 INPUT L 4040 IF L<1 OR L>20 THEN 4020 4050 FOR K=1 TO 3 4060 REM- CHECK IF LEGAL MOVE 4070 IF S[L[1],K]=L THEN 4130 4080 NEXT K 4090 IF L=L[1] THEN 4130 4100 PRINT "NOT POSSIBLE -"; 4110 GOTO 4020 4120 REM-CHECK FOR HAZARDS 4130 LET L[1]=L 4140 REM-WUMPUS 4150 IF L#L[2] THEN 4220 4160 PRINT "... OOPS! BUMPED A WUMPUS!" 4170 REM-MOVE WUMPUS 4180 GOSUB 3380 4190 IF F=0 THEN 4220 4200 RETURN 4210 REM-PIT 4220 IF L#L[3] AND L#L[4] THEN 4270 4230 PRINT "YYYIIIIEEEE . . . FELL IN PIT" 4240 LET F=-1 4250 RETURN 4260 REM-BATS 4270 IF L#L[5] AND L#L[6] THEN 4310 4280 PRINT "ZAP--SUPER BAT SNATCH! ELSEWHEREVILLE FOR YOU!" 4290 LET L=FNA(1) 4300 GOTO 4130 4310 RETURN 5000 END