home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib24b.dsk / ACS.PLAYER.bas next >
BASIC Source File  |  2023-02-26  |  9KB  |  217 lines

  1. 10  REM  **********************
  2. 20  REM  *     ACS.PLAYER     *
  3. 30  REM  *  BY JENNY SCHMIDT  *
  4. 40  REM  * COPYRIGHT (C) 1985 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * CONCORD, MA  01742 *
  7. 70  REM  **********************
  8. 80  DIM D$(100),N%(100),S%(100),E%(100),W%(100),U%(100),D%(100),CT%(750),A$(750),O$(300),V%(300),R%(300),C$(400),CC%(400),F(99)
  9. 90 D$ =  CHR$(4)
  10. 100  HOME : VTAB 2: HTAB 15: PRINT "ACS.PLAYER": VTAB 3: HTAB 12: PRINT "BY JENNY SCHMIDT": VTAB 5: PRINT "** COPYRIGHT 1985 BY MICROSPARC, INC **": VTAB 12
  11. 110  PRINT "ADVENTURE NAME (? FOR CATALOG): ": INPUT "";N$
  12. 120  IF  LEFT$(N$,1) = "?"  THEN  HOME : PRINT D$"CATALOG": PRINT "PRESS ANY KEY WHEN READY": GET T$: GOTO 110
  13. 130  ONERR  GOTO 2020
  14. 140 ES$ = "DESCRIPTION"
  15. 150  PRINT D$;"OPEN DES.";N$: PRINT D$;"READ DES.";N$
  16. 160  INPUT A
  17. 170  FOR W = 1 TO A
  18. 180  INPUT D$(W): INPUT N%(W): INPUT S%(W): INPUT E%(W): INPUT W%(W): INPUT U%(W): INPUT D%(W)
  19. 190  NEXT W
  20. 200  PRINT D$;"CLOSE DES.";N$
  21. 210 ES$ = "USER-PROMPTED ACTIONS"
  22. 220  PRINT D$;"OPEN USR.";N$
  23. 230  PRINT D$;"READ USR.";N$
  24. 240  INPUT B
  25. 250  FOR W = 1 TO B
  26. 260  INPUT A$(W): INPUT CT%(W)
  27. 270  NEXT W
  28. 280  PRINT D$;"CLOSE USR.";N$
  29. 290 ES$ = "NON-USER-PROMPTED ACTION"
  30. 300  PRINT D$;"OPEN NUP.";N$
  31. 310  PRINT D$;"READ NUP.";N$
  32. 320  INPUT C
  33. 330  FOR W = 1 TO C
  34. 340  INPUT C$(W): INPUT CC%(W)
  35. 350  NEXT W
  36. 360  PRINT D$;"CLOSE NUP.";N$
  37. 370  INPUT "DO YOU WANT TO LOAD A PREVIOUSLY SAVED  GAME?";Q$: IF  LEFT$(Q$,1) = "N"  THEN 510
  38. 380  ONERR  GOTO 2000
  39. 390  PRINT D$"VERIFY SAV."N$
  40. 400  PRINT D$;"OPEN SAV.";N$: PRINT D$;"READ SAV.";N$
  41. 410  FOR W = 0 TO 99
  42. 420  INPUT F(W)
  43. 430  NEXT W
  44. 440  INPUT N1
  45. 450  FOR W = 1 TO N1
  46. 460  INPUT O$(W): INPUT V%(W): INPUT R%(W)
  47. 470  NEXT W: INPUT R: INPUT T
  48. 480  PRINT D$;"CLOSE SAV.";N$: GOTO 610
  49. 490  ONERR  GOTO 2020
  50. 500 ES$ = "OBJECTS"
  51. 510  PRINT D$;"OPEN OBJ.";N$: PRINT D$;"READ OBJ.";N$
  52. 520  INPUT N1
  53. 530  FOR W = 1 TO N1
  54. 540  INPUT O$(W): INPUT V%(W): INPUT R%(W)
  55. 550  NEXT W
  56. 560  PRINT D$;"CLOSE OBJ.";N$
  57. 570  POKE 216,0
  58. 580  FOR W = 1 TO N1: IF R%(W) = 1  THEN T = T +V%(W)
  59. 590  NEXT W
  60. 600 R = 1:
  61. 610  HOME : TEXT 
  62. 620  GOSUB 1460
  63. 630 P = 0:FL = 3
  64. 640  FOR W = 1 TO C
  65. 650  IF FL = 0  AND CC%(W) = P  THEN 700
  66. 660  IF FL = 1  AND CC%(W) >P  THEN 700
  67. 670 T$ = C$(W):T1 =  VAL( LEFT$(C$(W),2))
  68. 680  ON T1 GOSUB 850,890,930,970,1010,1030,1050,1150,1160,1190,1230,1240,1280,1300,1340,1360
  69. 690 P = CC%(W)
  70. 700  NEXT W
  71. 710  PRINT 
  72. 720  INPUT Q$:Q$ = "6  " +Q$
  73. 730  PRINT 
  74. 740 P = 0:FL = 3
  75. 750  FOR W = 1 TO B
  76. 760  IF FL = 0  AND CT%(W) = P  THEN 820
  77. 770  IF FL = 1  AND CT%(W) >P  THEN 820
  78. 780 T$ = A$(W):T1 =  VAL( LEFT$(A$(W),2))
  79. 790  ON T1 GOSUB 850,890,930,970,1010,1030,1050,1150,1160,1190,1230,1240,1280,1300,1340,1360
  80. 800  IF FL = 2  THEN K = 2
  81. 810 P = CT%(W)
  82. 820  NEXT W
  83. 830  GOSUB 1380
  84. 840  GOTO 630
  85. 850 XX$ =  RIGHT$(T$,4): FOR Q = 1 TO N1
  86. 860  IF  RIGHT$(O$(Q),4) = XX$  AND R%(Q) = 0  THEN FL = 0: RETURN 
  87. 870  NEXT Q
  88. 880 FL = 1: RETURN 
  89. 890 XX$ =  RIGHT$(T$,4):FL = 0: FOR Q = 1 TO N1
  90. 900  IF  RIGHT$(O$(Q),4) = XX$  AND R%(Q) = 0  THEN FL = 1: RETURN 
  91. 910  NEXT Q
  92. 920  RETURN 
  93. 930 XX$ =  RIGHT$(T$,4): FOR Q = 1 TO N1
  94. 940  IF  RIGHT$(O$(Q),4) = XX$  AND R%(Q) = R  THEN FL = 0: RETURN 
  95. 950  NEXT Q
  96. 960 FL = 1: RETURN 
  97. 970 XX$ =  RIGHT$(T$,4): FOR Q = 1 TO N1
  98. 980  IF  RIGHT$(O$(Q),4) = XX$  AND R%(Q) = R  THEN FL = 1: RETURN 
  99. 990  NEXT Q
  100. 1000 FL = 0: RETURN 
  101. 1010  IF R =  VAL( MID$ (T$,2))  THEN FL = 0: RETURN 
  102. 1020 FL = 1: RETURN 
  103. 1030  IF ( RIGHT$(T$,4) =  RIGHT$(Q$,4)  OR  RIGHT$(T$,4) = "????")  AND ( LEFT$(Q$,7) =  LEFT$(T$,7)  OR  LEFT$(T$,7) = "6  ????")  THEN FL = 0: RETURN 
  104. 1040 FL = 1: RETURN 
  105. 1050 XX$ =  MID$ (T$,7,1):FX = F( VAL( MID$ (T$,4,2))):FY =  VAL( MID$ (T$,9))
  106. 1060  IF XX$ < >"="  THEN 1090
  107. 1070  IF FX = FY  THEN FL = 0: RETURN 
  108. 1080 FL = 1: RETURN 
  109. 1090  IF XX$ < >"<"  THEN 1120
  110. 1100  IF FX <FY  THEN FL = 0: RETURN 
  111. 1110 FL = 1: RETURN 
  112. 1120  IF XX$ < >">"  THEN 1370
  113. 1130  IF FX >FY  THEN FL = 0: RETURN 
  114. 1140 FL = 1: RETURN 
  115. 1150  PRINT  MID$ (T$,4):FL = 2: RETURN 
  116. 1160 N1 = N1 +1
  117. 1170 O$(N1) =  MID$ (T$,8):R%(N1) = 0:V%(N1) =  VAL( MID$ (T$,4,3)):F%(0) = F%(0) +1:T = T +V%(N1)
  118. 1180 FL = 2: RETURN 
  119. 1190  IF N1 = 0  THEN FL = 2: RETURN 
  120. 1200 XX$ =  RIGHT$(T$,4): FOR Q = 1 TO N1
  121. 1210  IF XX$ =  RIGHT$(O$(Q),4)  AND R%(Q) = 0  THEN T = T -V%(Q):O$(Q) = O$(N1):R%(Q) = R%(N1):V%(Q) = V%(N1):FL = 2:N1 = N1 -1:F%(0) = F%(0) -1: RETURN 
  122. 1220  NEXT Q:FL = 2: RETURN 
  123. 1230 N1 = N1 +1:O$(N1) =  MID$ (T$,8):R%(N1) = R:V%(N1) =  VAL( MID$ (T$,4,3)):FL = 2: RETURN 
  124. 1240  IF N1 = 0  THEN FL = 2: RETURN 
  125. 1250  FOR Q = 1 TO N1
  126. 1260  IF  RIGHT$(T$,4) =  RIGHT$(O$(Q),4)  AND R%(Q) = R  THEN O$(Q) = O$(N1):R%(Q) = R%(N1):V%(Q) = V%(N1):FL = 2:N1 = N1 -1: RETURN 
  127. 1270  NEXT Q:FL = 2: RETURN 
  128. 1280 T = T + VAL( MID$ (T$,4))
  129. 1290 FL = 2: RETURN 
  130. 1300 XX$ =  MID$ (T$,7,1):FX =  VAL( MID$ (T$,4,2)):FY =  VAL( MID$ (T$,9))
  131. 1310  IF XX$ = "="  THEN F(FX) = FY:FL = 2: RETURN 
  132. 1320  IF XX$ = "+"  THEN F(FX) = F(FX) +FY:FL = 2: RETURN 
  133. 1330  IF XX$ = "%"  THEN F(FX) =  INT( RND(1) *100):FL = 2: RETURN 
  134. 1340 R =  VAL( MID$ (T$,4)): GOSUB 1460
  135. 1350 FL = 2: RETURN 
  136. 1360  PRINT "YOUR SCORE IS ";T: END 
  137. 1370  PRINT  CHR$(7) CHR$(7)"ERROR IN LINE ";W: END 
  138. 1380  IF K = 2  THEN K = 0: RETURN 
  139. 1390 QL$ =  LEFT$(Q$,7)
  140. 1400  IF QL$ < >"6  INVE"  THEN 1450
  141. 1410  PRINT "YOU HAVE"
  142. 1420  FOR W = 1 TO N1
  143. 1430  IF R%(W) = 0  THEN  PRINT O$(W)
  144. 1440  NEXT W: RETURN 
  145. 1450  IF QL$ < >"6  LOOK"  THEN 1510
  146. 1460  PRINT D$(R)
  147. 1470  FOR Q = 1 TO N1
  148. 1480  IF R%(Q) = R  THEN  PRINT O$(Q);" IS HERE"
  149. 1490  NEXT Q
  150. 1500  RETURN 
  151. 1510  IF  LEFT$(Q$,6) < >"6  GET"  AND QL$ < >"6  TAKE"  THEN 1580
  152. 1520 QR$ =  RIGHT$(Q$,4): FOR W = 1 TO N1
  153. 1530  IF R%(W) = R  AND QR$ =  RIGHT$(O$(W),4)  THEN R%(W) = 0: PRINT "OKAY":F(0) = F(0) +1: GOTO 1560
  154. 1540  NEXT W
  155. 1550  PRINT "IT ISN'T HERE": RETURN 
  156. 1560  IF R < >1  THEN T = T +V%(W)
  157. 1570  RETURN 
  158. 1580  IF QL$ < >"6  DROP"  THEN 1650
  159. 1590  FOR W = 1 TO N1
  160. 1600  IF  RIGHT$(O$(W),4) =  RIGHT$(Q$,4)  AND R%(W) = 0  THEN R%(W) = R: PRINT "OKAY":F(0) = F(0) -1: GOTO 1630
  161. 1610  NEXT W
  162. 1620  PRINT "YOU AREN'T CARRYING IT"
  163. 1630  IF R < >1  THEN T = T -V%(W)
  164. 1640  RETURN 
  165. 1650 QR$ =  RIGHT$(Q$,5):QM$ =  MID$ (Q$,4)
  166. 1660  IF QR$ < >"NORTH"  AND QM$ < >"N"  THEN 1690
  167. 1670  IF R = N%(R)  THEN  PRINT "YOU CAN'T GO THAT WAY": RETURN 
  168. 1680 R = N%(R): GOSUB 1460: RETURN 
  169. 1690  IF QR$ < >"SOUTH"  AND QM$ < >"S"  THEN 1720
  170. 1700  IF R = S%(R)  THEN  PRINT "YOU CAN'T GO THAT WAY": RETURN 
  171. 1710 R = S%(R): GOSUB 1460: RETURN 
  172. 1720 QR$ =  RIGHT$(Q$,4): IF QR$ < >"EAST"  AND QM$ < >"E"  THEN 1750
  173. 1730  IF R = E%(R)  THEN  PRINT "YOU CAN'T GO THAT WAY": RETURN 
  174. 1740 R = E%(R): GOSUB 1460: RETURN 
  175. 1750  IF QR$ < >"WEST"  AND QM$ < >"W"  THEN 1780
  176. 1760  IF R = W%(R)  THEN  PRINT "YOU CAN'T GO THAT WAY": RETURN 
  177. 1770 R = W%(R): GOSUB 1460: RETURN 
  178. 1780  IF  RIGHT$(Q$,2) < >"UP"  AND QM$ < >"U"  THEN 1810
  179. 1790  IF R = U%(R)  THEN  PRINT "YOU CAN'T GO THAT WAY": RETURN 
  180. 1800 R = U%(R): GOSUB 1460: RETURN 
  181. 1810  IF QR$ < >"DOWN"  AND QM$ < >"D"  THEN 1840
  182. 1820  IF R = D%(R)  THEN  PRINT "YOU CAN'T GO THAT WAY": RETURN 
  183. 1830 R = D%(R): GOSUB 1460: RETURN 
  184. 1840  IF Q$ = "6  SCORE"  THEN  PRINT T: RETURN 
  185. 1850  IF Q$ = "6  QUIT"  THEN  PRINT "YOUR SCORE IS ";T: PRINT "COME AND PLAY AGAIN SOMETIME.": END 
  186. 1860  IF Q$ < >"6  SAVE"  THEN  PRINT "I DON'T UNDERSTAND": RETURN 
  187. 1870  ONERR  GOTO 2010
  188. 1880  PRINT D$;"OPEN SAV.";N$: PRINT D$;"CLOSE SAV.";N$: PRINT D$;"DELETE SAV.";N$: PRINT D$;"OPEN SAV.";N$: PRINT D$;"WRITE SAV.";N$
  189. 1890  FOR W = 0 TO 99
  190. 1900  PRINT F(W)
  191. 1910  NEXT W
  192. 1920  PRINT N1
  193. 1930  FOR W = 1 TO N1
  194. 1940  PRINT O$(W): PRINT V%(W): PRINT R%(W)
  195. 1950  NEXT W
  196. 1960  PRINT R: PRINT T
  197. 1970  PRINT D$;"CLOSE SAV.";N$: POKE 216,0: RETURN 
  198. 1980  CALL  -3288: POKE 216,0: PRINT D$"CLOSE": RETURN 
  199. 1990  END 
  200. 2000 EL = 3: GOTO 2030
  201. 2010 EL = 1: GOTO 2030: REM   ENTRY POINT FOR DISK WRITE
  202. 2020 EL = 2: REM   ENTRY POINT FOR DISK READ
  203. 2030 ER =  PEEK(222)
  204. 2040  IF ER = 4  THEN  PRINT "DISK WRITE PROTECTED": GOTO 2130
  205. 2050  IF ER = 5  THEN  PRINT "FILE NOT FOUND OR EMPTY": GOTO 2130
  206. 2060  IF ER = 6  THEN  PRINT "FILE NOT FOUND": GOTO 2130
  207. 2070  IF ER = 8  THEN  PRINT "DISK I/O ERROR": GOTO 2130
  208. 2080  IF ER = 9  THEN  PRINT "DISK FULL": GOTO 2130
  209. 2090  IF ER = 10  THEN  PRINT "FILE LOCKED": GOTO 2130
  210. 2100  IF ER = 11  THEN  PRINT "ILLEGAL FILE NAME": GOTO 2130
  211. 2110  IF ER = 13  THEN  PRINT "FILE TYPE MISMATCH": GOTO 2130
  212. 2120  PRINT "ERROR #";ER" IN LINE "; PEEK(218) + PEEK(219) *256
  213. 2130  ON EL GOTO 2170,2160
  214. 2140  PRINT "UNABLE TO LOAD SAVED GAME.": INPUT "TRY AGAIN? ";YN$: IF  LEFT$(YN$,1) = "Y"  THEN  PRINT "PRESS ANY KEY WHEN READY": GET T$: GOTO 390
  215. 2150  END 
  216. 2160  PRINT "UNABLE TO LOAD "ES$: PRINT "FILE FOR "N$: POKE 216,0: PRINT : PRINT "ANY KEY WHEN READY": GET T$: GOTO 100
  217. 2170  PRINT "UNABLE TO SAVE GAME.": PRINT "PRESS ANY KEY WHEN READY": GET T$: GOTO 1980