diff --git a/wumpus.bas b/wumpus.bas new file mode 100644 index 0000000..055927d --- /dev/null +++ b/wumpus.bas @@ -0,0 +1,224 @@ +Rem Taken from More BASIC Computer Games by Chris Cerf + +10 Print Tab(33); "WUMPUS" +20 Print Tab(15); "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" +22 Print +24 Print +26 Print +30 Print "INSTRUCTIONS (Y-N)"; +40 Input I$ +50 If I$ = "N" Then 60 +55 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,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,8,9,17,19,11,18,20,13,16,19 +170 DEF FNA(X)=INT(20*RND(1))+1 +180 DEF FNB(X)=INT(3*RND(1))+1 +190 DEF FNC(X)=INT(4*RND(1))+1 +200 REM- LOCATE L ARRAY ITEMS +210 REM- 1-YOU, 2-WUMPUS, 3&4-PITS, 5&6-BATS +220 DIM L(6),M(6) +230 FOR J=1 TO 6 +240 L(J)-FNA(0) +260 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# ARROS +360 A=5 +365 L=L(1) +270 REM- RUN THE GAME +375 PRINT "HUNT THE TUMPUS" +380 REM- HAZARD WARNINGS & LOCATIONS +390 GOSUB 2000 +400 REM- MOVE OR SHOOT +410 GOSUB 2500 +420 ON O GOTO 440,480 +430 REM- SHOOT +440 GOSUB 3000 +450 IF F-0 THEN 390 +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 L(J)=M(J) +580 NEXT J +590 PRINT "SAME SET-UP (Y-N)"; +600 INPUT I$ +610 IF I$ <> "Y" THEN 230 +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 DODECHADRON IS, ASK SOMEONE)" +1060 PRINT +1070 PRINT " HAZARDS:" +1080 PRINT "BOTTOMLESS PITS - TWO ROOMS HAVE BOTTOMLESS PITS ON THEM" +1090 PRINT " IF YOU GOTHERE, YOU FALL INTO THE PIT (& LOSE!)" +1100 PRINT "SUPERBATS - TWO OTHER ROOMS HAVE SUPER BATS, IF YOU +1110 PRINT " GO THERE, A BAT GRABS YOU AND TAKE YOU TO SOME"; +1115 PRINT " OTHER" +1120 PRINT " ROOM AT RANDOM. (WHICH MIGHT BE TROUBLE)" +1130 PRINT +1140 PRINT " TUMPUS:" +1150 PRINT "THE WUMPUS IS NOT BOTHERED BY THE HAZARDS (HE HAS SUCKER" +1160 PRINT "FEET ANS IS TOO BIG FOR A BAT TO LIFT), USUALLY" +1170 PRINT "HE IS ASLEEP. TWO THINGS THAT TAKE HIM UP: YOUR ENTERING" +1180 PRINT "HIS ROOM OR YOUR SHOOTING AN ARROW." +1190 PRINT " IF THE WIMPUS 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 "; +1275 PRINT "TELLING" +1280 PRINT " THE COMPUTER THE ROOM YOU WANT THE ARROW TO GO TO." +1290 PRINT " IF THE ARROW CAN'T GO THAT WAY (IE NO TUNNEL) IT "; +1295 PRINT "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 SMALL A WUMPUS'" +1380 PRINT "BAT - 'BATS NEARBY'" +1390 PRINT "PIT - 'I FEEL A DRAFT'" +1400 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 ON J-1 GOTO 2060,2080,2080,2100,2100 +2060 PRINT "I SMELL A WUMPUS!" +2070 GOTO 2110 +2080 PRINT "A 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 PRINT "SHOOT OR MOVE (S-M)"; +2520 INPUT I$ +2530 IF I$ <> "S" THEN 2560 +2540 O=1 +2550 RETURN +2560 IF I$ <> "M" THEN 2510 +2570 O=2 +2580 RETURN +3000 REM- ARROW ROUTINE +3010 F=0 +3020 REM- PATH OF ARROW +3030 L=L(1) +3040 PRINT "NO. OF ROOMS(1-5)"; +3050 INPUT J9 +3060 IF J0<1 OR J9>5 THEN 3040 +3070 FOR K=1 TO J9 +3080 PRINT "ROOM #"; +3090 INPUT P(K) +3095 IF K <= 2 THEN 3115 +3100 IF P(K) <> P(K-2) THEN 3115 +3105 PRINT "ARROWS AREN'T THAT CORRKED - TRY ANOTHER ROOM" +3110 GOTO 3080 +3115 NEXT K +3120 REM- SHOOT ARROW +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 L=S(L,FNB(1)) +3200 GOTO 3300 +3210 NEXT K +3220 PRINT "MISSED" +3225 L=L(1) +3230 REM- MOVE WUMPUS +3240 GOSUB 3370 +3250 REM AMMO CHECK +3255 A=A-1 +3260 IF A>0 THEN 3280 +3270 F=-1 +3280 RETURN +3290 REM- SEE IF ARROW IS AT L(1) OR L(2) +3295 L=P(K) +3300 IF L <> l(2) THEN 3340 +3310 PRINT "AHA! YOU GOT THE WUMPUS!" +3320 F-1 +3330 RETURN +3340 IF L <> L(1) THEN 3210 +3350 PRINT "OUCH! ARROWGOT YOU!" +3360 GOTO 3270 +3370 REM- MOVE WUMPUS ROUTINE +3380 K=FNC(0) +3390 IF K=4 THEN 3410 +3400 L(2)=S(L(2),K) +3410 IF L(2) <> l THEN 3440 +3420 PRINT "TSK TSK TSK - WUMPUS GOT YOU!" +3430 F=-1 +3440 RETURN +4000 REM- MOVE ROUTINE +4010 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 L(1)=1 +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 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 L=FNA(1) +4300 GOTO 4130 +4310 RETURN +5000 END +OK