mirror of
https://github.com/jscrane/Apple1.git
synced 2024-11-22 06:31:37 +00:00
253 lines
7.0 KiB
Plaintext
253 lines
7.0 KiB
Plaintext
300:02 05 08 01 03 0A 02 04 0C 03 05 0E 01 04 06
|
|
:05 07 0F 06 08 11 01 07 09 08 0A 12 02 09 0B
|
|
:0A 0C 13 03 0B 0D 0C 0E 14 04 0D 0F 06 0E 10
|
|
:0F 11 14 07 10 12 09 11 13 0B 12 14 0D 10 13
|
|
E000R
|
|
LOMEM=1024
|
|
HIMEM=16384
|
|
5 REM CONVERTED TO REPLICA 1 BY VINCE BRIEL 2/19/2006
|
|
10 PRINT " WUMPUS"
|
|
20 PRINT " CREATIVE COMPUTING MORRISTOWN, NJ"
|
|
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(60)
|
|
75 Z1=0
|
|
80 FOR J=1 TO 20
|
|
90 FOR K=1 TO 3
|
|
95 X1=PEEK(768+Z1)
|
|
96 Y1=(20*K+J)-20
|
|
100 S(Y1)=X1
|
|
110 Z1=Z1+1:NEXT K
|
|
120 NEXT J
|
|
130 REM DATA 2,5,8,1,3,10,2,4,12,3,5,14,1,4,6
|
|
140 REM DATA 5,7,15,6,8,17,1,7,9,8,10,18,2,9,11
|
|
150 REM DATA 10,12,19,3,11,13,12,14,20,4,13,15,6,14,16
|
|
160 REM DATA 15,17,20,7,16,18,9,17,19,11,18,20,13,16,19
|
|
170 REM DEF FNA(X)=INT(20*RND(1))+1
|
|
180 REM DEF FNB(X)=INT(3*RND(1))+1
|
|
190 REM 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)=RND(20)+1
|
|
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)
|
|
370 REM- RUN THE GAME
|
|
375 PRINT "HUNT THE WUMPUS"
|
|
380 REM- HAZARD WARNINGS & LOCATIONS
|
|
390 GOSUB 2000
|
|
400 REM- MOVE OR SHOOT
|
|
410 GOSUB 2500
|
|
420 GOTO 400+(O*40):REM ON O GOTO 440,480
|
|
430 REM- SHOOT
|
|
440 GOSUB 3000
|
|
450 IF F=0 THEN 370
|
|
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 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 THAT 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";
|
|
1265 PRINT " OUT."
|
|
1270 PRINT " EACH ARROW CAN GO FROM I TO 5 ROOMS. YOU AIM BY";
|
|
1275 PRINT " TELLING"
|
|
1280 PRINT " THE COMPUTER THE ROOMS 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 SMELL A WUMPUS'"
|
|
1380 PRINT "BAT - 'BATS NEARBY'"
|
|
1390 PRINT "FIT - '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
|
|
2031 X1=L(1)
|
|
2035 IF S((20*K+X1)-20)<>L(J) THEN 2110
|
|
2040 REM WAS IF S(L(1),K)<>L(J) THEN 2110
|
|
2042 IF J-1=1 THEN 2060
|
|
2043 IF J-1=2 THEN 2080
|
|
2044 IF J-1=3 THEN 2080
|
|
2045 IF J-1=4 THEN 2100
|
|
2046 IF J-1=5 THEN 2100
|
|
2050 REM WAS ON J-1 GOTO 2060,2080,2080,2100,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)
|
|
2132 X1=S((20*1+L)-20):REM COULD BE S(L)
|
|
2133 Y1=S((20*2+L)-20):REM COULD BE S(20+L)
|
|
2135 Z1=S((20*3+L)-20):REM COULD BE S(40+L)
|
|
2138 PRINT "TUNNELS LEAD TO ";X1;", ";Y1;", AND ";Z1
|
|
2140 REM WAS 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 J1
|
|
3060 IF J1<1 OR J1>5 THEN 3040
|
|
3070 FOR K=1 TO J1
|
|
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 CROOKED - TRY ANOTHER ROOM"
|
|
3110 GOTO 3080
|
|
3115 NEXT K
|
|
3120 REM- SHOOT ARROW
|
|
3140 FOR K=1 TO J1
|
|
3150 FOR K1=1 TO 3
|
|
3155 IF S((20*K1+L))-20=P(K) THEN 3295
|
|
3160 REM WAS IF S(L,K1)=P(K) THEN 3295
|
|
3170 NEXT K1
|
|
3180 REM- NO TUNNEL FOR ARROW
|
|
3181 X1=RND(3)+1
|
|
3185 L=S((20*X1+L)-20)
|
|
3190 REM WAS 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! ARROW GOT YOU!"
|
|
3360 GOTO 3270
|
|
3370 REM- MOVE WUMPUS ROUTINE
|
|
3375 K=RND(4)+1
|
|
3380 REM WASK=FNC(0)
|
|
3390 IF K=4 THEN 3410
|
|
3391 X1=L(2)
|
|
3395 L(2)=S((20*K+X1)-20)
|
|
3400 REM WAS 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
|
|
4065 X1=L(1)
|
|
4069 IF S((20*K+X1)-20)=L THEN 4130
|
|
4070 REM WAS 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)=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 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=RND(20)+1
|
|
4300 GOTO 4130
|
|
4310 RETURN
|
|
5000 END
|
|
|