Treasure Hunt

TREASURE HUNT is a game of almost arcade quality. You are in a system of 21 underground caves filled with monsters and poisonous fungoids. The aim is to collect treasure, by running over the asterisks, and deposit it in Cave O. You cannot carry more than five bags of treasure at a time and even one will slow your progress.

Map of the caves, from Cave 0 Entry to Cave 21
Map of the caves, from Cave 0 Entry to Cave 21

The display is of the current cave — see the illustration. You are able to move around with the cursor keys and the exits are represented by the areas of graphic A at the top and bottom of the screen. It is not possible to return to the previous cavern.

To protect yourself against monsters and to clear a path through the fungoids you can loose an arrow, with F followed by the appropriate cursor key. Remember, though, that new arrows are obtainable only in the entrance cave in exchange for captured treasure.

In Cave 21 there is a hoard of treasure guarded by a growing serpent which will attempt to seal off exits. Shooting a hole in it is usually only a temporary measure, unless you also shoot at something else, in which case the serpent will attach itself to the other target.

The score is calculated by monsters killed × 5; + treasure captured × 10; – arrows bought × 4. Reincarnation is granted if you score more than 50 between deaths.

A fine program, to be typed and taped, from Paul Sherwood (T/S1000,ZX81, 16K).

Treasure chest with a skull and bones
Treasure chest with a skull and bones
   5 DIM D(3,2)
7 DIM T(20)
8 LET Z$="YOU ARE IN THE ENTRANCE HALL"
10 LET LR=0
11 LET C$="████████████"
13 LET C$=C$+"▒▒▒▒"
15 LET C$=C$+"██████████████"
20 LET ARR=5
25 FOR I=1 TO 20
30 LET T(I)=1
35 NEXT I
37 LET PS=0
40 LET S=0
55 LET Q=PEEK 16396+256*PEEK 16397+1
60 LET TR=0
65 RAND
68 LET NOW=INT (RND*5000)
70 LET B$="9BE9AF9DG9CHAHIBIJ"
72 LET B$=B$+"CJKDEKEFLFGMGHN"
74 LET B$=B$+"IOQJOPKPTLMRMNS"
76 LET B$=B$+"LRTOQUPTUNQS9RS"
80 LET R1=0
82 LET R2=0
84 LET R3=0
95 GOTO 1300
150 CLS
160 REM (inverse CAVE PLOT)
162 RAND (PR*10+NOW)
165 FOR I=0 TO 20
170 LET IY=RND*16+2
175 LET IX=RND*27+2
180 PRINT AT IY,IX;"█";
185 IF RND>.5 THEN PRINT AT IY-1,IX-1;CHR$ (128+RND*2);
190 PRINT AT IY,IX+1;"▙";
195 PRINT AT IY+1,IX;CHR$ (128+RND*2);
200 IF RND>.6 THEN PRINT AT IY+1,IX+1;CHR$ 130;
205 PRINT AT I,0;"█";AT I,31;"█";
210 NEXT I
212 PRINT AT 0,1;C$;AT 20,1;C$;
214 PRINT AT 0,17;R1;AT 20,17;R2;
215 LET N=11
220 LET M=1
222 IF T(PR)=1 THEN PRINT AT IY,IX+1;"*";
224 LET T(PR)=0
225 REM (inverse DEMON PLOT)
230 LET DEM=INT (RND*4)
235 FOR I=1 TO DEM
240 LET D(I,1)=INT (RND*19+1)
245 LET D(I,2)=INT (RND*30+1)
250 PRINT AT D(I,1),D(I,2);"(inverse M)";
255 NEXT I
265 REM (inverse HERO RUN)
275 PRINT AT N,M;"X";
280 IF INKEY$<>"F" THEN GOTO 300
285 IF ARR=0 THEN GOTO 300
290 LET ARR=ARR-1
295 GOSUB 1000
298 PRINT AT 21,0;"ARROWS:";ARR;
300 LET N1=N
305 LET M1=M
310 LET M=M+(1 AND INKEY$="8")-(1 AND INKEY$="5")
315 LET N=N+(1 AND INKEY$="6")-(1 AND INKEY$="7")
320 LET Q1=PEEK (Q+33*N+M)
325 IF Q1>62 THEN GOTO 2000
330 IF Q1=23 AND TR<50 THEN LET TR=TR+10
335 IF Q1=8 THEN GOTO 800
338 IF ABS (10-N)=10 THEN GOTO 2000
339 IF PR=21 THEN GOTO 355
340 IF DEM=0 AND RND<.03 THEN LET DEM=1
342 IF RND<.3+TR/200 THEN GOSUB 1200
345 PRINT AT N1,M1;" ";
350 GOTO 265
355 GOSUB 3000
360 GOTO 345
800 REM (inverse ROOM SWITCH)
805 CLS
810 LET LR=PR
812 IF PR<>21 THEN GOTO 815
813 LET PR=INT (RND*19+1)
814 GOTO 825
815 IF N=0 THEN LET PR=R1
820 IF N=20 THEN LET PR=R2
822 IF PR=0 THEN GOTO 1505
825 PRINT AT 3,2;"YOU ARE IN THE TUNNEL"
830 PRINT AT 5,2;"BETWEEN ";LR;" AND ";PR
835 PRINT AT 8,2;"YOU HAVE ";ARR;" ARROWS";
840 PRINT AT 11,2;"YOUR SCORE IS ";TR+S
915 IF PR=21 THEN GOTO 2050
920 LET R$=B$(PR*3-2)
925 LET R1=CODE (R$)-37
930 LET R$=B$(PR*3-1)
935 LET R2=CODE (R$)-37
940 LET R$=B$(PR*3)
945 LET R3=CODE (R$)-37
960 IF R1=LR THEN LET R1=R3
965 IF R2=LR THEN LET R2=R3
970 GOTO 150
1000 REM (inverse FIRE)
1003 IF PR=21 THEN GOSUB 3000
1005 IF RND<.5 THEN GOSUB 1200
1010 LET F$=INKEY$
1015 IF F$="" OR F$="F" THEN GOTO 1000
1020 LET Y1=N
1025 LET X1=M
1030 LET MY=0+(1 AND F$="6")-(1 AND F$="7")
1035 LET MX=0+(1 AND F$="8")-(1 AND F$="5")
1040 LET X1=X1+MX
1045 LET Y1=Y1+MY
1050 IF ABS (15-X1)=15 OR ABS (10-Y1)=10 THEN GOTO 1125
1053 IF PEEK (Q+33*Y1+X1)<>0 THEN GOTO 1070
1055 PRINT AT Y1,X1;"+";
1060 PRINT AT Y1,X1;" ";
1065 GOTO 1040
1070 LET DHIT=DEM
1075 FOR I=1 TO DHIT
1080 LET Y=D(I,1)
1085 LET X=D(I,2)
1090 IF X<>X1 OR Y<>Y1 THEN GOTO 1115
1095 PRINT AT Y1,X1;"(inverse +)";
1098 LET S=S+5
1100 LET D(I,1)=D(DEM,1)
1105 LET D(I,2)=D(DEM,2)
1110 LET DEM=DEM-1
1115 NEXT I
1117 IF PR=21 THEN LET FX=X1
1118 IF PR=21 THEN LET FY=Y1
1120 PRINT AT Y1,X1;" ";
1125 RETURN
1200 REM (inverse DEMON RUN)
1201 FOR I=1 TO DEM
1205 LET X=D(I,2)
1210 LET Y=D(I,1)
1215 PRINT AT Y,X;" ";
1220 LET Y=Y+SGN (N-Y)
1225 LET X=X+SGN (M-X)
1235 PRINT AT Y,X;"(inverse M)";
1238 IF X=M AND Y=N THEN GOTO 2000
1240 LET D(I,1)=Y
1245 LET D(I,2)=X
1250 NEXT I
1255 RETURN
1295 REM (inverse START)
1300 PRINT " THIS IS TREASURE-HUNT",,,,
1305 PRINT " YOU ARE IN A NETWORK OF CAVES.",,
1310 PRINT "YOU ARE LOOKING FOR GOLD.",,,
1315 PRINT "IF YOU ARE CAREFUL YOU MAY REACH",,
1320 PRINT "THE TREASURE ROOM, BUT BEWARE:",,,
1325 PRINT "THERE ARE MONSTERS WHICH WILL",,,
1330 PRINT "EAT YOU: EVEN TO TOUCH THE ROCKS",,
1335 PRINT "MEANS INSTANT DEATH.",,,,
1340 PRINT Z$,,,
1342 PRINT "CHOOSE CAVE 1,2,3 OR 4?",,
1345 INPUT PR
1350 IF PR<1 OR PR>4 THEN GOTO 1345
1360 LET LR=0
1500 GOTO 915
1505 PRINT Z$,,,
1510 PRINT "YOUR TREASURE IS SAFE HERE.",,,
1515 PRINT "YOUR SCORE IS ";S+TR,,,,
1516 PRINT TAB 0;"YOU HAVE ";ARR;" ARROWS.",,,,
1520 PRINT TAB 0;"ARE YOU GOING BACK IN?",,,,
1525 INPUT F$
1530 IF F$="NO" THEN PRINT "YOU SCORED ";S+TR
1535 IF F$="NO" THEN STOP
1540 LET S=S+TR
1545 LET TR=0
1550 PRINT "HOW MANY ARROWS DO YOU WANT?",,
1560 PRINT "THEY ARE 4 POINTS EACH",,
1570 INPUT F
1580 IF F*4>S THEN GOTO 1650
1590 LET S=S-F*4
1600 LET ARR=ARR+F
1610 GOTO 1342
1650 CLS
1655 PRINT " YOU CANT AFFORD THEM",,,
1660 GOTO 1550
2000 REM (inverse DEATH OF A HERO)
2005 CLS
2010 PRINT AT 5,1;"UNFORTUNATELY YOU HAVE PERISHED"
2015 PRINT AT 8,1;"YOU SCORED:";S+TR
2018 PRINT
2019 PRINT
2020 IF S+TR<50+PS THEN STOP
2025 LET S=S-15
2028 LET PS=S+TR
2029 PRINT "YOU PLAYED WELL:",,,
2030 PRINT "I SHALL DEDUCT 15",,
2031 PRINT
2032 PRINT "FOR DAMAGE TO THE BODY";
2033 PRINT
2034 PRINT
2035 PRINT "YOU MAY CONTINUE";
2036 FOR I=1 TO 50
2037 NEXT I
2038 CLS
2040 GOTO 1505
2045 REM (inverse TREASURE ROOM)
2050 PRINT AT 0,0;
2052 CLS
2055 FOR I=-10 TO 10
2058 LET AI=ABS I
2060 PRINT TAB 0;C$( TO AI);
2065 PRINT TAB (30-AI);C$( TO AI)
2070 NEXT I
2075 PRINT AT 0,10;C$( TO 10)
2080 PRINT AT 20,10;C$( TO 10)
2085 PRINT AT 10,0;"█";TAB 29;"▒"
2086 LET DEM=1
2087 LET QW=INT (RND*4)
2090 FOR I=1 TO QW+1
2095 PRINT AT 12+I,12+(RND*2);"***";
2100 NEXT I
2105 LET N=10
2106 LET MY=-1
2107 LET MX=0
2108 LET K=18
2109 LET J=7
2110 LET M=2
2111 LET FX=J
2112 LET FY=K
2115 GOTO 265
2999 REM "(inverse TRAP)"
3000 IF PEEK (Q+33*(K+MY)+J+MX)=0 THEN GOTO 3015
3002 LET AD=MY
3005 IF AD=0 THEN LET MY=MX
3006 IF AD=0 THEN LET MX=0
3007 IF AD<>0 THEN LET MY=0
3008 IF AD<>0 THEN LET MX=0-AD
3015 LET J=J+MX
3020 LET K=K+MY
3025 PRINT AT K,J;"▚";
3030 IF RND>.5 THEN PRINT AT FY,FX;"▚"
3032 IF RND<.25 THEN GOSUB 1200
3035 RETURN

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.