User Tools

Site Tools


en:the_magic_maze

THE MAGIC MAZE

Info

Author DGC Software
Computer Amstrad PCW 8256 / 8512 / 9512
Year 1993
Gender Arcade
Controls Keyboard
Languages English
Status Preserved

Screenshots

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

en/the_magic_maze.txt · Last modified: 2022/06/30 14:07 by jevicac