PRISONER.BAS  ·  BAS  ·  11.2 KB  ·  1987-07-16  ·  from PCPlus_Issue-11_Aug-1987
1  REM **************************************
5  REM *** PRISONERS ESCAPE               ***
10 REM *** WRITTEN BY                     ***
15 REM *** MATTHEW ROBINSON               ***
20 REM *** ╜ 1985 & ╜ 1987 by M. Robinson ***
25 REM *** VERSION 3.02 Modified          ***
30 REM *** For Amstrad PC1512             ***
35 REM *** Running Locomotive BASIC 2     ***
40 REM *** ╜ 1987 by Matt. Robinson       ***
41 REM *** Written in colour              ***
42 REM *** To make Black and White        ***
43 REM *** Delete all ;COLOUR(n); and     ***
44 REM *** ;COLOUR(n) statements from     ***
45 REM *** the program.                   ***
49 REM **************************************
50 OPTION RUN
55 CLS
60 GOSUB 3000
70 v=23:w=34:g=17:m=4
80 GOSUB 1600
90 CLS:PRINT "  Prisoner's Escape"
100 PRINT"====================="
110 PRINT"YOUR LOCATION":IF rm=71 THEN c(11)=0
120 PRINT d$(rm)
130 PRINT"EXITS:";
140 FOR i=1 TO LEN(r$(rm))
150 PRINT MID$(r$(rm),i,1);",";
160 NEXT i
170 PRINT
180 FOR i=1 TO w
190 IF l(i)=rm AND ( i<(g+4) OR i>g+13 ) THEN PRINT"YOU CAN SEE THE ";o$(i);" HERE"
200 NEXT i
210 PRINT"====================="
220 PRINT m$ : IF ll>0 THEN  PRINT "HIC!"
225 m$="WHAT"
230 INPUT"WHAT WILL YOU DO NOW ",q$
235 q$ = UPPER$(q$)
240 v$="":w$="":vb=0:ob=0
250 FOR i=1 TO LEN(q$)
260 IF MID$(q$,i,1)=" " AND v$="" THEN v$=LEFT$(q$,i-1)
270 IF MID$(q$,i+1,1)<>" " AND v$<>"" THEN w$=MID$(q$,i+1,LEN(q$)-1):i=LEN(q$)
280 NEXT i
290 IF w$=""THEN v$=q$
300 FOR i=1 TO v
310 IF v$=v$(i) THEN vb=i
320 NEXT i
330 FOR i=1 TO w
340 IF w$=o$(i)THEN ob=i
350 NEXT i
360 IF w$>""AND eÇÅ'0!ƒôÆD¿Éé¿Nª@ªÆÿÿ▓Dfn`@Æî@∞─z`@¿Éè£@∞─z∞Vbfp`@Æî@εHzDD@¿Éè£@╥ôÇÖ$ƒ!003ƒ ƒ$	3öü(╠╥1J1│≤▒
r!{±üóB*qi!Θ╩z⌐
q:í9[ë!Y9hQíüüJ1│≤▒
r!{ΘüóB*qi!Θ╩z⌐"zq:íj
Z)Ü*rÜ)hQíëüJ1│π▒
r!{±ü
r!{π9Yë
r!Ch╠$|°9ü°£╚!∙ÖÇ∙9α	äⁿä╠ƒL|∙!î°î8äd$|∙ß	£°Hd∙ß	£°╠d°9ü°£╔╔αD∙αß┴!	äΣ╧D|°î8ä$$|∙°╠∙ü@╠ⁿ||||||||$<|d||ddLq,1140,1180,1280,1400,1430,1040,1490,1510,1525,1090,2195,1025,1220,1590
470 IF f(15)=1 THEN ll=ll-1
480 IF ll=0 THEN f(15)=0
490 GOTO 90
500 PRINT"WORDS I KNOW:"
510 FOR i=1 TO v
520 PRINT v$(i);",";
530 NEXT i
540 m$="":PRINT
550 GOSUB 1580
560 RETURN
570 PRINT"YOU ARE CARRYING:"
580 FOR i=1 TO g
590 IF c(i)=1 THEN PRINT o$(i);",";
600 NEXT i
610 m$="":PRINT
620 GOSUB 1580
630 RETURN
640 d=0
650 IF ob=0 THEN d=vb-3
660 IF ob=g+4 THEN d=1
670 IF ob=g+5 THEN d=2
680 IF ob=g+6 THEN d=3
690 IF ob=g+7 THEN d=4
700 IF ob=11 THEN GOTO 1430
710 IF ob=g+3 AND rm=30 THEN PRINT"SLEEP WELL": FOR i=1 TO 8450: NEXT i:CLS:FOR i=1 TO 4500: NEXT i:FOR i=1 TO 10:PRINT:NEXT i:PRINT"YAWN!": FOR i=1 TO 2400:NEXT i:m$="I FEEL BETTER NOW":RETURN
720 IF rm=64 THEN PRINT"YOU ARE STUCK AND SLOWLY SINKING IN THE MARSH":FOR i=1TO 2650:NEXT:PRINT"LOWER AND LOWER":FOR i=1 TO 1450:NEXT:PRINT"YOU DIE AS YOUR HEAD GOES UNDER":GOTO 2200
730 IF rm=11 AND ob=g+10 THEN m$="HOW SHALL I GET INSIDE?":RETURN
790 IF f(g+2)=0 AND rm=36 THEN m$="GHOSTS WILL NOT LET YOU MOVE":RETURN
820 IF (rm=65 OR rm=56 OR rm=57) AND c(11)=2 THEN m$="YOUR BOAT IS STUCK!":RETURN
830 IF c(11)=1 AND NOT rm=51 THEN m$="THE BOAT IS TOO HEAVY TO CARRY ANY FURTHER":RETURN
850 f(w+1)=0:rl=LEN(r$(rm))
860 FOR i=1 TO rl
870 u$=MID$(r$(rm),i,1)
880 IF u$="N" AND d=1 AND f(w+1)=0 THEN rm=rm -8:f(w+1)=1
890 IF u$="S" AND d=2 AND f(w+1)=0 THEN rm=rm +8:f(w+1 )=1
900 IF u$="W" AND d=3 AND f(w+1)=0 THEN rm=rm -1:f(w+1)=1
910 IF u$="E" AND d=4 AND f(w+1)=0 THEN rm=rm +1:f(w+1)=1
920 NEXT i
930 m$="OK"
940 IF f(w+1)=0THEN m$="CAN'T GO THAT WAY!"
950 IF d<1 THEN m$="GO WHERE?"
970 RETURN
980 IF rm=11 AND ob>g+11 THEN m$="THE "+w$+" IS OUT OF REACH":RETURN
985 IF ob>g THEN m$="I CAN'T GET "+w$:RETURN
990 IF f(ob) <>0 THEN m$="WHAT "+w$+"?"
995 IF l(ob) <> rm THEN m$="IT ISN'T HERE"
1000 IF c(ob)=1 THEN m$="YOU ALREADY HAVE IT"
1010 IF ob>0 AND l(ob)=rm AND f(ob)=0 THEN c(ob)=1:l(ob)=80:m$="YOU HAVE THE "+w$
1015 IF rm=41 AND f(g+1)=0 THEN m$="BATS ARE ATTACKING YOU":c(7)=0:l(7)=41
1020 RETURN:REM l(ob) set to 80 after getting object
1025 IF ob=15 AND c(15)=1 THEN f(15)=1:ll=15:m$="I'M PISHED"
1030 RETURN
1040 IF rm=9 AND ob=g+8 AND c(6)=1 THEN r$(rm)="E":m$="YOU PICKED THE LOCK":d$(9)="CELL WITH OPEN DOOR"
1050 RETURN
1060 IF rm=11 AND ob=g+10 THEN m$="YOU CAN SEE A WHITE PAPER ROLL BEHIND THE BARS"
1061 IF rm=18 AND ob=g+15 THEN m$="THERE IS NOTHING HERE"
1062 IF rm=28 AND ob=g+16 THEN m$="PHEW IT'S PONGY IN THESE DRAWERS"
1063 IF rm=34 AND ob=g+17 THEN m$="THE DINNER IS BURNT!"
1065 IF rm=25 AND ob=g+14 THEN m$="THERE IS SOME VODKA HERE":l(15)=25
1070 IF ob=14 AND rm=9 THEN l(6)=9:m$="SOMETHING'S HERE"
1075 GOSUB 1140
1080 RETURN
1090 IF ob=11 AND rm=56 OR rm=57 THEN c(11)=0:l(11)=rm:RETURN
1100 IF c(11)=2 AND ob=11 AND NOT( rm=56 orrm=57) THEN PRINT"YOU FLOUNDER IN THE WATER":FOR i=1 TO 650:NEXT:PRINT"YOU GASP FOR BREATH":FOR i=1 TO 450:NEXT: PRINT"YOU HAVE DROWNED!":PRINT"YOUR SCORE IS ZERO":GOTO 2200
1120 m$="YOU DON'T HAVE A KEY":RETURN
1140 IF c(1)=1 AND ob=1 THEN m$="USE THIS WORD WITH CARE 'LYMPHOID'":c(g+9)=1: RETURN
1150 IF rm=(44)THEN m$="THE BOOKS REVEAL NOTHING": RETURN
1155 IF ob=17 AND c(17)=1 THEN GOSUB 4000:m$="":RETURN
1160 IF ob=4 AND c(4)=1 THEN m$="THE SCRIPT IS IN AN ALIEN TONGUE": RETURN
1165 IF ob=8 AND c(8)=1 THEN m$="BATICIDE - use with care": RETURN
1170 IF vb=11 THEN m$="THERE ARE NO WORDS TO READ": RETURN
1175 RETURN
1180 m$="OK '"+w$+"'"
1190 IF ob=g+9 AND c(1)=1 AND c(g+9)=1 THEN m$="*MAGIC OCCURS*":IF rm<>43 THEN rm=RND(34)+8:IF rm/8=INT(rm/8) OR (rm+1)/8=INT((rm+1)/8)THEN rm=rm+2
1200 IF ob=g+9 AND c(1)=1 AND c(g+9)=1 AND rm=43 THEN r$(43)="NS"
1210 RETURN
1220 IF ob=16 AND c(16)=1 THEN m$="THATS BETTER, I FEEL FULL NOW":c(16)=0:l(16)=80:RETURN
1225 IF c(16)=0THEN m$="YOU AREN'T CARRYING ANY SANDWICHES"
1230 RETURN
1280 IF ob=12 AND c(12)=1 AND rm=11 THEN r$(11)="SEW":m$="YOU BROKE THE THIN BARS OF THE DOOR"
1285 IF ob=12 AND c(12)=1 AND rm=46 THEN r$(46)="NW":d$(46)="LIBRARY WITH SECRET ROOM":m$="YOU BROKE THE THIN WALL"
1290 RETURN
1400 IF c(8)=1 AND rm<>41 THEN m$="HISSS"
1410 IF ob=g+1 AND c(8)=1 AND rm=41 AND f(g+1)=0 THEN f(g+1)=1:m$="PFFFT! GOT THEM":l(g+1)=80
1420 RETURN
1430 IF ob=9 AND c(9)=1 AND c(10)=0 AND c(13)=1 THEN m$="YOUR BATTERIES ARE FLAT":RETURN
1434 IF ob=9 AND c(9)=1 AND c(10)=1 THEN m$="SWITCHED ON!":f(10)=1:c(10)=0:c(13)=1
1435 IF f(10)=1 AND f(g+2)=0 THEN m$="WHIZZZ - VACUUMED THE GHOSTS UP!":f(g+2)=1:l(g+2)=80:RETURN
1440 IF ob=11 AND c(7)=1 AND rm=52 THEN m$="YOU MAY PUSH OFF NOW":r$(52)="SEW":l(11)=63:c(11)=2
1442 IF ob=11 AND c(7)=1 AND rm=63 THEN m$="YOU MAY PUSH OFF NOW":r$(63)="NSW":l(11)=52:c(11)=2
1445 IF ob=11 AND c(7)=0  THEN m$="YOU HAVE NO OARS"
1450 RETURN
1490 IF c(ob)=1 THEN c(ob)=0:l(ob)=rm:m$="DONE"
1500 RETURN
1510 m$="YOU ARE FAR TOO AGGRESIVE"
1515 IF c(5)=1 THEN m$="BE CAREFUL YOU MIGHT CUT YOURSELF"
1520 RETURN
1525 s=0
1530 FOR i=1 TO m
1535 IF c(i)=1 THEN s=s+1
1540 NEXT i
1550 IF rm<>67 AND s=m THEN PRINT"YOU HAVE EVERYTHING. PLEASE GO HOME"
1560 IF rm=67 AND s=m THEN PRINT"DOUBLE SCORE FOR REACHING HERE WITH ALL THE TREASURES!":s=s*2
1570 PRINT"YOUR SCORE IS ";s:IF s>m THEN PRINT"WELL DONE! YOU FINISHED THE GAME":FOR t=1 TO 5000:NEXT t:END
1580 INPUT"PRESS CARRIAGE RETURN WHEN YOU ARE READY";nl
1590 RETURN
1600 DIM r$(71),d$(71),o$(w),v$(v)
1610 DIM c(w),l(w),f(w+1)
1620 DATA 38,14,37,12,33,80,41,13,27,17,51,20,80,9,80,41,9
1625 DATA 41,36,30,80,80,80,80,80,80,80,80,80,80,25,18,28,34
1630 FOR i=1 TO w
1640 READ l(i)
1650 NEXT i
1660 DATA HELP,CARRYING,GO,N,S,W,E,"GET",LOOK,"OPEN","READ",SAY
1665 DATA SWING,SPRAY,USE,PICK,DROP,ATTACK,SCORE,LEAVE,"QUIT",DRINK,EAT
1680 FOR i=1 TO v
1690 READ v$(i)
1700 NEXT i
1710 DATA SE,WE,WE,WE,WE,WE,WE,WS
1720 DATA NS,,WE,SW,W,SE,W,NS
1730 DATA NS,SE,SEW,NSEW,WSE,NSEW,SW,NS
1740 DATA NS,NE,NSW,NS,NE,WEN,NW,NS
1750 DATA NS,E,NSEW,NSEW,SEW,SW,S,NS
1760 DATA NS,E,NW,N,NE,WEN,W,NS
1770 DATA NES,SEW,SW,NE,W,SEW,SEW,NSE
1780 DATA SE,SW,NWE,WE,NWE,NWE,NWE,S
1785 DATA NE,WEN,EW,EW,EW,EW,EW,NW
1790 FOR i=0 TO 71
1800 READ r$(i)
1810 NEXT i
1820 DATA MOAT BY TOWER,MOAT,MOAT,MOAT,MOAT,MOAT,MOAT,MOAT BY TOWER
1825 DATA MOAT BY TOWER,"CELL WITH THICK WOODEN DOOR IN EAST WALL",GUARD ROOM,"LARGE ROOM WITH CAGE",INSIDE CAGE,BATHROOM,TOILET,MOAT
1830 DATA MOAT,DINING ROOM,DINING ROOM BY TABLE,BACK HALL,BEDROOM,BEDROOM,BEDROOM,MOAT
1833 DATA MOAT,DINING ROOM BY SIDEBOARD,DINING ROOM,GLOOMY PASSAGE,BEDROOM,BEDROOM,"BEDROOM AT FOOT OF BED",MOAT
1835 DATA MOAT,KITCHEN,KITCHEN,FRONT HALL,LIBRARY,LIBRARY BY DESK,SECRET ROOM,MOAT
1840 DATA MOAT,LARDER,KITCHEN,"FRONT LOBBY WITH SHIMMERING WALL TO THE SOUTH","LIBRARY WITH BOOKS",LIBRARY,"LIBRARY WITH SMALL HOLE IN WALL",MOAT
1845 DATA MOAT BY TOWER,MOAT BY MARSH,MOAT,PORTCULLIS,SHALLOW WATER,MOAT,MOAT,MOAT BY JETTY
1850 DATA MARSH,MARSH,MOAT BY DRY LAND,DEEP WATER,DEEP WATER,MOAT BY LAND,MOAT BY JETTY,JETTY
1856 DATA  MARSH,MARSH BY LAND,WET MUDDY PATCH,"DRIVEWAY WITH GATE",GRASSLAND,MUDDY PATCH,WET MUDDY PATCH,DRY LAND
1980 FOR i=0 TO 71
1990 READ d$(i)
2000 NEXT i
2010 DATA MAGIC SPELLS,COINS,PAINTING,"SCROLL"
2020 DATA CARVING KNIFE,PIN,OARS,AEROSOL,VACUUM,BATTERIES,BOAT,AXE,FLAT BATTERIES,BLANKETS,VODKA,FOOD,PARCHMENT
2030 DATA BATS,GHOSTS,BED,NORTH,SOUTH,WEST,EAST,LOCK,LYMPHOID,CAGE,DOOR,PAPER,ROLL,SIDEBOARD,TABLE,DRESSING TABLE,GRIMY COOKER
2060 FOR i=1 TO w
2070 READ o$(i)
2080 NEXT i
2090 rm=9 :m$="OK":f(g+4)=1:f(g+5)=1:f(g+6)=1:f(g+7)=1:f(13)=1
2100 RETURN
2195 GOSUB 1525
2200 INPUT "DO YOU WANT ANOTHER GAME (Y OR N)";u$
2210 IF u$="N"OR u$="n" THEN PRINT"THANKS FOR PLAYING":PRINT:END
2220 GOTO 60
3000 WINDOW #1 FULL
3001 WINDOW OPEN
3003 WINDOW TITLE "Prisoner's Escape"
3004 PRINT
3005 PRINT, COLOUR(2);ADJUST(16);"      PRISONER'S ESCAPE"
3010 PRINT, COLOUR(4);"           By Matthew Robinson"
3020 PRINT, COLOUR(7);"                 ╜ 1987"
3030 PRINT
3040 PRINT
3050 PRINT, COLOUR(8); "ENTER (N)orth, (S)outh, (E)ast OR (W)est TO MOVE"
3060 PRINT, COLOUR(11);"IF YOU ARE STUCK TRY HELP OR IF YOU CAN'T ESCAPE "
3070 PRINT, COLOUR(14);"A SITUATION ENTER QUIT"
3080 PRINT"                     I HOPE YOU ESCAPE"
3090 PRINT"                     GOOD LUCK!!"
3100 PRINT"                     PRESS (";COLOUR(2);"S";COLOUR(1);") TO START";
3105 q$=INKEY$:IF q$="" THEN 3105
3110  RETURN
4000 CLS :PRINT: PRINT "WHEN YOU LOOK AT THE PARCHMENT YOU SEE IT WAS WRITTEN IN BLOOD"
4001 PRINT"THE PARCHMENT READS AS FOLLOWS:"
4002 PRINT
4005 PRINT;COLOUR(2);"   This program was written while I was undergoing"
4010 PRINT;COLOUR(2);" treatment for Leukaemia and I couldn't go to school."
4020 PRINT;COLOUR(2);" If you enjoy this program would you please make"
4030 PRINT;COLOUR(2);"            a small donation to the: "
4035 PRINT
4040 PRINT;COLOUR(2);"            Leukaemia Research Fund"
4050 PRINT;COLOUR(2);"            43 Gt.Ormond St."
4060 PRINT;COLOUR(2);"            London WC1N 3JJ."
4070 PRINT;COLOUR(2);"             (01-405-0101)"
4075 PRINT
4080 PRINT;COLOUR(2);"       Please mention my name:-"
4085 PRINT;COLOUR(2);"          Matthew  Robinson"
4086 PRINT;COLOUR(2);"     and say it is in respect of this program"
4090 PRINT:PRINT;COLOUR(1)
4095 FOR x= 1 TO 65000 : NEXT x
4100 RETURN