home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / games / basic-1.zip / MARS-ESC.BAS < prev    next >
BASIC Source File  |  1986-05-20  |  13KB  |  228 lines

  1. 10 DEFINT A-Z:KEY OFF:CLS:COLOR 10,0:RANDOMIZE VAL(RIGHT$(TIME$,2))
  2. 20 PRINT TAB(12);"Welcome to the ESCAPE FROM MARS Adventure":PRINT:PRINT
  3. 30 INPUT "Do you need the instructions";A$:A$=LEFT$(A$+" ",1)
  4. 40 IF A$="y" OR A$="Y" THEN GOSUB 2100 ELSE PRINT
  5. 50 DIM D$(18),O$(54),L(48),P(18,6),W(11):L=1:L2=1:BS$=CHR$(29)
  6. 60 FOR X=1 TO 18:READ D$(X):NEXT
  7. 70 DATA Control Room,Engine Room,Barren Field,Moat
  8. 80 DATA Plaza,Ancient Temple,Dry Well,Deserted Room,Garden
  9. 90 DATA Observatory,Kitchen (I Think),Maze of Halls
  10. 100 DATA Dank Cellar,Secret Passage
  11. 110 DATA Xptl's Shop of Mating Scents,Martian Habitat
  12. 120 DATA Ledge Overlooking the city,Sandsled
  13. 130 FOR X=1 TO 54:READ O$(X):IF X>6 THEN READ L(X-6)
  14. 140 NEXT :DATA North,South,East,West,Up,Down
  15. 150 DATA Net,2,Fast-Gro,20,Holy Grail,5,Seeds,20
  16. 160 DATA Alchohol,20,Brass Tubing,13,Sculpture of Violin Player,3
  17. 170 DATA Gold Bars,13,Torch,6
  18. 180 DATA Injector Pump,7,Harmonica,20,Lighter,20,Sneakers,19,Table,15
  19. 190 DATA Helmet,20,Martian,20,Timepiece,19,Bill of materials for Still,19
  20. 200 DATA Jeweled Club,18,Oxygen Tank,19
  21. 210 DATA Air-Rocks,3,Flask,15,Textbook,1,Crate (closed),2
  22. 220 DATA Trapdoor (open),20,Mirror on Wall,8
  23. 230 DATA Rope,17,Sign,5,Rug,8,Water,4,Organ,8,Fire,20
  24. 240 DATA [Sign] USE FERTILIZER,9
  25. 250 DATA Button (red push type),1,Sandsled,3,Oven,11,Kettle,11
  26. 260 DATA Control Panel,1,"Rack with sign: PLACE INJECTOR HERE",2
  27. 270 DATA "Outside Oxygen: .15 atm",2,Recharging Station,2,Statue of Venus?,6
  28. 280 DATA Ramp,7,Locker,2,Dry Well,6,Viewport,1,"[Sign] BRING FUEL HERE",2
  29. 290 DATA pockets,20
  30. 300 FOR Y=1 TO 18:FOR X=1 TO 6:READ P(Y,X):NEXT X,Y
  31. 310 DATA ,,,,,2,,,3,,1,,4,4,5,2,,,3,3,4,4,4,4
  32. 320 DATA 6,15,8,3,,,,5,9,,,,,,12,,,
  33. 330 DATA ,,,5,,,,,,6,,,,,,17,
  34. 340 DATA 14,,16,,,,,,,,,,,,,12,,,
  35. 350 DATA ,,,10,,8,5,,,,16,,11,,,,,15
  36. 360 DATA ,,10,,,,,,,,,3
  37. 370 FOR X=1 TO 11:READ W(X):NEXT
  38. 380 DATA 0,27,0,17,27,27,17,7,17,27,17
  39. 390 FOR X=1 TO 9:READ S:S$=S$+CHR$(S+61):NEXT X
  40. 400 DATA 5,8,8,23,11,18,25,8,17
  41. 410 W$="GO GETLOODROHITOPETIELIGUNLPUSPLA...CATREA...BRE......IGNEXT"
  42. 420 N$="N  01S  02E  03W  04U  05D  06GRA09WHE10TUB12PUM16CLU25TAN26"
  43. 430 O$=   "NOR SOU EAS WES UP  DOW NET FAS HOL SEE ALC BRA SCU GOL TOR INJ "
  44. 440 O$=O$+"HAR LIG SNE TAB HEL MAR TIM BIL JEW OXY AIR FLA TEX CRA TRA MIR "
  45. 450 O$=O$+"ROP SIG RUG WAT ORG FIR SIG BUT SAN OVE KET CON RAC LOW REC STA "
  46. 460 O$=O$+"RAM LOC WEL VIE SIG POC"
  47. 470 GOTO 800
  48. 480 IF L=12 THEN FOR X=1 TO 6:P(12,X)=0:NEXT:P(12,INT(2*RND(8))+1)=13
  49. 490 IF L(15)<>0 THEN L(30)=4
  50. 500 P(12,(INT(RND(8)* 2)+3))=7:IF L=2 THEN O=0
  51. 510 G=G+1:IF G<60 OR RND(8)<.9 OR L(16)<>20 THEN 540
  52. 520 X=INT(RND(8)*31):IF L(X)<>0 AND L(X)<>20 THEN L(X)=INT(RND(8)*18)+1
  53. 530 PRINT "I hear a faint rustling sound."
  54. 540 IF RND (8)>.9799999 AND L(16)=20 THEN PRINT "I think you're being watched!"
  55. 550 IF L>2 THEN O=O+1:IF O>50 THEN PRINT "Low Oxygen Warning - RECHARGE"
  56. 560 IF L>2 AND L(20)<>0 THEN O=O+7
  57. 570 IF O>63 AND L>2 THEN COLOR 0,7                                                  :PRINT "Gasp, Gasp, You died from lack of air.";:GOTO 2030
  58. 580 IF L(4)<>11 OR L(6)<>11 OR L(32)<>11 OR L(30)<>11 OR GR=0 THEN 600
  59. 590 O$(43)="Still":IF L(5)=20 THEN L(5)=11
  60. 600 S=0:F=0:COLOR 10,0:PRINT:INPUT "What do you want to do";A$:PRINT:COLOR 2
  61. 610 AA$=A$:B$="   ":FOR X=1 TO LEN(A$)
  62. 620 IF MID$(A$,X,1)=" " THEN B$=MID$(A$+"   ",X+1,3)
  63. 630 NEXT
  64. 640 IF LEN(A$)=1 THEN B$=A$+"  ":A$="GO "
  65. 650 GOSUB 1950:L2=L
  66. 660 IF L(4)=9 AND L(30)=9 AND L(2)=9 THEN GR=1:O$(10)="Wheat":L(30)=4
  67. 670 X=INSTR(N$,B$):IF X MOD 5 = 1 THEN S=VAL(MID$(N$,X+3,2)):GOTO 690
  68. 680 X=INSTR(O$,B$):IF X MOD 4 = 1 THEN S=(X+3)/4
  69. 690 X=INSTR(W$,A$):IF X MOD 3=1 THEN F=(X+2)/3
  70. 700 IF F>11 THEN F=F-11
  71. 710 IF A$="INV" THEN 1060
  72. 720 IF S<W(F) MOD 10 THEN PRINT"I don't understand that word!":GOTO 480
  73. 730 IF INT(W(F)/10)=1 THEN IF L(S-6)<>0 THEN PRINT "You don't have it!":GOTO 480
  74. 740 IF W(F)>20 THEN IF L(S-6)<>L THEN PRINT "The "O$(S)" isn't here!":GOTO 480
  75. 750 ON F GOTO 780,870,1100,1290,1470,1540,1580,1640,1730,1750,1810
  76. 760 PRINT"I don't know how to do that!":GOTO 480
  77. 770 -GO <DIRECTION>-
  78. 780 IF S<1 OR S>6 OR L=6 AND S=4 THEN 1330
  79. 790 IF P(L,S)>0 THEN L=P(L,S):L2=L
  80. 800 COLOR 2,0:PRINT "You are in the ";D$(L):Y=0
  81. 810 IF LI=0 AND (L=7 OR L=13 OR L=14) THEN PRINT "Its dark. You can't see!"         :GOTO 480
  82. 820 PRINT "You see: ";:FOR X=1 TO 47:IF L(X)=L2 THEN PRINT O$(X+6);", ";:Y=Y+1
  83. 830 NEXT:IF Y=0 THEN PRINT "nothing" ELSE PRINT BS$BS$" "
  84. 840 PRINT "Obvious exits are: ";:FOR X=1 TO 6:IF P(L,X)>0 THEN PRINT O$(X);" ";
  85. 850 NEXT:PRINT:GOTO 480
  86. 860 REM -GET-
  87. 870 IF S=11 OR S=22 THEN 960
  88. 880 IF C>6 THEN PRINT "You can't carry any more.":GOTO 480
  89. 890 IF S>37 THEN PRINT "You can't get that.":GOTO 480
  90. 900 IF S>31 THEN ON S-31 GOTO 920,930,940,950,960
  91. 910 L(S-6)=0:C=C+1:PRINT "You got the "O$(S)".":GOTO 480
  92. 920 PRINT "It's glued to the wall, but it's fragile.":GOTO 480
  93. 930 PRINT "The sign fell.":L(27)=0:GOTO 480
  94. 940 PRINT "Its tied to a ledge on the second floor.":GOTO 480
  95. 950 L(29)=0:IF L=8 THEN PRINT "AHA!":L(25)=8:GOTO 480
  96. 960 V$="In":GOSUB 1980:IF W<7 THEN S=W:GOTO 720 ELSE IF L(W-6)<>0 THEN 1270
  97. 970 IF S<>22 THEN 990
  98. 980 IF W<>7 THEN PRINT "He got away.":L(16)=20:M=0:GOTO 480                         ELSE O$(7)="Netfull of Martian":M=5:L(16)=21:L(15)=L:                           PRINT "You caught the Martian.":GOTO 480
  99. 990 IF S<>11 THEN 1010 ELSE IF W<>28 THEN PRINT "It evaporated.":GOTO 480
  100. 1000 IF L(22)=0 THEN C=C-1:GOTO 910 ELSE 1040
  101. 1010 IF W=28 THEN PRINT "The flask dissolved.":L(22)=15:GOTO 480
  102. 1020 IF W=9 THEN PRINT "The Water leaked out; Its a Holey Grail.":GOTO 480
  103. 1030 IF W=21 THEN C=C-1:GOTO 910
  104. 1040 PRINT "I don't think that will work.":GOTO 480
  105. 1050 REM -INVENTORY-
  106. 1060 PRINT "You're carrying: ";:Y=0:FOR X=1 TO 34
  107. 1070 IF L(X)=0 THEN PRINT O$(X+6)", ";:Y=Y+1
  108. 1080 NEXT:IF Y=0 THEN PRINT "nothing.":GOTO 480 ELSE PRINT BS$BS$".":GOTO 480
  109. 1090 REM -LOOK-
  110. 1100 IF S<7 THEN 800
  111. 1110 IF (S=29 OR S=24 OR S=9 OR S=23 OR S=21) AND L(S-6)<>0 THEN 1270
  112. 1120 IF S<>32 OR L<>8 THEN 1140
  113. 1130 PRINT "You see a rugged person in a pocketed survival suit.":GOTO 480
  114. 1140 IF S<>54 OR L(11)<>20 THEN 1160
  115. 1150 PRINT "A harmonica and a lighter.":L(11)=0:L(12)=0:GOTO 480
  116. 1160 IF S=51 AND L=6 THEN PRINT "There is something here.":GOTO 480
  117. 1170 IF S=34 THEN PRINT "Earthie go home!!":GOTO 480
  118. 1180 IF S=41 AND L=3 THEN L2=18:GOTO 820
  119. 1190 IF S=52 AND L=1 THEN L2=3:GOTO 820
  120. 1200 IF S=9 THEN PRINT "Seeds!":L(4)=L:GOTO 480
  121. 1210 IF S<>29 THEN 1230
  122. 1220 PRINT "Suggested fuel: Hydrazine or Alchohol.":GOTO 480
  123. 1230 IF S=24 THEN PRINT "Water, Pot, Tubing, Fire, Grain":GOTO 480
  124. 1240 IF S=23 THEN PRINT 60-O"Min. of air left.":GOTO 480
  125. 1250 IF S=21 THEN PRINT "[Inscription] NH2NH2  ..._  Music":GOTO 480
  126. 1260 PRINT "You see nothing special.":GOTO 480
  127. 1270 PRINT "You don't have it.":GOTO 480
  128. 1280 REM -DROP-
  129. 1290 IF S=35 AND L=8 THEN L(25)=20
  130. 1300 IF RIGHT$(O$(S),1)="s" THEN V$=" are" ELSE V$=" is"
  131. 1310 L(S-6)=L:C=C-1:PRINT "Okay, the "O$(S)V$" in the "D$(L)".":GOTO 480
  132. 1320 REM -GO <place>-
  133. 1330 IF S=41 AND L=3 THEN L=18:L2=L:GOTO 800
  134. 1340 IF S<>51 OR L<>6 THEN 1370
  135. 1350 IF R=48 THEN L=7:L2=L:GOTO 800
  136. 1360 COLOR 7,0:PRINT"You fell in and died.";:GOTO 2030
  137. 1370 IF S=31 AND L(25)=8 AND L(13)<>0 THEN 1440
  138. 1380 IF S=31 AND L=8 THEN L=7:L2=L:GOTO 800
  139. 1390 IF S<>49 OR L<>7 THEN 1430
  140. 1400 IF L(29)=8 THEN PRINT "It's blocked":GOTO 480
  141. 1410 IF C>1 THEN PRINT "You're carrying too much.":GOTO 480
  142. 1420 L=8:L2=L:GOTO 800
  143. 1430 PRINT "You can't go there!":GOTO 480
  144. 1440 COLOR 7,0:PRINT "You slipped down the ramp and died.";:GOTO 2030
  145. 1450 GOTO 480
  146. 1460 REM -HIT-
  147. 1470 V$="With":GOSUB 1980:IF W<7 THEN S=W: GOTO 720 ELSE IF L(W-6)<>0 THEN 1270
  148. 1480 IF S=22 THEN M=0:PRINT"The Martian uttered an untranslatable obscenity,"        :PRINT"  took your "O$(W)", and disappeared!":L(16)=20:L(W-6)=7:GOTO 480
  149. 1490 V$="Nothing happened":IF W<>25 THEN 1520
  150. 1500 IF S=32 THEN O$(32)="Broken Mirror":P(8,5)=14:V$="You shattered it!"
  151. 1510 IF S=30 THEN O$(30)="Splinters":L(2)=L:V$="The crate is smashed!"               :MID$(O$,117,3)="SPL"
  152. 1520 PRINT V$:GOTO 480
  153. 1530 REM -OPEN-
  154. 1540 IF S<>50 OR L<>2 THEN S=0:GOTO 1750
  155. 1550 FOR X=1 TO 40:IF L(X)=19 THEN L(X)=2
  156. 1560 NEXT:PRINT "The locker is open.":GOTO 480
  157. 1570 REM -TIE-
  158. 1580 IF S<>33 THEN 1620
  159. 1590 V$="To":GOSUB 1980:S=W:IF W<7 THEN 720 ELSE IF L(W-6)<>L THEN 730
  160. 1600 IF W=51 THEN 1620 ELSE R=W:L(27)=L:IF W=48 THEN P(6,6)=7:P(7,5)=6
  161. 1610 PRINT "The rope is tied to the "O$(W):GOTO 480
  162. 1620 PRINT "You can't do that!":GOTO 480
  163. 1630 REM -LIGHT-
  164. 1640 IF L(12)<>0 THEN PRINT "No lighter.":GOTO 480
  165. 1650 IF S=15 AND L(9)=0 THEN LI=1:PRINT "The torch is lit.":GOTO 480
  166. 1660 IF S<>38 AND S<>30 AND S<>20 THEN 1620
  167. 1670 IF L<>11 THEN PRINT "Not here, it ain't safe.":GOTO 480
  168. 1680 IF L(21)<>11 THEN PRINT "There's no air.":GOTO 480
  169. 1690 IF L(14)<>11 AND L(24)=11 THEN PRINT "The fire burned the ";O$(30);             " and then went out.": L(24)=20: GOTO 480
  170. 1700 IF L(14)<>11 THEN PRINT "Don't have enough wood.":GOTO 480
  171. 1710 L(32)=11:PRINT "A cheery fire is now blazing.":GOTO 480
  172. 1720 REM -UNLIGHT-
  173. 1730 IF S=15 THEN LI=0:PRINT "The torch is out":GOTO 480 ELSE 1620
  174. 1740 REM -PUSH-
  175. 1750 X=0:IF S<>40 THEN PRINT "Nothing happened.":GOTO 480
  176. 1760 IF L(5)<>2 AND (L(7)<>2 OR LEFT$(O$(13),1)<>"H") THEN                           PRINT "Fuel gauges: EMPTY.":X=1
  177. 1770 IF L(10)<>2 THEN PRINT ;"Computer reports: No injector pump.":X=1
  178. 1780 IF L(8)<3 OR L(19)<3 THEN PRINT "Too heavy for Take-Off.":GOTO 480
  179. 1790 IF X=0 THEN 1920 ELSE 480
  180. 1800 REM -PLAY-
  181. 1810 IF S<>17 THEN 1620 ELSE IF L(16)<>21 THEN 1880
  182. 1820 IF L(7)<>6 OR L<>6 THEN 1750
  183. 1830 COLOR 10:PRINT TAB(40);CHR$(30);CHR$(30);"-- What song";:INPUT A$
  184. 1840 FOR X=1 TO LEN(A$):CH=ASC(MID$(A$,X,1)):MID$(A$,X,1)=CHR$(CH+32*(CH>96))
  185. 1850 NEXT:X=INSTR(A$,S$):COLOR 2:IF X=0 THEN                                         PRINT:PRINT "I'don't know that one. Could you hum a few bars?":GOTO 480
  186. 1860 O$(13)="Hydrazine Cylinder":MID$(O$,49,3)="HYD":PLAY"O2L8EEEL3C"
  187. 1870 PRINT:PRINT"The sculpture shattered into dust.":GOTO 480
  188. 1880 M=M+1:IF M=1 THEN PRINT "Rustling is getting louder.":GOTO 480
  189. 1890 IF M=2 THEN PRINT "I hear footsteps.":GOTO 480
  190. 1900 PRINT "A Martian just walked into the room!!!":L(16)=L:GOTO 480
  191. 1910 REM -TAKEOFF!-
  192. 1920 FOR X=1 TO 40:PRINT TAB(X)"WHWHOOOSHSHSH":NEXT
  193. 1930 PRINT "CONGRATULATIONS ON A SUCCESSFULL MISSION":GOTO 2030
  194. 1940 REM - MAKE INPUT U/C -
  195. 1950 A$=LEFT$(A$+"   ",3):FOR I=1 TO 3
  196. 1960 CH=ASC(MID$(A$,I,1)):MID$(A$,I,1)=CHR$(CH+32*(CH>96))
  197. 1970 CH=ASC(MID$(B$,I,1)):MID$(B$,I,1)=CHR$(CH+32*(CH>96)):NEXT:RETURN
  198. 1980 REM - GET "WHAT" -
  199. 1990 COLOR 10:PRINT TAB(40);CHR$(30);CHR$(30);"-- "V$" what";:INPUT A$
  200. 2000 GOSUB 1950:W=0:X=INSTR(O$,A$):IF X MOD 4=1 THEN W=((X+3)/4):GOTO 2020
  201. 2010 X=INSTR(N$,A$):IF X MOD 5=1 THEN W=VAL(MID$(N$,X+3,2))
  202. 2020 COLOR 2:PRINT:RETURN
  203. 2030 COLOR 10,0:PRINT:PRINT:INPUT "Would you like to try again";A$:GOSUB 1950
  204. 2040 IF LEFT$(A$,1)="Y" THEN RUN
  205. 2050 IF LEFT$(A$,1)="R" THEN O=0:GOTO 600
  206. 2060 PRINT:PRINT"Please leave 25 cents on the console for playing this game."
  207. 2070 FOR I=1 TO 2000:NEXT:PRINT:INPUT"Hey!, did you leave the quarter for me";A$
  208. 2080 IF LEFT$(A$,1)<>"Y" THEN PRINT "You cheapskates are always cheating me!!"       ELSE PRINT "You did not, you lying cheapskate!!"
  209. 2090 KEY ON:END
  210. 2100 PRINT:PRINT:COLOR 2
  211. 2110 PRINT "ESCAPE FROM MARS has a concealed goal.  You learn what the goal is"
  212. 2120 PRINT "by exploring your surroundings.  The computer will act as your eyes"
  213. 2130 PRINT "and hands.  It will accepts short phrases as commands and assumes"
  214. 2140 PRINT "that the first word is a verb and the lst word is the object."
  215. 2150 PRINT "For example: READ THE SIGN.  The computer has a vocabulary of about"
  216. 2160 PRINT "120 words.  Some of the more important words you should know before"
  217. 2170 PRINT "you start playing are: GET <object>, DROP <object>, LOOK <object>"
  218. 2180 PRINT "or just LOOK, GO <direction> or <place>, and INVENTORY (tells what"
  219. 2190 PRINT "you are carrying).  The computer knows the abbreviations: E, W, N,"
  220. 2200 PRINT "S, U and D for GO EAST, GO WEST, etc.":PRINT
  221. 2210 PRINT "The computer's vocabulary is good, but limited.  If you are having"
  222. 2220 PRINT "trouble doing something, try re-phrasing the command or you may"
  223. 2230 PRINT "need some object to accomplish the task.  By the way, the computer"
  224. 2240 PRINT "only looks at the first 3 letters of each word.":PRINT
  225. 2250 COLOR 10:PRINT:PRINT TAB(25)"--- GOOD LUCK! ---":PRINT:RETURN
  226. 2260 PLAY"o2l8eeel3c"
  227. 2270 'Last Line of MARSESC.BAS
  228.