146 lines
5.1 KiB
QBasic
146 lines
5.1 KiB
QBasic
30 HI=0:DIM F$(40),N$(3)
|
||
40 GOTO 14000
|
||
42 POKE 1,0:POKE 2,0
|
||
43 POKE 764,255
|
||
45 TRAP 40000
|
||
47 F$="":GOSUB 12000:SK=PEEK(0):P=PEEK(1)*256+PEEK(2):GOSUB 10000:GOTO 8000
|
||
990 REM READ JOY, MOVE
|
||
1000 REM
|
||
1010 PA=STICK(0)
|
||
1020 S3=(PA=7)
|
||
1030 S0=(PA=14):S1=(PA=13):S2=(PA=11)
|
||
1100 IF S0 THEN POKE X,7+128:C=20:GOTO 1160
|
||
1130 IF S3 THEN POKE X,6+128:C=-1:GOTO 1160
|
||
1140 IF S2 THEN POKE X,8+128:C=1:GOTO 1160
|
||
1150 IF S1 THEN POKE X,9+128:C=-20:GOTO 1160
|
||
1155 FOR J=1 TO 50:NEXT J:GOTO 1300
|
||
1160 X=X-C:IF PEEK(X)=129 THEN X=X+C:GOTO 1300
|
||
1165 SOUND 0,100,10,8
|
||
1170 F$(LEN(F$)+1)=CHR$(-C+99)
|
||
1180 J=PEEK(X):POKE X,2+64:IF J=10 THEN K=100:GOSUB 9000
|
||
1190 IF J=11 THEN K=50:GOSUB 9000
|
||
1200 IF J=12 THEN K=30:GOSUB 9000
|
||
1210 IF J=13 THEN K=20:GOSUB 9000
|
||
1220 IF J=14 THEN K=10:GOSUB 9000
|
||
1230 SOUND 0,0,0,0
|
||
1250 POSITION 6,22:? #6;P;" ";
|
||
1300 POKE X,3+64:RETURN
|
||
1990 REM "MOVE MONSTER
|
||
2000 IF LEN(F$)>=30 THEN GOSUB 3000
|
||
2005 O=O+1:IF O/S<>INT(O/S) THEN RETURN
|
||
2010 FOR J=1 TO SK:GOSUB 4000:POKE F,0:F=F+(ASC(F$)-99):F$=F$(1+((LEN(F$)>1)))
|
||
2030 POKE F,5+192:SOUND 0,120,0,8:FOR M=1 TO 50:NEXT M:POKE F,4+192:SOUND 0,80,0,8:NEXT J:SOUND 0,0,0,0:RETURN
|
||
2990 REM " SPEED UP MONSTER
|
||
3000 POKE F,0:S=S-1:IF S<1 THEN S=1
|
||
3005 POSITION 18,22:? #6;E-S;
|
||
3010 FOR N=1 TO 10:POKE F,0:F=F+(ASC(F$)-99):F$=F$(2):POKE F,5+192
|
||
3150 IF (N/SK=INT(N/SK)) AND PP THEN GOSUB 1000
|
||
3310 FOR M=N TO N+2:SOUND 0,M*3,0,8:NEXT M:NEXT N:SOUND 0,0,0,0
|
||
3500 RETURN
|
||
3990 REM " CHECK IF EATEN
|
||
4000 IF X<>F THEN RETURN
|
||
4005 POKE F,8:SOUND 0,0,0,0
|
||
4010 GOSUB 18000:POSITION 0,22:? #6;"A TASTY MORSEL INDEED_";
|
||
4015 FOR J=1 TO 2000
|
||
4025 NEXT J
|
||
4027 IF PP=0 THEN 16800
|
||
4060 GOTO 11000
|
||
6990 REM " GET PROMOTED
|
||
7000 J=INT(P/256):POKE 1,J:POKE 2,P-J*256
|
||
7100 SK=PEEK(0)+1:POKE 0,SK
|
||
7200 POSITION 0,23:? #6;"CONGRATULATIONS !!"
|
||
7205 FOR J=1 TO 1000:NEXT J
|
||
7400 PRINT "}":POKE 752,1:? " ONE AS FLEET-FOOTED AS YOU DESERVES":? " MORE CHALLENGE.":POKE 710,18
|
||
7405 FOR J=1 TO 500:NEXT J
|
||
7410 PRINT " YOU ARE THEREFORE PROMOTED TO":? " SKILL LEVEL ";SK
|
||
7420 FOR J=1 TO 1000:NEXT J
|
||
7500 GOTO 45
|
||
7990 REM " MAIN LOOP!
|
||
8000 FOR M=1 TO 500:GOSUB 1000:IF LEN(F$)<20 THEN NEXT M
|
||
8100 GOSUB 1000:GOSUB 2000:GOSUB 4000:GOTO 8100
|
||
8990 REM " PICKED UP TREASURE
|
||
9000 FOR I=1 TO 10:SOUND 0,10*RND(0),10,8:NEXT I:SOUND 0,0,0,0
|
||
9010 P=P+K*(E-S):PC=PC+1:IF PC>=61 THEN 7000
|
||
9100 RETURN
|
||
9990 REM " SET VARIABLES, ETC.
|
||
10000 REM
|
||
10030 S=10:PC=0:RO=22:PP=1
|
||
10110 W=5:E=11:GOSUB 18000
|
||
10600 POSITION 8,23:? #6;"<22><><EFBFBD>"
|
||
10700 POSITION 0,22:? #6;"<22><><EFBFBD><EFBFBD>ź speed:1"
|
||
10800 X=SC+21:F=X
|
||
10900 RETURN
|
||
11000 REM " GAME OVER
|
||
11102 ? "}":POKE 752,1:POKE 710,212
|
||
11103 IF P>HI THEN HI=P:GOSUB 11150
|
||
11105 ?:? "YOUR SCORE IS: ";P
|
||
11107 ?:? "THE HIGH SCORE IS ";HI;" BY ";N$
|
||
11110 ?:?:? "PLAY AGAIN ? (Y/N): ";
|
||
11120 OPEN #1,4,0,"K:":GET #1,A:CLOSE #1
|
||
11130 IF A=ASC("N") THEN GRAPHICS 0:END
|
||
11140 POKE 764,255:POKE 77,0:GOTO 40
|
||
11150 ?:? "CONGRATULATIONS!! YOU HAVE THE NEW HIGH SCORE.":?:? "PLEASE ENTER YOUR INITIALS";:INPUT N$
|
||
11160 RETURN
|
||
11990 REM " MAKE MAZE (ALGORITHM FROM COMPUTE!)
|
||
12000 GRAPHICS 17:POKE 756,CHSET/256
|
||
12010 TRAP 12015:DIM A(3):A(0)=2:A(1)=-40:A(2)=-2:A(3)=40:WL=129:HL=0:TRAP 40000
|
||
12015 A=SC+21
|
||
12100 FOR I=1 TO 21:? #6;"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>":NEXT I:POKE A,5
|
||
12150 ? #6;"the dwarves mined":? #6;"here many years ago";
|
||
12200 J=INT(RND(1)*4):X=J
|
||
12205 B=A+A(J)
|
||
12210 IF PEEK(B)=WL THEN POKE B,J+1:POKE A+A(J)/2,HL:A=B:GOTO 12200
|
||
12240 J=(J+1)*(J<3):IF J<>X THEN 12205
|
||
12250 J=PEEK(A):POKE A,HL:IF J<5 THEN A=A-A(J-1):GOTO 12200
|
||
12255 GOSUB 18000
|
||
12260 POSITION 0,22:? #6;"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>":? #6;"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
||
12270 RESTORE
|
||
12300 FOR K=10 TO 14:READ J,C
|
||
12310 FOR A=1 TO J
|
||
12320 B=SC+40+INT(20*RND(0))*20+INT(19*RND(0))
|
||
12330 IF PEEK(B)<>0 THEN 12320
|
||
12340 POKE B,K
|
||
12350 NEXT A:NEXT K
|
||
12500 RESTORE:RETURN
|
||
12600 DATA 1,1,7,3,12,7,15,6,26,0
|
||
13990 REM " TITLE PAGE, ETC.
|
||
14000 GRAPHICS 17
|
||
14005 SC=PEEK(88)+256*PEEK(89):CHSET=PEEK(106)-8:CHSET=CHSET*256
|
||
14007 FOR I=0 TO 512:POKE CHSET+I,PEEK(57344+I):NEXT I
|
||
14010 ? #6;" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>":? #6
|
||
14020 ? #6
|
||
14030 GOTO 16000
|
||
14050 ? #6:? #6;"<22><><EFBFBD><EFBFBD>̠<EFBFBD><CCA0><EFBFBD><EFBFBD>̿ <1..9>"
|
||
14060 OPEN #1,4,0,"K:":GET #1,A:CLOSE #1
|
||
14070 SK=A-48:IF SK<1 OR SK>9 THEN 14060
|
||
14080 POKE 0,SK:GOTO 42
|
||
15990 REM " SHOW & DEFINE CHARACTERS
|
||
16000 FOR J=1 TO 7:POKE SC+J*40+80,J:NEXT J
|
||
16010 FOR J=8 TO 15:POKE SC+19+80+40*(J-7),J:NEXT J
|
||
16020 POKE 756,CHSET/256
|
||
16150 FOR J=0 TO 7:POKE CHSET+J,0:NEXT J
|
||
16160 FOR J=1 TO 10:READ K:NEXT J
|
||
16200 X=256:FOR J=0 TO 119:READ K
|
||
16250 X=X-0.81:SOUND 0,X,10,8
|
||
16300 POKE CHSET+8+J,K:NEXT J
|
||
16305 FOR I=0 TO 7:READ A:POKE CHSET+63*8+I,A:NEXT I
|
||
16310 SOUND 0,0,0,0:GOTO 14050
|
||
17111 REM " CHARACTER DATA
|
||
17112 DATA 85,42,85,42,85,42,85,0
|
||
17115 DATA 28,42,62,34,28,36,68,38
|
||
17120 DATA 28,42,62,34,28,21,18,24
|
||
17130 DATA 60,90,126,74,66,60,36,102
|
||
17140 DATA 60,90,126,74,126,66,66,195
|
||
17150 DATA 0,224,240,224,14,15,14,0
|
||
17160 DATA 4,14,14,14,32,112,112,112
|
||
17170 DATA 0,112,240,112,7,15,7,0
|
||
17180 DATA 14,14,14,4,112,112,112,32
|
||
17190 DATA 0,8,34,8,93,8,34,8
|
||
17200 DATA 1,76,18,34,68,72,50,128
|
||
17210 DATA 0,73,42,0,216,28,60,0
|
||
17220 DATA 0,2,24,36,36,24,64,0
|
||
17230 DATA 0,0,12,28,56,48,0,0
|
||
17235 DATA 0,126,126,126,122,126,126,0
|
||
17300 DATA 0,7,15,14,24,48,0,64
|
||
18000 COLOR 0:PLOT 0,21:DRAWTO 19,21:PLOT 0,22:DRAWTO 19,22:PLOT 0,23:DRAWTO 19,23:RETURN
|