home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib24b.dsk
/
ACS.PLAYER.bas
next >
Wrap
BASIC Source File
|
2023-02-26
|
9KB
|
217 lines
10 REM **********************
20 REM * ACS.PLAYER *
30 REM * BY JENNY SCHMIDT *
40 REM * COPYRIGHT (C) 1985 *
50 REM * BY MICROSPARC, INC *
60 REM * CONCORD, MA 01742 *
70 REM **********************
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)
90 D$ = CHR$(4)
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
110 PRINT "ADVENTURE NAME (? FOR CATALOG): ": INPUT "";N$
120 IF LEFT$(N$,1) = "?" THEN HOME : PRINT D$"CATALOG": PRINT "PRESS ANY KEY WHEN READY": GET T$: GOTO 110
130 ONERR GOTO 2020
140 ES$ = "DESCRIPTION"
150 PRINT D$;"OPEN DES.";N$: PRINT D$;"READ DES.";N$
160 INPUT A
170 FOR W = 1 TO A
180 INPUT D$(W): INPUT N%(W): INPUT S%(W): INPUT E%(W): INPUT W%(W): INPUT U%(W): INPUT D%(W)
190 NEXT W
200 PRINT D$;"CLOSE DES.";N$
210 ES$ = "USER-PROMPTED ACTIONS"
220 PRINT D$;"OPEN USR.";N$
230 PRINT D$;"READ USR.";N$
240 INPUT B
250 FOR W = 1 TO B
260 INPUT A$(W): INPUT CT%(W)
270 NEXT W
280 PRINT D$;"CLOSE USR.";N$
290 ES$ = "NON-USER-PROMPTED ACTION"
300 PRINT D$;"OPEN NUP.";N$
310 PRINT D$;"READ NUP.";N$
320 INPUT C
330 FOR W = 1 TO C
340 INPUT C$(W): INPUT CC%(W)
350 NEXT W
360 PRINT D$;"CLOSE NUP.";N$
370 INPUT "DO YOU WANT TO LOAD A PREVIOUSLY SAVED GAME?";Q$: IF LEFT$(Q$,1) = "N" THEN 510
380 ONERR GOTO 2000
390 PRINT D$"VERIFY SAV."N$
400 PRINT D$;"OPEN SAV.";N$: PRINT D$;"READ SAV.";N$
410 FOR W = 0 TO 99
420 INPUT F(W)
430 NEXT W
440 INPUT N1
450 FOR W = 1 TO N1
460 INPUT O$(W): INPUT V%(W): INPUT R%(W)
470 NEXT W: INPUT R: INPUT T
480 PRINT D$;"CLOSE SAV.";N$: GOTO 610
490 ONERR GOTO 2020
500 ES$ = "OBJECTS"
510 PRINT D$;"OPEN OBJ.";N$: PRINT D$;"READ OBJ.";N$
520 INPUT N1
530 FOR W = 1 TO N1
540 INPUT O$(W): INPUT V%(W): INPUT R%(W)
550 NEXT W
560 PRINT D$;"CLOSE OBJ.";N$
570 POKE 216,0
580 FOR W = 1 TO N1: IF R%(W) = 1 THEN T = T +V%(W)
590 NEXT W
600 R = 1:
610 HOME : TEXT
620 GOSUB 1460
630 P = 0:FL = 3
640 FOR W = 1 TO C
650 IF FL = 0 AND CC%(W) = P THEN 700
660 IF FL = 1 AND CC%(W) >P THEN 700
670 T$ = C$(W):T1 = VAL( LEFT$(C$(W),2))
680 ON T1 GOSUB 850,890,930,970,1010,1030,1050,1150,1160,1190,1230,1240,1280,1300,1340,1360
690 P = CC%(W)
700 NEXT W
710 PRINT
720 INPUT Q$:Q$ = "6 " +Q$
730 PRINT
740 P = 0:FL = 3
750 FOR W = 1 TO B
760 IF FL = 0 AND CT%(W) = P THEN 820
770 IF FL = 1 AND CT%(W) >P THEN 820
780 T$ = A$(W):T1 = VAL( LEFT$(A$(W),2))
790 ON T1 GOSUB 850,890,930,970,1010,1030,1050,1150,1160,1190,1230,1240,1280,1300,1340,1360
800 IF FL = 2 THEN K = 2
810 P = CT%(W)
820 NEXT W
830 GOSUB 1380
840 GOTO 630
850 XX$ = RIGHT$(T$,4): FOR Q = 1 TO N1
860 IF RIGHT$(O$(Q),4) = XX$ AND R%(Q) = 0 THEN FL = 0: RETURN
870 NEXT Q
880 FL = 1: RETURN
890 XX$ = RIGHT$(T$,4):FL = 0: FOR Q = 1 TO N1
900 IF RIGHT$(O$(Q),4) = XX$ AND R%(Q) = 0 THEN FL = 1: RETURN
910 NEXT Q
920 RETURN
930 XX$ = RIGHT$(T$,4): FOR Q = 1 TO N1
940 IF RIGHT$(O$(Q),4) = XX$ AND R%(Q) = R THEN FL = 0: RETURN
950 NEXT Q
960 FL = 1: RETURN
970 XX$ = RIGHT$(T$,4): FOR Q = 1 TO N1
980 IF RIGHT$(O$(Q),4) = XX$ AND R%(Q) = R THEN FL = 1: RETURN
990 NEXT Q
1000 FL = 0: RETURN
1010 IF R = VAL( MID$ (T$,2)) THEN FL = 0: RETURN
1020 FL = 1: RETURN
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
1040 FL = 1: RETURN
1050 XX$ = MID$ (T$,7,1):FX = F( VAL( MID$ (T$,4,2))):FY = VAL( MID$ (T$,9))
1060 IF XX$ < >"=" THEN 1090
1070 IF FX = FY THEN FL = 0: RETURN
1080 FL = 1: RETURN
1090 IF XX$ < >"<" THEN 1120
1100 IF FX <FY THEN FL = 0: RETURN
1110 FL = 1: RETURN
1120 IF XX$ < >">" THEN 1370
1130 IF FX >FY THEN FL = 0: RETURN
1140 FL = 1: RETURN
1150 PRINT MID$ (T$,4):FL = 2: RETURN
1160 N1 = N1 +1
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)
1180 FL = 2: RETURN
1190 IF N1 = 0 THEN FL = 2: RETURN
1200 XX$ = RIGHT$(T$,4): FOR Q = 1 TO N1
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
1220 NEXT Q:FL = 2: RETURN
1230 N1 = N1 +1:O$(N1) = MID$ (T$,8):R%(N1) = R:V%(N1) = VAL( MID$ (T$,4,3)):FL = 2: RETURN
1240 IF N1 = 0 THEN FL = 2: RETURN
1250 FOR Q = 1 TO N1
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
1270 NEXT Q:FL = 2: RETURN
1280 T = T + VAL( MID$ (T$,4))
1290 FL = 2: RETURN
1300 XX$ = MID$ (T$,7,1):FX = VAL( MID$ (T$,4,2)):FY = VAL( MID$ (T$,9))
1310 IF XX$ = "=" THEN F(FX) = FY:FL = 2: RETURN
1320 IF XX$ = "+" THEN F(FX) = F(FX) +FY:FL = 2: RETURN
1330 IF XX$ = "%" THEN F(FX) = INT( RND(1) *100):FL = 2: RETURN
1340 R = VAL( MID$ (T$,4)): GOSUB 1460
1350 FL = 2: RETURN
1360 PRINT "YOUR SCORE IS ";T: END
1370 PRINT CHR$(7) CHR$(7)"ERROR IN LINE ";W: END
1380 IF K = 2 THEN K = 0: RETURN
1390 QL$ = LEFT$(Q$,7)
1400 IF QL$ < >"6 INVE" THEN 1450
1410 PRINT "YOU HAVE"
1420 FOR W = 1 TO N1
1430 IF R%(W) = 0 THEN PRINT O$(W)
1440 NEXT W: RETURN
1450 IF QL$ < >"6 LOOK" THEN 1510
1460 PRINT D$(R)
1470 FOR Q = 1 TO N1
1480 IF R%(Q) = R THEN PRINT O$(Q);" IS HERE"
1490 NEXT Q
1500 RETURN
1510 IF LEFT$(Q$,6) < >"6 GET" AND QL$ < >"6 TAKE" THEN 1580
1520 QR$ = RIGHT$(Q$,4): FOR W = 1 TO N1
1530 IF R%(W) = R AND QR$ = RIGHT$(O$(W),4) THEN R%(W) = 0: PRINT "OKAY":F(0) = F(0) +1: GOTO 1560
1540 NEXT W
1550 PRINT "IT ISN'T HERE": RETURN
1560 IF R < >1 THEN T = T +V%(W)
1570 RETURN
1580 IF QL$ < >"6 DROP" THEN 1650
1590 FOR W = 1 TO N1
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
1610 NEXT W
1620 PRINT "YOU AREN'T CARRYING IT"
1630 IF R < >1 THEN T = T -V%(W)
1640 RETURN
1650 QR$ = RIGHT$(Q$,5):QM$ = MID$ (Q$,4)
1660 IF QR$ < >"NORTH" AND QM$ < >"N" THEN 1690
1670 IF R = N%(R) THEN PRINT "YOU CAN'T GO THAT WAY": RETURN
1680 R = N%(R): GOSUB 1460: RETURN
1690 IF QR$ < >"SOUTH" AND QM$ < >"S" THEN 1720
1700 IF R = S%(R) THEN PRINT "YOU CAN'T GO THAT WAY": RETURN
1710 R = S%(R): GOSUB 1460: RETURN
1720 QR$ = RIGHT$(Q$,4): IF QR$ < >"EAST" AND QM$ < >"E" THEN 1750
1730 IF R = E%(R) THEN PRINT "YOU CAN'T GO THAT WAY": RETURN
1740 R = E%(R): GOSUB 1460: RETURN
1750 IF QR$ < >"WEST" AND QM$ < >"W" THEN 1780
1760 IF R = W%(R) THEN PRINT "YOU CAN'T GO THAT WAY": RETURN
1770 R = W%(R): GOSUB 1460: RETURN
1780 IF RIGHT$(Q$,2) < >"UP" AND QM$ < >"U" THEN 1810
1790 IF R = U%(R) THEN PRINT "YOU CAN'T GO THAT WAY": RETURN
1800 R = U%(R): GOSUB 1460: RETURN
1810 IF QR$ < >"DOWN" AND QM$ < >"D" THEN 1840
1820 IF R = D%(R) THEN PRINT "YOU CAN'T GO THAT WAY": RETURN
1830 R = D%(R): GOSUB 1460: RETURN
1840 IF Q$ = "6 SCORE" THEN PRINT T: RETURN
1850 IF Q$ = "6 QUIT" THEN PRINT "YOUR SCORE IS ";T: PRINT "COME AND PLAY AGAIN SOMETIME.": END
1860 IF Q$ < >"6 SAVE" THEN PRINT "I DON'T UNDERSTAND": RETURN
1870 ONERR GOTO 2010
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$
1890 FOR W = 0 TO 99
1900 PRINT F(W)
1910 NEXT W
1920 PRINT N1
1930 FOR W = 1 TO N1
1940 PRINT O$(W): PRINT V%(W): PRINT R%(W)
1950 NEXT W
1960 PRINT R: PRINT T
1970 PRINT D$;"CLOSE SAV.";N$: POKE 216,0: RETURN
1980 CALL -3288: POKE 216,0: PRINT D$"CLOSE": RETURN
1990 END
2000 EL = 3: GOTO 2030
2010 EL = 1: GOTO 2030: REM ENTRY POINT FOR DISK WRITE
2020 EL = 2: REM ENTRY POINT FOR DISK READ
2030 ER = PEEK(222)
2040 IF ER = 4 THEN PRINT "DISK WRITE PROTECTED": GOTO 2130
2050 IF ER = 5 THEN PRINT "FILE NOT FOUND OR EMPTY": GOTO 2130
2060 IF ER = 6 THEN PRINT "FILE NOT FOUND": GOTO 2130
2070 IF ER = 8 THEN PRINT "DISK I/O ERROR": GOTO 2130
2080 IF ER = 9 THEN PRINT "DISK FULL": GOTO 2130
2090 IF ER = 10 THEN PRINT "FILE LOCKED": GOTO 2130
2100 IF ER = 11 THEN PRINT "ILLEGAL FILE NAME": GOTO 2130
2110 IF ER = 13 THEN PRINT "FILE TYPE MISMATCH": GOTO 2130
2120 PRINT "ERROR #";ER" IN LINE "; PEEK(218) + PEEK(219) *256
2130 ON EL GOTO 2170,2160
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
2150 END
2160 PRINT "UNABLE TO LOAD "ES$: PRINT "FILE FOR "N$: POKE 216,0: PRINT : PRINT "ANY KEY WHEN READY": GET T$: GOTO 100
2170 PRINT "UNABLE TO SAVE GAME.": PRINT "PRESS ANY KEY WHEN READY": GET T$: GOTO 1980