mirror of
https://github.com/JohnBlood/basic-book-games.git
synced 2024-11-21 17:05:54 +00:00
typed out wumpus
This commit is contained in:
parent
73b8cb4aa8
commit
c1914b526d
224
wumpus.bas
Normal file
224
wumpus.bas
Normal file
|
@ -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
|
Loading…
Reference in New Issue
Block a user