Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 200 GOSUB 3000:GOSUB 2010
- 210 X=W/2-1:Y=H/2-1:FC=0:FL=-1
- 220 GOSUB 1010
- 230 KE$="":NX=X:NY=Y
- 250 KE$=INKEY$:IF KE$="" GOTO 250
- 255 IF KE$="z" THEN END
- 260 IF KE$<>"i" THEN 270
- 261 NY=Y-1:FC=INT (FC/2)*2+1:IF NY >=0 THEN 300
- 262 NY=0:IF NX<>W/2-1 OR MID$(DR$,1,1)=" " THEN 300
- 263 GOSUB 2010: NX=W/2-1:NY=H-2:GOTO 320
- 270 IF KE$<>"j" THEN 280
- 271 NX=X-1:FC=FC-INT(FC/2)*2+2:IF NX >=0 THEN 300
- 272 NX=0:IF NY<>H/2-1 OR MID$(DR$,3,1)=" " THEN 300
- 273 GOSUB 2010:NX=W-2:NY=H/2-1:GOTO 320
- 280 IF KE$<>"k" THEN 290
- 281 NX=X+1:FC=FC-INT(FC/2)*2:IF NX<=W-2 THEN 300
- 282 NX=W-2:IF NY<>H/2-1 OR MID$(DR$,4,1)=" " THEN 300
- 283 GOSUB 2010:NX=0:NY=H/2-1:GOTO 320
- 290 IF KE$<>"m" THEN 300
- 291 NY=Y+1:FC=INT (FC/2)*2:IF NY<=H-2 THEN 300
- 292 NY=H-2:IF NX<>W/2-1 OR MID$(DR$,2,1)=" " THEN 300
- 293 GOSUB 2010:NX=W/2-1:NY=0:GOTO 320
- 300 IF NX=X AND NY=Y THEN 230
- 320 X=NX:Y=NY:GOSUB 1010
- 330 GOTO 230
- 1000 REM move character
- 1010 XP=X*8+XO:YP=Y*8+YO
- 1020 REMIF FL<>FC AND FL>=0 THEN SPRITE FL+1,0
- 1030 PUT SPRITE 1,(XP,YP)
- 1040 REM IF FL<>FC THEN SPRITE FC+1,1,10,0,0,0,1
- 1050 FL=FC:RETURN
- 1999 REM
- 2000 REM create room
- 2010 FOR I=1 TO 8:PUT SPRITE 1,(1,1),15,1
- 2015 FL=-1:COLOR 15,4,4:SCREEN 2
- 2020 W=INT (RND(1)*4)*2+6:H=INT (RND(1)*4)*2+6
- 2040 XO=(250 -W*8)/2:YO=(190-H*8)/2
- 2050 WC=3+INT(RND(1)*13)
- 2060 COLOR WC,WC
- 2079 REM upper line
- 2080 LINE (XO+8,YO)-(XO+(W-1)*8,YO+3),,BF
- 2089 REM bottom line
- 2090 LINE (XO+8,YO+H*8-4)-(XO+(W-1)*8,YO+H*8-1),,BF
- 2099 REM left line
- 2100 LINE (XO,YO+8)-(XO+1,YO+(H-1)*8),,BF
- 2109 REM right line
- 2110 LINE (XO+W*8-2,YO+8)-(XO+W*8-1,YO+(H-1)*8),,BF
- 2119 REM corners
- 2120 LINE (XO+(W-1)*8,YO)-(XO+(W-1)*8+8,YO+8):REM uppper right
- 2125 LINE (XO+(W-1)*8+8,YO+(H-1)*8)-(XO+(W-1)*8,YO+(H-1)*8+8):REM downright
- 2130 LINE (XO+8,YO)-(XO,YO+8):REM uper left
- 2135 LINE (XO,YO+(H-1)*8)-(XO+8,YO+(H-1)*8+8):REM left bottom
- 2150 DR=1+INT (RND(1)*14)
- 2160 DR$="":DD$=" n s w e"
- 2170 FOR I=1 TO 4
- 2180 DD=DR-INT (DR/2)*2:DR =INT(DR/2):DR$=DR$+MID$(DD$,I*2-1+DD,1)
- 2190 IF DD=0 THEN 2420
- 2200 NS=ABS(I<3):S=ABS(I=2):E=ABS(I=4)
- 2250 X1=(W*8/(NS+1))*(NS+E)-6*NS-2*E
- 2260 X2=(W*8/(NS+1))*(NS+E)+5*NS-2*E+(1-NS)
- 2270 Y1=(H*8/((1-NS)+1))*((1-NS)+S)-12*(1-NS)-4*S
- 2280 Y2=(H*8/((1-NS)+1))*((1-NS)+S)+11*(1-NS)-4*S+3*NS
- 2290 LINE (XO+X1,YO+Y1)-(XO+X2,YO+Y2),8,BF:REM emtpy space door
- 2300 COLOR 1
- 2310 X1=(W*8/(NS+1))*(NS+E)-8*NS-4*E
- 2320 X2=(W*8/(NS+1))*(NS+E)-8*NS-4*E+3*(1-NS)+NS
- 2330 Y1=(H*8/(1-NS+1))*(1-NS+S)-8*(1-NS)-8*S
- 2340 Y2=(H*8/(1-NS+1))*(1-NS+S)-8*(1-NS)-8*S+7*NS+3*(1-NS)
- 2350 LINE (XO+X1,YO+Y1)-(XO+X2,YO+Y2),,BF
- 2360 X1=(W*8/(NS+1))*(NS+E)+6*NS-4*E
- 2370 X2=(W*8/(NS+1))*(NS+E)+6*NS-4*E+3*(1-NS)+NS
- 2380 Y1=(H*8/(1-NS+1))*(1-NS+S)+12*(1-NS)-8*S
- 2390 Y2=(H*8/(1-NS+1))*(1-NS+S)+12*(1-NS)-8*S+7*NS+3*(1-NS)
- 2400 LINE (XO+X1,YO+Y1)-(XO+X2,YO+Y2),,BF
- 2420 NEXT I
- 2430 RETURN
- 3000 REM sprites
- 3010 SCREEN 2
- 3020 FOR I=1 TO 4
- 3030 SP$="":FOR J=1 TO 8:READ D:SP$=SP$+CHR$(D):NEXT J
- 3035 PRINT SP$
- 3036 PRINT I
- 3040 SPRITE$(I)=SP$
- 3050 NEXT I
- 3100 RETURN
- 9010 DATA &HFF,&HFF,&HFF,&HFF
- 9020 DATA &HFF,&HFF,&HFF,&HFF
- 9030 DATA &HFF,&HFF,&HFF,&HFF
- 9040 DATA &HFF,&HFF,&HFF,&HFF
- 9050 DATA &HFF,&HFF,&HFF,&HFF
- 9060 DATA &HFF,&HFF,&HFF,&HFF
- 9070 DATA &HFF,&HFF,&HFF,&HFF
- 9080 DATA &HFF,&HFF,&HFF,&HFF
Advertisement
Add Comment
Please, Sign In to add comment