Tag: retrogaming

  • PART #1 – Dungeon Of Doom Level Editor

    PART #1 – Dungeon Of Doom Level Editor

    This version for the BBC Micro.

    10 GOSUB 610
    20 COLOUR 3+128:CLS
    30 LET BG=2:LET FG=1:LET T=0:LET L=3:LET LW=W-3:GOSUB 280
    40 COLOUR 2+128:COLOUR 0
    50 PRINT TAB(1,1);"LEVEL GENERATOR";
    60 PRINT TAB(1,2);"THIS IS LEVEL:";LE;
    70 PRINT TAB(1,3);"PRESS H FOR HELP"
    80 LET BG=3:LET FG=2:LET T=5:LET L=15:LET LW=15:GOSUB 280
    90 LET X=1:LET Y=1
    100 LET I$=INKEY$(0)
    110 IF I$="H" THEN GOSUB 360
    120 IF I$="A" AND Y>1 THEN LET Y=Y-1
    130 IF I$="Z" AND Y<15 THEN LET Y=Y+1
    140 IF I$="N" AND X>1 THEN LET X=X-1
    150 IF I$="M" AND X<15 THEN LET X=X+1
    160 IF I$>"/" AND I$<":" THEN GOSUB 230
    170 COLOUR 3+128:COLOUR 0
    180 PRINT TAB(X,Y+5);CHR$(OS);
    190 PRINT TAB(X,Y+5);CHR$(R(X,Y));
    200 IF I$="S" AND IX>0 THEN GOSUB 450:GOTO 20
    210 IF I$<>"F" THEN GOTO 100
    220 STOP
    230 LET I=VAL(I$)
    240 IF I=9 THEN LET I=8+RND(3)
    250 IF I=5 THEN LET IX=X:LET IY=Y
    260 LET R(X,Y)=C0+I
    270 RETURN
    280 PRINT TAB(0,T);
    290 COLOUR FG+128:PRINT LEFT$(B$,LW+2)
    300 COLOUR BG+128:COLOUR FG
    310 FOR I=1 TO L
    320     PRINT TAB(0);CHR$(OS);LEFT$(B$,LW);CHR$(OS)
    330 NEXT I
    340 COLOUR FG+128:PRINT LEFT$(B$,LW+2);
    350 RETURN
    360 COLOUR 128+1:COLOUR 3
    370 FOR H=1 TO 10
    380     PRINT TAB(1,4);H$(H);:GOSUB 430
    390     PRINT TAB(1,4);LEFT$(B$,W-2);
    400 NEXT H
    410 COLOUR 3
    420 RETURN
    430 LET G$=INKEY$(0):IF G$="" THEN GOTO 430
    440 RETURN
    450 PRINT TAB(1,4);"ONE MOMENT PLEASE.";
    460 LET S$=""
    470 FOR J=1 TO 15
    480     FOR K=1 TO 15
    490         LET S$=S$+CHR$(R(K,J))
    500     NEXT K
    510 NEXT J
    520 LET S$=S$+CHR$(IX+OS):LET S$=S$+CHR$(IY+OS)
    530 LET S$=S$+CHR$(LE+OS)
    540 PRINT TAB(1,4);"ANY KEY TO SAVE  ";:GOSUB 430
    550 LET S=OPENOUT "LEVEL"
    560 PRINT#S,S$
    570 CLOSE#S
    580 PRINT TAB(1,4);LEFT$(B$,W)
    590 LET LE=LE+1:GOSUB 700
    600 RETURN
    610 DIM R(15,15),H$(10)
    620 GOSUB 790
    630 DATA "PRESS ANY KEY","TO MOVE A Z N M","1 WALL   2 VASE"
    640 DATA "3 CHEST 4 * IDOL *","5 WAY IN  6 EXIT","7 TRAP","8 SAFE PLACE"
    650 DATA "9 GUARD","0 TO ERASE","S TO SAVE"
    660 LET LE=1
    670 FOR I=1 TO 10
    680     READ H$(I)
    690 NEXT I:GOSUB 810
    700 FOR J=1 TO 15
    710     FOR K=1 TO 15
    720         LET R(J,K)=C0
    730     NEXT K
    740 NEXT J
    750 LET IX=0:LET IY=0
    760 LET B$="":FOR I=1 TO W:LET B$=B$+" ":NEXT I
    770 RETURN
    790 OS=224:C0=OS+6:W=20
    795 MODE 5:VDU 23,0,8202;0;0;0;
    800 RETURN
    810 REM READ THE CHARACTERS
    820 VDU 23,224:FOR I=0 TO 7:READ A:VDU A:NEXT I
    830 FOR I=0 TO 11:VDU 23,230+I
    840     FOR J=0 TO 7:READ A:VDU A:NEXT J
    850 NEXT I:RETURN
    1000 DATA 255,255,255,255,255,255,255,255
    1010 DATA 0,0,0,0,0,0,0,0
    1020 DATA 85,170,85,170,85,170,85,170
    1030 DATA 0,60,24,60,126,126,126,60
    1040 DATA 0,56,100,114,95,73,41,31
    1050 DATA 20,42,20,20,93,93,62,99
    1060 DATA 60,126,255,255,255,253,255,255
    1070 DATA 60,102,195,129,129,129,133,129
    1080 DATA 129,66,36,0,0,36,66,129
    1090 DATA 0,60,66,66,66,66,60,0
    1100 DATA 76,158,170,190,84,30,37,88
    1110 DATA 0,56,84,124,56,44,68,102
    1120 DATA 0,8,28,42,127,85,65,34