====== THE MAGIC MAZE ====== {{:otros:The_Magic_Maze_p1.jpg?690|}} ===== Info ===== ^ Author | DGC Software | ^ Computer | Amstrad PCW 8256 / 8512 / 9512 | ^ Year | 1993 | ^ Gender | Arcade | ^ Controls | Keyboard | ^ Languages | English | ^ Status | [[preserved|Preserved]] | ===== Screenshots ===== {{:otros:The_Magic_Maze_screenshot01.png?220}} {{:otros:The_Magic_Maze_screenshot02.png?220}} {{:otros:The_Magic_Maze_screenshot03.png?220}} {{:otros:The_Magic_Maze_screenshot04.png?220}} ===== Description ===== We are in the center of a maze, we will have to move around it by means of the four cursor keys, vertically or horizontally. You have to try to collect all the leads in the maze (10 points). When all the keys are collected, the game will end the level and we will move on to the next one, which is completely new. There are two things that are very unusual within the magical labyrinth. First of all, as we move, the labyrinth will change as we go, this can be an advantage or a disadvantage. Second, from any given position we will only be able to move in a direction that has a key or path that actually changes the current position either vertically or horizontally. As a result it is much more difficult to see in advance what exits are possible from a given position before we move there. In fact, it is quite possible to completely abandon a path that changes behind us. At any time during the game, we can press EXIT to choose a new game or leave it permanently. ===== Listing ===== * **__Listing - AMAZE.BAS__** 10 OPTION RUN 20 GOSUB 450:PRINT e$"0"e$"f":POKE paper,170 30 a$=" ":aa=0:bb=0:CALL pr(aa,bb,a$) 40 a$=" ":aa=0:bb=2:CALL pr(aa,bb,a$) 50 a$=" THE MAGIC MAZE":aa=24:bb=0:CALL pr(aa,bb,a$):POKE double,0 60 a$=" ¤1993 DGC Software ":aa=22:bb=2:CALL pr(aa,bb,a$):POKE double,1 70 a$=" ":aa=0:bb=28:CALL pr(aa,bb,a$) 80 a$=" ":FOR bb=4 TO 28:FOR aa=0 TO 86 STEP 86:CALL pr(aa,bb,a$):NEXT:NEXT 90 a$=" ":aa=0:bb=30:CALL pr(aa,bb,a$) 100 a$="THE MAZE IS NOW BEING PRINTED: PLEASE WAIT ":aa=2:bb=29:CALL pr(aa,bb,a$) 110 POKE paper,0 120 key=0:FOR a=0 TO 19:FOR b=0 TO 11:z=INT(RND*12)+1:s(a,b)=z:GOSUB 350:GOSUB 420:NEXT:NEXT 130 a=10:b=7:z=13:IF s(a,b)=12 THEN key=key-1 131 s(a,b)=z:GOSUB 350 140 POKE paper,170:a$=" LEVEL: SCORE: ":aa=2:bb=29:CALL pr(aa,bb,a$):POKE paper,0 150 GOSUB 440 160 lev=lev+1:a$=STR$(lev):aa=23:bb=29:CALL pr(aa,bb,a$) 170 z$=INPUT$(1):z=INSTR(CHR$(1)+CHR$(6)+CHR$(30)+CHR$(31)+CHR$(27),z$):IF z=0 GOTO 170 180 ON z GOSUB 190,220,250,280,310:GOTO 170 190 IF a>0 THEN IF NOT(s(a-1,b)=5 OR s(a-1,b)=6 OR s(a-1,b)=10 OR s(a-1,b)=11 OR s(a-1,b)=12) THEN z=INT(RND*11)+1:s(a,b)=z:GOSUB 350:a=a-1:z=13:GOSUB 350:RETURN 200 IF a>0 THEN IF s(a-1,b)=12 THEN z=INT(RND*11)+1:s(a,b)=z:GOSUB 350:a=a-1:z=13:GOSUB 350:GOSUB 410:RETURN 210 RETURN 220 IF a<19 THEN IF NOT(s(a+1,b)=3 OR s(a+1,b)=6 OR s(a+1,b)=8 OR s(a+1,b)=9 OR s(a+1,b)=12) THEN z=INT(RND*11)+1:s(a,b)=z:GOSUB 350:a=a+1:z=13:GOSUB 350:RETURN 230 IF a<19 THEN IF s(a+1,b)=12 THEN z=INT(RND*11)+1:s(a,b)=z:GOSUB 350:a=a+1:z=13:GOSUB 350:GOSUB 410:RETURN 240 RETURN 250 IF b<11 THEN IF NOT(s(a,b+1)=4 OR s(a,b+1)=7 OR s(a,b+1)=9 OR s(a,b+1)=10 OR s(a,b+1)=12) THEN z=INT(RND*11)+1:s(a,b)=z:GOSUB 350:b=b+1:z=13:GOSUB 350:RETURN 260 IF b<11 THEN IF s(a,b+1)=12 THEN z=INT(RND*11)+1:s(a,b)=z:GOSUB 350:b=b+1:z=13:GOSUB 350:GOSUB 410:RETURN 270 RETURN 280 IF b>0 THEN IF NOT(s(a,b-1)=2 OR s(a,b-1)=7 OR s(a,b-1)=8 OR s(a,b-1)=11 OR s(a,b-1)=12) THEN z=INT(RND*11)+1:s(a,b)=z:GOSUB 350:b=b-1:z=13:GOSUB 350:RETURN 290 IF b>0 THEN IF s(a,b-1)=12 THEN z=INT(RND*11)+1:s(a,b)=z:GOSUB 350:b=b-1:z=13:GOSUB 350:GOSUB 410:RETURN 300 RETURN 310 PRINT FNat$(14,25)" " 320 PRINT FNat$(15,25)" ANOTHER GO? " 330 PRINT FNat$(16,25)" " 340 x$=INPUT$(1):IF UPPER$(x$)="Y" THEN lev=0:sc=0:GOTO 430 ELSE PRINT e$ "e":MEMORY highmem!:END 350 IF a=10 AND b=8 THEN a(a,b)=5 351 aa=(a*4)+5:bb=(b*2)+4:a$=g$(z):IF z>11 THEN POKE pen,170 360 IF z=13 THEN POKE paper,255 370 CALL pr(aa,bb,a$) 380 IF z>11 THEN POKE pen,255 390 IF z=13 THEN POKE paper,0 400 RETURN 410 FOR f=1 TO 10:FOR ff=1 TO 80:NEXT:OUT 248,11:OUT 248,12:sc=sc+1:a$=STR$(sc):aa=71:bb=29:CALL pr(aa,bb,a$):NEXT:key=key-1:IF key<1 THEN GOTO 430 ELSE RETURN 420 IF z=12 THEN key=key+1:RETURN ELSE RETURN 430 ERASE s:DIM s(20,12):POKE paper,170:GOTO 100 440 PRINT FNat$(0,0)CHR$(7):a$=STR$(sc):aa=71:bb=29:CALL pr(aa,bb,a$):RETURN 450 DEFINT a-z:highmem!=HIMEM:MEMORY &HCFFF:e$=CHR$(27):cls$=e$+"E"+e$+"H" 460 rev$=e$+"p":rof$=e$+"q" 470 DEF FNat$(x,y)=e$+"Y"+CHR$(32+x)+CHR$(32+y) 480 DIM s(21,15),g$(15):a=2 490 RESTORE 660:address=&HE000 500 READ code:WHILE code<256:POKE address,code:address=address+1:READ code:WEND 510 screen=&HE000:pr=&HE003:UDGs=&HD100:pen=&HD001:paper=&HD000:double=&HD006 520 RESTORE 560:FOR i=0 TO 151:READ j:POKE udgs+i,j:NEXT 530 RANDOMIZE PEEK(64504!):FOR x=0 TO 13:READ l,m:g$(x)=CHR$(l)+CHR$(m):NEXT 540 POKE DOUBLE,a:POKE paper,0:POKE pen,255 550 PRINT cls$:CALL screen:RETURN 560 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 570 DATA 3,3,3,3,3,3,3,3,192,192,192,192,192,192,192,192 580 DATA 0,0,0,255,255,0,0,0,3,3,3,255,255,3,3,3 590 DATA 192,192,192,255,255,192,192,192,3,3,3,255,255,0,0,0 600 DATA 192,192,192,255,255,0,0,0,0,0,0,255,255,3,3,3 610 DATA 0,0,0,255,255,192,192,192,192,192,192,192,192,0,0,0 620 DATA 3,3,3,3,3,0,0,0,0,0,0,192,192,192,192,192,0,0,0,3,3,3,3,3 630 DATA 255,195,153,152,152,153,195,255,255,255,255,1,1,171,41,255 640 DATA 252,249,252,128,144,144,243,227,63,159,63,1,9,9,207,199 650 DATA 0,1,5,6,7,8,2,6,9,10,5,3,2,3,4,4,12,8,14,10,9,13,7,11,15,16,17,18 660 DATA 195,6,224,195,91,224,205,41,224,17,152,44,33,0,182,1,104,1,62 670 DATA 32,245,213,62,8,115,35,114,35,19,61,32,248,209,235,9,235,241,61 680 DATA 32,236,201,193,205,90,252,233,0,201,102,26,111,34,2,208,10,50,16 690 DATA 208,3,10,111,3,10,103,237,75,16,208,6,0,17,19,208,237,176,42 700 DATA 2,208,205,252,224,34,4,208,33,19,208,34,17,208,201,205,48,224,205 710 DATA 41,224,243,42,17,208,126,35,34,17,208,205,234,224,17,79,225,1,8 720 DATA 0,237,176,221,42,4,208,14,8,253,33,79,225,42,0,208,125,6,8 730 DATA 253,203,0,6,56,13,7,221,203,8,22,221,203,0,22,7,195,164,224 740 DATA 203,4,221,203,8,22,221,203,0,22,203,4,221,203,8,22,221,203,0 750 DATA 22,16,215,253,35,58,6,208,167,202,209,224,221,126,8,221,119,9,221 760 DATA 126,0,221,119,1,221,35,121,254,5,194,209,224,1,200,2,221,9,79 770 DATA 221,35,13,194,130,224,42,4,208,1,16,0,9,34,4,208,33,16,208 780 DATA 53,194,98,224,251,201,17,0,184,254,32,48,3,17,0,209,111,38,0 790 DATA 41,41,41,25,201,92,38,0,84,203,37,1,15,225,9,78,35,70,235 800 DATA 41,41,41,9,201,48,89,0,92,208,94,160,97,112,100,64,103,16,106 810 DATA 224,108,176,111,128,114,80,117,32,120,240,122,192,125,144,128,96,131,48 820 DATA 134,0,137,208,139,160,142,112,145,64,148,16,151,224,153,176,156,128,159 830 DATA 80,162,32,165,240,167,192,170,144,173,96,176,0,0,0,0,0,0,256 ===== Controls ===== ↑ = UP ↓ = DOWN → = RIGHT ← = LEFT EXIT = LEAVE GAME ===== Loading the program ===== 1.- Insert the CP/M disc on side 2 2.- Write BASIC and wait for it to load 3.- Remove the CP/M disk and insert the disk containing the game The Magic Maze 4.- Type run "Amaze" and press the "ENTER" key ===== Download ===== * {{:otros:The Magic Maze (Basic).zip|The Magic Maze }}(game in dsk format, compressed with zip)