File WUMPUS.BA (BASIC source file)

Directory of image this file is from
This file as a plain text file

1 PRINT "FOR HELP TYPE 'HELP WUMPUS' AS AN OS8 COMMAND"
2 PRINT "ENTER A RANDOM NUMBER";
3 INPUT M
4 PRINT "HERE WE GO----"
5 PRINT "DOWN"
6 PRINT " O"
7 PRINT "  W"
8 PRINT "DOWN"
9 PRINT
10 DIM A(20),B(20),C(20),D(20)
20 DIM Q$(20),P$(10)
25 READ Q$
30 RANDOMIZE
40 FOR Z=1 TO 20
50 A(Z)=0
60 B(Z)=0
70 C(Z)=0
80 D(Z)=0
90 NEXT Z
100 R0=.02
105 B0=0
110 L0=0
120 FOR Z=1 TO 20
130 IF A(Z)<>0 GOTO 190
140 F=INT(20*RND(0))+1
150 IF F=Z GOTO 140
160 IF A(F)<>0 GOTO 140
170 A(Z)=F
180 A(F)=Z
190 NEXT Z
200 FOR Z=1 TO 20
210 IF B(Z)<>0 GOTO 280
220 F=INT(20*RND(0))+1
230 IF F=Z GOTO 220
240 IF A(Z)=F GOTO 220
250 IF B(F)<>0 GOTO 220
260 B(Z)=F
270 B(F)=Z
280 NEXT Z
290 FOR X=1 TO 20
300 IF D(X)<>0 GOTO 410
310 IF X=1 GOTO 340
320 B(Y)=X
330 B(X)=Y
340 Y=X
350 D(Y)=1
360 Y=A(Y)
370 D(Y)=1
380 IF B(Y)=X GOTO 410
390 Y=B(Y)
400 GOTO 350
410 D(X)=0
420 NEXT X
430 B(Y)=1
440 B(1)=Y
450 FOR Z=1 TO 20
460 IF C(Z)<>0 GOTO 540
470 F=INT(20*RND(0))+1
480 IF F=Z GOTO 470
490 IF F=A(Z) GOTO 470
500 IF F=B(Z) GOTO 470
510 IF C(F)<>0 GOTO 470
520 C(Z)=F
530 C(F)=Z
540 NEXT Z
550 FOR X=1000 TO 10000 STEP 9000
560 FOR Z=1 TO 3
570 F=INT(20*RND(0))+1
580 IF D(F)>=X GOTO 570
590 D(F)=D(F)+X
600 GOSUB 2130
610 NEXT Z
620 NEXT X
630 F=INT(20*RND(0))+1
640 X=100000
650 D(F)=D(F)+X
660 GOSUB 2130
670 W=F
680 F=A(W)
690 GOSUB 2130
700 F=B(W)
710 GOSUB 2130
720 F=C(W)
730 GOSUB 2130
740 H=INT(20*RND(0))+1
750 IF D(H)>=1000 GOTO 740
760 FOR S=5 TO 1 STEP -1
770 IF L0=0 GOTO 777
772 GOSUB 1740
774 PRINT "I SEE THAT TUNNELS A B AND C LEAD TO ROOMS";
776 PRINT A(H);B(H);"AND";C(H);"RESPECTIVELY"
777 IF RND(0)>.04 GOTO 779
778 GOSUB 2191
779 J=D(H)
780 IF J>=1000 GOTO 1240
790 GOTO 1090
800 IF J=0 GOTO 890
810 IF J=INT(J/10)*10 GOTO 830
820 PRINT "I HEAR SQUEAKING, ";
830 J=INT(J/10)
840 IF J=INT(J/10)*10 GOTO 860
850 PRINT "I FEEL A DRAFT, ";
860 IF J<10 GOTO 880
870 PRINT "I SMELL A WUMPUS";
880 PRINT
890 PRINT "YOU ARE IN ROOM";H;"  MOVE THROUGH TUNNEL";
895 H1=H
900 INPUT P$
910 IF P$<>"A" GOTO 940
920 H=A(H)
930 GOTO 770
940 IF P$<>"B" GOTO 970
950 H=B(H)
960 GOTO 770
970 IF P$<>"C" GOTO 1000
980 H=C(H)
990 GOTO 770
1000 IF P$="SHOOT" GOTO 1470
1010 IF P$<>"MAP" GOTO 1040
1020 GOSUB 2200
1030 GOTO 779
1040 IF P$<>"LIGHTS ON" GOTO 1070
1050 L0=1
1060 GOTO 770
1070 IF P$<>"LIGHTS OFF" GOTO 770
1075 L0=0
1080 GOTO 770
1090 IF RND(0)>R0 GOTO 800
1100 PRINT "YOU TRIPPED ON A ";Q$;" IN ROOM";H;
1110 F=INT(20*RND(0))+1
1120 IF F=A(H) GOTO 1150
1130 IF F=B(H) GOTO 1150
1140 IF F<>C(H) GOTO 1110
1145 IF F=H GOTO 1110
1150 PRINT "AND HAVE TUMBLED INTO ROOM";F
1160 IF R0<.2 GOTO 1190
1165 IF RND(0)<.5 GOTO 1190
1170 PRINT "YOU ARE GETTING CLUMSIER BY THE MINUTE"
1180 PRINT "YOU SEEM TO BE STUMBLING AROUND";R0*100;"% OF THE TIME"
1190 R0=R0+.02
1200 H=F
1210 IF D(H)>=100000 GOTO 1430
1220 GOSUB 1740
1230 GOTO 770
1240 J=INT(J/1000)
1250 IF J>=10 GOTO 1300
1260 PRINT "THERE IS A SUPER-BAT IN ROOM";H;".  FLAP--FLAP OUCH!!"
1270 H=INT(20*RND(0))+1
1280 IF D(H)>999 GOTO 1270
1283 IF H=H1 GOTO 1270
1290 GOTO 770
1300 IF J>=100 GOTO 1430
1310 PRINT "YOU FELL INTO THE BOTTOMLESS PIT IN ROOM";H
1320 IF J-10<>0 GOTO 2050
1330 IF D(H)<>INT(D(H)/10)*10 GOTO 2070
1340 PRINT "PLAY AGAIN (YES OR NO)";
1350 RESTORE
1360 INPUT P$
1370 PRINT
1380 IF P$="YES" GOTO 40
1390 IF P$<>"MAP" GOTO 1420
1400 GOSUB 2200
1410 GOTO 1340
1420 STOP
1430 PRINT "YOU HAVE BEEN DEVOURED BY THE WUMPUS IN ROOM";H
1440 GOTO 1340
1450 PRINT "YOU SHOT YOURSELF"
1460 GOTO 1340
1470 PRINT "THE ARROW ZINGS IN";
1480 K=H
1490 K1=H
1500 FOR R=1 TO 5
1510 PRINT "TO ROOM ";
1520 INPUT M
1530 IF M=A(K) GOTO 1600
1540 IF M=B(K) GOTO 1600
1550 IF M=C(K) GOTO 1600
1560 IF M=0 GOTO 1700
1570 R=6
1580 M=INT(20*RND(0))+1
1590 GOTO 1530
1600 IF R<=5 GOTO 1626
1620 PRINT "THE ARROW WENT ASTRAY"
1624 GOTO 1630
1626 IF M=K1 GOTO 1570
1630 IF M=H GOTO 1450
1640 IF D(M)<100000 GOTO 1670
1650 PRINT "YOU HAVE SLAIN THE WUMPUS"
1655 S=S-1
1660 GOTO 1340
1670 IF INT(D(M)/1000)=INT(D(M)/10000)*10 GOTO 1678
1671 PRINT "YOU PICKED OFF AN INNOCENT SUPER-BAT"
1672 X=-1000
1673 F=M
1674 GOSUB 2130
1675 D(M)=D(M)-1000
1676 B0=B0+1
1677 GOTO 1700
1678 K1=K
1680 K=M
1690 NEXT R
1700 GOSUB 1740
1710 NEXT S
1720 PRINT "YOU HAVE EXHAUSTED YOUR SUPPLY OF ARROWS -- THE SHOW'S OVER"
1730 GOTO 1340
1740 IF RND(0)>.5 GOTO 2000
1750 PRINT "ROAR**THUD**THUD**RRUUMMBBLLEE**THWUMP**ZZZZZZZZZZZ"
1760 X=-100000
1770 F=W
1780 GOSUB 2130
1790 F=A(W)
1800 GOSUB 2130
1810 F=B(W)
1820 GOSUB 2130
1830 F=C(W)
1840 GOSUB 2130
1850 D(W)=D(W)-100000
1860 F=INT(20*RND(0))+1
1870 IF F=A(W) GOTO 1900
1880 IF F=B(W) GOTO 1900
1890 IF F<>C(W) GOTO 1860
1900 X=100000
1910 D(F)=D(F)+X
1920 W=F
1930 GOSUB 2130
1940 F=A(W)
1950 GOSUB 2130
1960 F=B(W)
1970 GOSUB 2130
1980 F=C(W)
1990 GOSUB 2130
2000 READ Q$
2010 IF Q$<>"END" GOTO 2040
2020 RESTORE
2030 GOTO 2000
2040 RETURN
2050 PRINT "YOU HAVE BEEN SNATCHED UP BY A SUPER-BAT"
2060 GOTO 1270
2070 PRINT "THERE IS A BAT IN AN ADJACENT ROOM -- HE'S FLYING THIS WAY!"
2080 IF RND(0)>.25 GOTO 2110
2090 PRINT "YOU STRUCK YOUR HEAD ON A ";Q$;" GOOD-BYYEEE"
2100 GOTO 1340
2110 PRINT "PHEWWW!!!   ";
2120 GOTO 2050
2130 F1=A(F)
2140 D(F1)=D(F1)+X/1000
2150 F1=B(F)
2160 D(F1)=D(F1)+X/1000
2170 F1=C(F)
2180 D(F1)=D(F1)+X/1000
2190 RETURN
2191 IF B0<0 GOTO 2199
2192 B0=B0-1
2193 F=INT(20*RND(0))+1
2194 IF INT(D(F)/1000)<>INT(D(F)/10000)*10 GOTO 2193
2195 X=1000
2196 D(F)=D(F)+X
2197 GOSUB 2130
2198 PRINT "ANOTHER SUPER-BAT HAS BEEN BORN. LOOKS LIKE A STRONG ONE!"
2199 RETURN
2200 Z=1
2210 PRINT Z;TAB(4);A(Z);TAB(8);B(Z);TAB(12);C(Z);TAB(16);D(Z);TAB(24);
2220 Z=Z+1
2230 PRINT Z;TAB(28);A(Z);TAB(32);B(Z);TAB(36);C(Z);TAB(40);D(Z);TAB(48);
2232 Z=Z+1
2233 IF Z>20 GOTO 2245
2234 PRINT Z;TAB(52);A(Z);TAB(56);B(Z);TAB(60);C(Z);TAB(64);D(Z)
2235 Z=Z+1
2240 GOTO 2210
2245 PRINT
2250 PRINT "HEAR=1  FEEL=10  SMELL=100  ";
2260 PRINT "BATS=1000  PIT=10000  WUMPUS=100000"
2270 PRINT "YOU ARE IN ROOM ";H;" AND HAVE ";S;" ARROW(S) LEFT"
2280 RETURN
2290 DATA "CORPSE","DEAD BAT","BROKEN ARROW","STALAGMITE","PEBBLE"
2291 DATA "WUMPUS CLAW","LEDGE","LUNCH BAG","DOG"
2300 DATA "END"
2310 END



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search