MAZE ARTICLE
FILE INFORMATION
FILENAME(S): MAZE ARTICLE
FILE TYPE(S): PRG
FILE SIZE: 4.4K
FIRST SEEN: 2025-10-19 22:49:24
APPEARS ON: 1 disk(s)
FILE HASH
428892a175055954e4373316f128456da05a517bf5380c4e1e59b35c3ac466a9
FOUND ON DISKS (1 DISKS)
| DISK TITLE | FILENAME | FILE TYPE | COLLECTION | TRACK | SECTOR | ACTIONS |
|---|---|---|---|---|---|---|
| GOLD DISK JAN86 | MAZE ARTICLE | PRG | Radd Maxx | 3 | 4 | DOWNLOAD FILE |
FILE CONTENT & ANALYSIS
00000000: 83 8E 5E 0D 0D 0D 77 48 41 54 20 49 53 20 41 20 |..^...wHAT IS A | 00000010: 4D 41 5A 45 3F 0D 0D 61 20 4D 41 5A 45 20 49 53 |MAZE?..a MAZE IS| 00000020: 20 41 20 53 45 54 20 4F 46 20 27 52 4F 4F 4D 53 | A SET OF 'ROOMS| 00000030: 27 2C 20 4F 52 20 27 43 45 4C 4C 53 27 2C 0D 43 |', OR 'CELLS',.C| 00000040: 4F 4E 4E 45 43 54 45 44 20 49 4E 20 53 55 43 48 |ONNECTED IN SUCH| 00000050: 20 41 20 57 41 59 20 54 48 41 54 20 54 48 45 52 | A WAY THAT THER| 00000060: 45 20 49 53 0D 41 54 20 4C 45 41 53 54 20 4F 4E |E IS.AT LEAST ON| 00000070: 45 20 50 41 54 48 20 46 52 4F 4D 20 54 48 45 20 |E PATH FROM THE | 00000080: 45 4E 54 52 41 4E 43 45 20 54 4F 0D 54 48 45 20 |ENTRANCE TO.THE | 00000090: 45 58 49 54 2E 0D 0D 77 45 20 43 41 4E 20 44 52 |EXIT...wE CAN DR| 000000A0: 41 57 20 4F 4E 45 20 4C 49 4B 45 20 54 48 49 53 |AW ONE LIKE THIS| 000000B0: 3A 0D 0D 20 53 54 41 52 54 20 48 45 52 45 0D 0D |:.. START HERE..| 000000C0: 20 20 20 20 20 20 20 20 20 2A 20 2A 2A 2A 2A 2A | * *****| 000000D0: 2A 2A 0D 20 20 20 20 20 20 20 20 20 2A 20 2A 20 |**. * * | 000000E0: 2A 20 20 20 2A 0D 20 20 20 20 20 20 20 20 20 2A |* *. *| 000000F0: 20 2A 20 2A 20 2A 20 2A 0D 20 20 20 20 20 20 20 | * * * *. | 00000100: 20 20 2A 20 2A 20 20 20 2A 20 2A 0D 20 20 20 20 | * * * *. | 00000110: 20 20 20 20 20 2A 20 2A 2A 2A 20 2A 20 2A 0D 20 | * *** * *. | 00000120: 20 20 20 20 20 20 20 20 2A 20 20 20 2A 20 2A 20 | * * * | 00000130: 2A 0D 20 20 20 20 20 20 20 20 20 2A 20 2A 20 2A |*. * * *| 00000140: 20 2A 20 2A 0D 20 20 20 20 20 20 20 20 20 2A 20 | * *. * | 00000150: 2A 20 20 20 2A 20 20 20 20 45 58 49 54 0D 20 20 |* * EXIT. | 00000160: 20 20 20 20 20 20 20 2A 2A 2A 2A 2A 2A 2A 2A 2A | *********| 00000170: 0D 5E 0D 0D 6A 55 53 54 20 41 53 20 49 4D 50 4F |.^..jUST AS IMPO| 00000180: 52 54 41 4E 54 20 41 53 20 54 48 45 20 27 52 4F |RTANT AS THE 'RO| 00000190: 4F 4D 53 27 20 41 52 45 20 54 48 45 57 41 4C 4C |OMS' ARE THEWALL| 000001A0: 53 20 42 45 54 57 45 45 4E 20 54 48 45 4D 2E 20 |S BETWEEN THEM. | 000001B0: 20 77 45 20 57 49 4C 4C 20 47 45 4E 45 52 41 54 | wE WILL GENERAT| 000001C0: 45 20 41 0D 4D 41 5A 45 20 42 59 20 27 4B 4E 4F |E A.MAZE BY 'KNO| 000001D0: 43 4B 49 4E 47 20 44 4F 57 4E 27 20 54 48 45 20 |CKING DOWN' THE | 000001E0: 57 41 4C 4C 53 20 41 4E 44 0D 43 4F 4E 4E 45 43 |WALLS AND.CONNEC| 000001F0: 54 49 4E 47 20 54 48 45 20 52 4F 4F 4D 53 20 54 |TING THE ROOMS T| 00000200: 4F 47 45 54 48 45 52 2E 20 20 77 45 27 4C 4C 20 |OGETHER. wE'LL | 00000210: 44 4F 49 54 20 52 49 47 48 54 20 4F 4E 20 54 48 |DOIT RIGHT ON TH| 00000220: 45 20 53 43 52 45 45 4E 20 53 4F 20 59 4F 55 20 |E SCREEN SO YOU | 00000230: 43 41 4E 20 53 45 45 0D 48 4F 57 20 49 54 20 57 |CAN SEE.HOW IT W| 00000240: 4F 52 4B 53 2E 0D 0D 0D 74 48 45 20 50 52 4F 47 |ORKS....tHE PROG| 00000250: 52 41 4D 0D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 0D |RAM.-----------.| 00000260: 0D 66 4F 4C 4C 4F 57 49 4E 47 20 49 53 20 41 20 |.fOLLOWING IS A | 00000270: 43 4F 4D 50 4C 45 54 45 20 4C 49 53 54 49 4E 47 |COMPLETE LISTING| 00000280: 20 4F 46 20 41 0D 4D 41 5A 45 20 47 45 4E 45 52 | OF A.MAZE GENER| 00000290: 41 54 4F 52 20 50 52 4F 47 52 41 4D 2C 20 41 4C |ATOR PROGRAM, AL| 000002A0: 4F 4E 47 20 57 49 54 48 20 41 0D 44 45 54 41 49 |ONG WITH A.DETAI| 000002B0: 4C 45 44 20 44 45 53 43 52 49 50 54 49 4F 4E 20 |LED DESCRIPTION | 000002C0: 4F 46 20 45 41 43 48 20 50 4F 52 54 49 4F 4E 2E |OF EACH PORTION.| 000002D0: 0D 0D 0D 66 49 52 53 54 2C 20 57 45 20 48 41 56 |...fIRST, WE HAV| 000002E0: 45 20 54 4F 20 53 45 54 20 55 50 20 41 20 27 42 |E TO SET UP A 'B| 000002F0: 41 43 4B 47 52 4F 55 4E 44 27 20 46 4F 52 20 54 |ACKGROUND' FOR T| 00000300: 48 45 20 4D 41 5A 45 20 54 4F 20 42 45 20 44 52 |HE MAZE TO BE DR| 00000310: 41 57 4E 20 4F 4E 2E 0D 5E 0D 0D 20 31 30 30 20 |AWN ON..^.. 100 | 00000320: 50 52 49 4E 54 20 43 48 52 24 28 31 34 37 29 3B |PRINT CHR$(147);| 00000330: 0D 20 31 31 30 20 46 4F 52 20 49 3D 20 31 20 54 |. 110 FOR I= 1 T| 00000340: 4F 20 32 31 0D 20 31 32 30 20 50 52 49 4E 54 20 |O 21. 120 PRINT | 00000350: 43 48 52 24 28 31 38 29 3B 22 20 20 20 20 20 20 |CHR$(18);" | 00000360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | | 00000380: 20 22 0D 20 31 33 30 20 4E 45 58 54 0D 0D 74 48 | ". 130 NEXT..tH| 00000390: 45 20 46 49 52 53 54 20 27 52 4F 4F 4D 27 20 49 |E FIRST 'ROOM' I| 000003A0: 53 20 4F 4E 45 20 4C 49 4E 45 20 44 4F 57 4E 20 |S ONE LINE DOWN | 000003B0: 41 4E 44 0D 4F 4E 45 20 43 4F 4C 55 4D 4E 20 52 |AND.ONE COLUMN R| 000003C0: 49 47 48 54 20 4F 46 20 54 48 45 20 54 4F 50 20 |IGHT OF THE TOP | 000003D0: 4F 46 20 54 48 45 0D 53 51 55 41 52 45 20 57 45 |OF THE.SQUARE WE| 000003E0: 20 4A 55 53 54 20 44 52 45 57 2E 20 20 77 45 20 | JUST DREW. wE | 000003F0: 57 49 4C 4C 20 42 45 20 55 53 49 4E 47 0D 54 48 |WILL BE USING.TH| 00000400: 45 20 27 70 6F 6B 65 27 20 43 4F 4D 4D 41 4E 44 |E 'poke' COMMAND| 00000410: 20 54 4F 20 44 52 41 57 20 54 48 45 20 4D 41 5A | TO DRAW THE MAZ| 00000420: 45 20 53 4F 0D 57 45 20 57 49 4C 4C 20 4E 4F 57 |E SO.WE WILL NOW| 00000430: 20 53 45 54 20 41 20 56 41 52 49 41 42 4C 45 20 | SET A VARIABLE | 00000440: 28 70 29 20 54 4F 20 50 4F 49 4E 54 20 54 4F 20 |(p) TO POINT TO | 00000450: 54 48 45 20 4C 4F 43 41 54 49 4F 4E 20 4F 4E 20 |THE LOCATION ON | 00000460: 54 48 45 20 53 43 52 45 45 4E 20 4F 46 20 54 48 |THE SCREEN OF TH| 00000470: 45 0D 46 49 52 53 54 20 52 4F 4F 4D 2E 0D 5E 0D |E.FIRST ROOM..^.| 00000480: 0D 20 31 34 30 20 4C 45 54 20 50 3D 20 31 30 36 |. 140 LET P= 106| 00000490: 35 0D 0D 74 48 45 52 45 20 41 52 45 20 46 4F 55 |5..tHERE ARE FOU| 000004A0: 52 20 57 41 4C 4C 53 20 41 52 4F 55 4E 44 20 45 |R WALLS AROUND E| 000004B0: 41 43 48 20 52 4F 4F 4D 2C 0D 41 42 4F 56 45 2C |ACH ROOM,.ABOVE,| 000004C0: 20 42 45 4C 4F 57 2C 20 54 4F 20 54 48 45 20 4C | BELOW, TO THE L| 000004D0: 45 46 54 20 41 4E 44 20 54 4F 20 54 48 45 0D 52 |EFT AND TO THE.R| 000004E0: 49 47 48 54 2E 20 20 74 4F 20 4D 41 4B 45 20 54 |IGHT. tO MAKE T| 000004F0: 48 45 20 43 4F 4D 50 55 54 45 52 20 50 4F 49 4E |HE COMPUTER POIN| 00000500: 54 20 54 4F 0D 4F 4E 45 20 4F 46 20 54 48 45 53 |T TO.ONE OF THES| 00000510: 45 20 57 41 4C 4C 53 20 57 45 20 4D 55 53 54 20 |E WALLS WE MUST | 00000520: 54 41 4B 45 20 54 48 45 0D 50 4F 49 4E 54 45 52 |TAKE THE.POINTER| 00000530: 20 28 70 29 20 41 4E 44 20 41 44 44 20 4F 52 20 | (p) AND ADD OR | 00000540: 53 55 42 54 52 41 43 54 20 31 20 4F 52 20 34 30 |SUBTRACT 1 OR 40| 00000550: 2E 69 54 20 57 4F 55 4C 44 20 42 45 20 4D 55 43 |.iT WOULD BE MUC| 00000560: 48 20 4D 4F 52 45 20 43 4F 4E 56 45 4E 49 45 4E |H MORE CONVENIEN| 00000570: 54 20 54 4F 20 42 45 0D 41 42 4C 45 20 54 4F 20 |T TO BE.ABLE TO | 00000580: 52 45 50 52 45 53 45 4E 54 20 54 48 45 53 45 20 |REPRESENT THESE | 00000590: 46 4F 55 52 20 44 49 52 45 43 54 49 4F 4E 53 20 |FOUR DIRECTIONS | 000005A0: 42 59 20 41 20 4E 55 4D 42 45 52 20 42 45 54 57 |BY A NUMBER BETW| 000005B0: 45 45 4E 20 31 20 41 4E 44 20 34 2E 20 20 74 48 |EEN 1 AND 4. tH| 000005C0: 49 53 20 49 53 20 41 20 4A 4F 42 20 46 4F 52 20 |IS IS A JOB FOR | 000005D0: 41 4E 20 41 52 52 41 59 21 20 20 74 48 45 20 56 |AN ARRAY! tHE V| 000005E0: 41 52 49 41 42 4C 45 20 64 20 57 49 4C 4C 0D 48 |ARIABLE d WILL.H| 000005F0: 41 56 45 20 54 48 45 20 44 49 52 45 43 54 49 4F |AVE THE DIRECTIO| 00000600: 4E 20 49 4E 20 49 54 2E 0D 0D 20 31 35 30 20 44 |N IN IT... 150 D| 00000610: 49 4D 20 4D 28 34 29 0D 20 31 36 30 20 46 4F 52 |IM M(4). 160 FOR| 00000620: 20 44 3D 20 31 20 54 4F 20 34 0D 20 31 37 30 20 | D= 1 TO 4. 170 | 00000630: 52 45 41 44 20 4D 28 44 29 0D 20 31 38 30 20 4E |READ M(D). 180 N| 00000640: 45 58 54 0D 20 31 39 30 20 44 41 54 41 20 20 20 |EXT. 190 DATA | 00000650: 31 3A 52 45 4D 20 52 49 47 48 54 0D 20 32 30 30 |1:REM RIGHT. 200| 00000660: 20 44 41 54 41 20 20 34 30 3A 52 45 4D 20 44 4F | DATA 40:REM DO| 00000670: 57 4E 0D 20 32 31 30 20 44 41 54 41 20 20 2D 31 |WN. 210 DATA -1| 00000680: 3A 52 45 4D 20 4C 45 46 54 0D 20 32 32 30 20 44 |:REM LEFT. 220 D| 00000690: 41 54 41 20 2D 34 30 3A 52 45 4D 20 55 50 0D 5E |ATA -40:REM UP.^| 000006A0: 0D 0D 68 45 52 45 20 43 4F 4D 45 53 20 54 48 45 |..hERE COMES THE| 000006B0: 20 43 4F 4D 50 4C 49 43 41 54 45 44 20 50 41 52 | COMPLICATED PAR| 000006C0: 54 2E 20 20 77 45 0D 48 41 56 45 20 54 4F 20 47 |T. wE.HAVE TO G| 000006D0: 49 56 45 20 54 48 45 20 43 4F 4D 50 55 54 45 52 |IVE THE COMPUTER| 000006E0: 20 41 20 57 41 59 20 4F 46 0D 46 49 47 55 52 49 | A WAY OF.FIGURI| 000006F0: 4E 47 20 4F 55 54 20 57 48 49 43 48 20 57 41 4C |NG OUT WHICH WAL| 00000700: 4C 20 54 4F 20 52 45 4D 4F 56 45 20 54 4F 20 47 |L TO REMOVE TO G| 00000710: 45 54 54 4F 20 54 48 45 20 4E 45 58 54 20 52 4F |ETTO THE NEXT RO| 00000720: 4F 4D 2E 20 20 69 46 20 41 20 52 4F 4F 4D 20 48 |OM. iF A ROOM H| 00000730: 41 53 4E 27 54 20 42 45 45 4E 4F 50 45 4E 45 44 |ASN'T BEENOPENED| 00000740: 20 55 50 20 59 45 54 20 54 48 45 4E 20 57 45 20 | UP YET THEN WE | 00000750: 57 41 4E 54 20 54 4F 20 4B 4E 4F 43 4B 20 44 4F |WANT TO KNOCK DO| 00000760: 57 4E 54 48 45 20 57 41 4C 4C 20 41 4E 44 20 4D |WNTHE WALL AND M| 00000770: 4F 56 45 20 49 4E 54 4F 20 54 48 41 54 20 52 4F |OVE INTO THAT RO| 00000780: 4F 4D 2E 20 20 69 46 20 41 0D 52 4F 4F 4D 20 48 |OM. iF A.ROOM H| 00000790: 41 53 20 41 4C 52 45 41 44 59 20 42 45 45 4E 20 |AS ALREADY BEEN | 000007A0: 4F 50 45 4E 45 44 20 55 50 20 54 48 45 4E 20 57 |OPENED UP THEN W| 000007B0: 45 20 57 41 4E 54 20 54 4F 20 54 52 59 20 41 4E |E WANT TO TRY AN| 000007C0: 4F 54 48 45 52 20 52 4F 4F 4D 2C 20 41 4E 44 20 |OTHER ROOM, AND | 000007D0: 49 46 20 41 4C 4C 20 54 48 45 4E 45 49 47 48 42 |IF ALL THENEIGHB| 000007E0: 4F 55 52 49 4E 47 20 52 4F 4F 4D 53 20 48 41 56 |OURING ROOMS HAV| 000007F0: 45 20 42 45 45 4E 20 4F 50 45 4E 45 44 20 54 48 |E BEEN OPENED TH| 00000800: 45 4E 57 45 20 57 41 4E 54 20 54 4F 20 42 41 43 |ENWE WANT TO BAC| 00000810: 4B 2D 54 52 41 43 4B 20 54 4F 20 54 48 45 20 52 |K-TRACK TO THE R| 00000820: 4F 4F 4D 20 54 48 41 54 0D 4F 50 45 4E 45 44 20 |OOM THAT.OPENED | 00000830: 55 50 20 49 4E 54 4F 20 54 48 49 53 20 4F 4E 45 |UP INTO THIS ONE| 00000840: 20 41 4E 44 20 43 4F 4E 54 49 4E 55 45 0D 46 52 | AND CONTINUE.FR| 00000850: 4F 4D 20 54 48 45 52 45 2E 0D 0D 20 32 33 30 20 |OM THERE... 230 | 00000860: 4C 45 54 20 44 3D 30 0D 5E 0D 0D 74 48 45 20 4E |LET D=0.^..tHE N| 00000870: 45 58 54 20 50 41 52 54 20 49 53 20 54 48 45 20 |EXT PART IS THE | 00000880: 4D 41 49 4E 20 50 52 4F 47 52 41 4D 20 4C 4F 4F |MAIN PROGRAM LOO| 00000890: 50 2C 0D 49 54 20 49 53 20 57 48 45 52 45 20 54 |P,.IT IS WHERE T| 000008A0: 48 45 20 43 4F 4D 50 55 54 45 52 20 47 4F 45 53 |HE COMPUTER GOES| 000008B0: 20 57 48 45 4E 20 49 54 0D 48 41 53 20 47 4F 4E | WHEN IT.HAS GON| 000008C0: 45 20 49 4E 54 4F 20 41 20 4E 45 57 20 52 4F 4F |E INTO A NEW ROO| 000008D0: 4D 2E 20 20 77 48 41 54 20 57 45 20 44 4F 20 49 |M. wHAT WE DO I| 000008E0: 53 70 6F 6B 65 20 54 48 45 20 44 49 52 45 43 54 |Spoke THE DIRECT| 000008F0: 49 4F 4E 20 57 45 20 43 41 4D 45 20 66 72 6F 6D |ION WE CAME from| 00000900: 20 54 4F 20 47 45 54 0D 49 4E 54 4F 20 54 48 49 | TO GET.INTO THI| 00000910: 53 20 52 4F 4F 4D 2E 20 20 74 48 45 20 46 49 52 |S ROOM. tHE FIR| 00000920: 53 54 20 52 4F 4F 4D 20 49 53 20 41 20 4E 45 57 |ST ROOM IS A NEW| 00000930: 4F 4E 45 2C 20 41 4E 44 20 53 49 4E 43 45 20 57 |ONE, AND SINCE W| 00000940: 45 20 44 49 44 4E 27 54 20 45 4E 54 45 52 20 46 |E DIDN'T ENTER F| 00000950: 52 4F 4D 0D 41 4E 4F 54 48 45 52 20 52 4F 4F 4D |ROM.ANOTHER ROOM| 00000960: 20 54 48 45 20 44 49 52 45 43 54 49 4F 4E 20 49 | THE DIRECTION I| 00000970: 53 20 53 45 54 20 54 4F 0D 5A 45 52 4F 20 28 4C |S SET TO.ZERO (L| 00000980: 49 4E 45 20 32 33 30 2C 20 41 42 4F 56 45 29 2E |INE 230, ABOVE).| 00000990: 20 20 77 45 20 57 49 4C 4C 20 55 53 45 0D 54 48 | wE WILL USE.TH| 000009A0: 49 53 20 4C 41 54 45 52 20 53 4F 20 54 48 45 20 |IS LATER SO THE | 000009B0: 43 4F 4D 50 55 54 45 52 20 57 49 4C 4C 20 4B 4E |COMPUTER WILL KN| 000009C0: 4F 57 0D 57 48 45 4E 20 49 54 27 53 20 44 4F 4E |OW.WHEN IT'S DON| 000009D0: 45 20 44 52 41 57 49 4E 47 20 54 48 45 20 4D 41 |E DRAWING THE MA| 000009E0: 5A 45 2E 0D 0D 0D 20 32 34 30 20 50 4F 4B 45 20 |ZE.... 240 POKE | 000009F0: 50 2C 44 0D 0D 6E 4F 57 20 57 45 20 57 49 4C 4C |P,D..nOW WE WILL| 00000A00: 20 50 49 43 4B 20 41 20 4E 45 57 20 44 49 52 45 | PICK A NEW DIRE| 00000A10: 43 54 49 4F 4E 20 41 54 0D 52 41 4E 44 4F 4D 20 |CTION AT.RANDOM | 00000A20: 41 4E 44 20 53 45 54 20 41 20 43 4F 55 4E 54 45 |AND SET A COUNTE| 00000A30: 52 20 57 45 20 57 49 4C 4C 20 55 53 45 20 54 4F |R WE WILL USE TO| 00000A40: 0D 4B 4E 4F 57 20 57 48 45 4E 20 41 4C 4C 20 4E |.KNOW WHEN ALL N| 00000A50: 45 49 47 48 42 4F 55 52 49 4E 47 20 52 4F 4F 4D |EIGHBOURING ROOM| 00000A60: 53 20 48 41 56 45 0D 42 45 45 4E 20 54 52 49 45 |S HAVE.BEEN TRIE| 00000A70: 44 2E 0D 5E 0D 0D 20 32 35 30 20 4C 45 54 20 44 |D..^.. 250 LET D| 00000A80: 3D 20 49 4E 54 28 52 4E 44 28 30 29 2A 34 29 2B |= INT(RND(0)*4)+| 00000A90: 31 0D 20 32 36 30 20 4C 45 54 20 58 3D 20 30 0D |1. 260 LET X= 0.| 00000AA0: 0D 0D 76 41 52 49 41 42 4C 45 20 64 20 48 41 53 |..vARIABLE d HAS| 00000AB0: 20 41 20 44 49 52 45 43 54 49 4F 4E 20 49 4E 20 | A DIRECTION IN | 00000AC0: 49 54 2C 20 4C 45 54 27 53 20 53 45 45 20 49 46 |IT, LET'S SEE IF| 00000AD0: 20 57 45 20 43 41 4E 20 47 4F 20 54 48 41 54 20 | WE CAN GO THAT | 00000AE0: 57 41 59 2E 20 20 74 48 45 20 50 45 45 4B 0D 56 |WAY. tHE PEEK.V| 00000AF0: 41 4C 55 45 20 4F 46 20 41 20 52 45 56 45 52 53 |ALUE OF A REVERS| 00000B00: 45 20 53 50 41 43 45 20 49 53 20 31 36 30 2C 20 |E SPACE IS 160, | 00000B10: 41 4E 44 20 57 45 0D 48 41 56 45 20 54 4F 20 4C |AND WE.HAVE TO L| 00000B20: 4F 4F 4B 20 42 45 59 4F 4E 44 20 54 48 45 20 57 |OOK BEYOND THE W| 00000B30: 41 4C 4C 20 49 4E 54 4F 20 54 48 45 0D 41 44 4A |ALL INTO THE.ADJ| 00000B40: 41 43 45 4E 54 20 52 4F 4F 4D 2C 20 53 4F 20 57 |ACENT ROOM, SO W| 00000B50: 45 20 41 44 44 20 6D 28 64 29 20 54 4F 20 54 48 |E ADD m(d) TO TH| 00000B60: 45 0D 50 4F 49 4E 54 45 52 20 70 20 54 57 49 43 |E.POINTER p TWIC| 00000B70: 45 2E 0D 0D 20 32 37 30 20 49 46 20 50 45 45 4B |E... 270 IF PEEK| 00000B80: 28 50 2B 4D 28 44 29 2B 4D 28 44 29 29 3C 3E 31 |(P+M(D)+M(D))<>1| 00000B90: 36 30 20 54 48 45 4E 20 33 32 30 0D 0D 77 45 20 |60 THEN 320..wE | 00000BA0: 43 41 4E 20 47 4F 20 54 48 45 52 45 20 41 4E 44 |CAN GO THERE AND| 00000BB0: 20 4B 4E 4F 43 4B 20 44 4F 57 4E 20 54 48 45 20 | KNOCK DOWN THE | 00000BC0: 57 41 4C 4C 0D 0D 20 32 38 30 20 4C 45 54 20 50 |WALL.. 280 LET P| 00000BD0: 3D 20 50 2B 4D 28 44 29 0D 20 32 39 30 20 50 4F |= P+M(D). 290 PO| 00000BE0: 4B 45 20 50 2C 33 32 0D 0D 73 45 54 20 70 20 54 |KE P,32..sET p T| 00000BF0: 4F 20 50 4F 49 4E 54 20 49 4E 54 4F 20 54 48 45 |O POINT INTO THE| 00000C00: 20 52 4F 4F 4D 20 49 54 53 45 4C 46 3A 0D 0D 20 | ROOM ITSELF:.. | 00000C10: 33 30 30 20 4C 45 54 20 50 3D 20 50 2B 4D 28 44 |300 LET P= P+M(D| 00000C20: 29 0D 5E 0D 0D 61 4E 44 20 47 4F 20 42 41 43 4B |).^..aND GO BACK| 00000C30: 20 54 4F 20 54 48 45 20 4D 41 49 4E 20 4C 4F 4F | TO THE MAIN LOO| 00000C40: 50 3A 0D 0D 20 33 31 30 20 47 4F 54 4F 20 32 34 |P:.. 310 GOTO 24| 00000C50: 30 0D 0D 69 46 2C 20 48 4F 57 45 56 45 52 2C 20 |0..iF, HOWEVER, | 00000C60: 57 45 20 43 41 4E 27 54 20 47 4F 20 54 48 41 54 |WE CAN'T GO THAT| 00000C70: 20 57 41 59 20 54 48 45 4E 0D 57 45 27 4C 4C 20 | WAY THEN.WE'LL | 00000C80: 54 52 59 20 41 4E 4F 54 48 45 52 20 44 49 52 45 |TRY ANOTHER DIRE| 00000C90: 43 54 49 4F 4E 2E 0D 0D 20 33 32 30 20 4C 45 54 |CTION... 320 LET| 00000CA0: 20 44 3D 20 44 2B 31 0D 20 33 33 30 20 49 46 20 | D= D+1. 330 IF | 00000CB0: 44 3E 34 20 54 48 45 4E 20 44 3D 31 0D 0D 62 55 |D>4 THEN D=1..bU| 00000CC0: 54 20 4F 4E 4C 59 20 49 46 20 57 45 20 48 41 56 |T ONLY IF WE HAV| 00000CD0: 45 4E 27 54 20 54 52 49 45 44 20 41 4C 4C 20 46 |EN'T TRIED ALL F| 00000CE0: 4F 55 52 0D 4F 46 20 54 48 45 4D 20 41 4C 52 45 |OUR.OF THEM ALRE| 00000CF0: 41 44 59 2E 0D 0D 20 33 34 30 20 4C 45 54 20 58 |ADY... 340 LET X| 00000D00: 3D 20 58 2B 31 0D 20 33 35 30 20 49 46 20 58 3C |= X+1. 350 IF X<| 00000D10: 34 20 54 48 45 4E 20 32 37 30 0D 5E 0D 0D 61 54 |4 THEN 270.^..aT| 00000D20: 20 54 48 49 53 20 50 4F 49 4E 54 20 57 45 27 56 | THIS POINT WE'V| 00000D30: 45 20 45 58 48 41 55 53 54 45 44 20 41 4C 4C 20 |E EXHAUSTED ALL | 00000D40: 46 4F 55 52 0D 4E 45 49 47 48 42 4F 55 52 53 20 |FOUR.NEIGHBOURS | 00000D50: 53 4F 20 49 54 27 53 20 54 49 4D 45 20 54 4F 20 |SO IT'S TIME TO | 00000D60: 42 41 43 4B 2D 54 52 41 43 4B 0D 4F 4E 45 20 53 |BACK-TRACK.ONE S| 00000D70: 54 45 50 2E 20 20 68 45 52 45 27 53 20 57 48 45 |TEP. hERE'S WHE| 00000D80: 52 45 20 54 48 45 20 44 49 52 45 43 54 49 4F 4E |RE THE DIRECTION| 00000D90: 0D 70 6F 6B 65 44 20 49 4E 20 4C 49 4E 45 20 32 |.pokeD IN LINE 2| 00000DA0: 34 30 20 47 45 54 53 20 55 53 45 44 2E 20 20 6E |40 GETS USED. n| 00000DB0: 4F 54 45 20 54 48 41 54 0D 49 46 20 54 48 45 20 |OTE THAT.IF THE | 00000DC0: 44 49 52 45 43 54 49 4F 4E 20 49 53 20 45 51 55 |DIRECTION IS EQU| 00000DD0: 41 4C 20 54 4F 20 5A 45 52 4F 20 54 48 45 4E 0D |AL TO ZERO THEN.| 00000DE0: 57 45 20 48 41 56 45 20 42 41 43 54 52 41 43 4B |WE HAVE BACTRACK| 00000DF0: 45 44 20 52 49 47 48 54 20 42 41 43 4B 20 54 4F |ED RIGHT BACK TO| 00000E00: 20 57 48 45 52 45 0D 57 45 20 53 54 41 52 54 45 | WHERE.WE STARTE| 00000E10: 44 20 41 4E 44 20 41 52 45 20 46 49 4E 49 53 48 |D AND ARE FINISH| 00000E20: 45 44 20 44 52 41 57 49 4E 47 20 54 48 45 20 4D |ED DRAWING THE M| 00000E30: 41 5A 45 2E 0D 0D 20 33 36 30 20 4C 45 54 20 44 |AZE... 360 LET D| 00000E40: 3D 20 50 45 45 4B 28 50 29 0D 20 33 37 30 20 50 |= PEEK(P). 370 P| 00000E50: 4F 4B 45 20 50 2C 33 32 0D 20 33 38 30 20 49 46 |OKE P,32. 380 IF| 00000E60: 20 44 3D 30 20 54 48 45 4E 20 34 31 30 0D 0D 77 | D=0 THEN 410..w| 00000E70: 45 20 73 75 62 74 72 61 63 74 20 54 48 45 20 56 |E subtract THE V| 00000E80: 41 4C 55 45 20 4F 46 20 6D 28 64 29 20 46 52 4F |ALUE OF m(d) FRO| 00000E90: 4D 20 54 48 45 0D 50 4F 49 4E 54 45 52 20 70 20 |M THE.POINTER p | 00000EA0: 54 4F 20 41 43 43 4F 4D 50 4C 49 53 48 20 54 48 |TO ACCOMPLISH TH| 00000EB0: 45 0D 42 41 43 4B 2D 54 52 41 43 4B 49 4E 47 2E |E.BACK-TRACKING.| 00000EC0: 0D 0D 20 33 39 30 20 4C 45 54 20 50 3D 20 50 2D |.. 390 LET P= P-| 00000ED0: 4D 28 44 29 2D 4D 28 44 29 0D 20 34 30 30 20 47 |M(D)-M(D). 400 G| 00000EE0: 4F 54 4F 20 32 35 30 0D 5E 0D 0D 76 4F 49 4C 41 |OTO 250.^..vOILA| 00000EF0: 21 20 20 77 45 27 52 45 20 41 4C 4C 20 44 4F 4E |! wE'RE ALL DON| 00000F00: 45 20 54 48 45 20 4D 41 5A 45 20 4E 4F 57 2C 20 |E THE MAZE NOW, | 00000F10: 41 4E 44 41 4C 4C 20 57 45 20 48 41 56 45 20 54 |ANDALL WE HAVE T| 00000F20: 4F 20 44 4F 20 49 53 20 53 45 54 20 41 4E 20 45 |O DO IS SET AN E| 00000F30: 4E 54 52 59 20 41 4E 44 0D 45 58 49 54 20 50 4F |NTRY AND.EXIT PO| 00000F40: 49 4E 54 20 53 4F 4D 45 57 48 45 52 45 20 4F 4E |INT SOMEWHERE ON| 00000F50: 20 54 48 45 20 45 44 47 45 2E 0D 6E 4F 20 4D 41 | THE EDGE..nO MA| 00000F60: 54 54 45 52 20 57 48 45 52 45 20 54 48 45 20 45 |TTER WHERE THE E| 00000F70: 4E 54 52 59 20 41 4E 44 20 45 58 49 54 20 41 52 |NTRY AND EXIT AR| 00000F80: 45 0D 54 48 45 52 45 20 57 49 4C 4C 20 41 4C 57 |E.THERE WILL ALW| 00000F90: 41 59 53 20 42 45 20 4F 4E 45 20 55 4E 49 51 55 |AYS BE ONE UNIQU| 00000FA0: 45 20 50 41 54 48 0D 42 45 54 57 45 45 4E 20 54 |E PATH.BETWEEN T| 00000FB0: 48 45 4D 2E 0D 0D 20 34 31 30 20 50 4F 4B 45 20 |HEM... 410 POKE | 00000FC0: 31 30 32 35 2C 33 32 0D 20 34 32 30 20 50 4F 4B |1025,32. 420 POK| 00000FD0: 45 20 31 38 36 31 2C 33 32 0D 20 34 33 30 20 45 |E 1861,32. 430 E| 00000FE0: 4E 44 0D 5E 0D 0D 77 48 45 52 45 20 44 4F 20 57 |ND.^..wHERE DO W| 00000FF0: 45 20 47 4F 20 46 52 4F 4D 20 48 45 52 45 20 3F |E GO FROM HERE ?| 00001000: 0D 0D 74 48 49 53 20 49 53 20 4E 4F 54 20 54 48 |..tHIS IS NOT TH| 00001010: 45 20 4F 4E 4C 59 20 54 59 50 45 20 4F 46 20 4D |E ONLY TYPE OF M| 00001020: 41 5A 45 20 54 48 41 54 0D 43 41 4E 20 42 45 20 |AZE THAT.CAN BE | 00001030: 44 52 41 57 4E 2C 20 49 54 20 49 53 20 41 4C 53 |DRAWN, IT IS ALS| 00001040: 4F 20 50 4F 53 53 49 42 4C 45 20 54 4F 0D 44 52 |O POSSIBLE TO.DR| 00001050: 41 57 20 41 20 4D 41 5A 45 20 57 49 54 48 20 4D |AW A MAZE WITH M| 00001060: 4F 52 45 20 54 48 41 4E 20 4F 4E 45 20 50 41 54 |ORE THAN ONE PAT| 00001070: 48 20 46 52 4F 4D 54 48 45 20 45 4E 54 52 59 20 |H FROMTHE ENTRY | 00001080: 54 4F 20 54 48 45 20 45 58 49 54 2C 20 54 4F 20 |TO THE EXIT, TO | 00001090: 44 52 41 57 20 41 0D 43 49 52 43 55 4C 41 52 20 |DRAW A.CIRCULAR | 000010A0: 4D 41 5A 45 20 49 4E 53 54 45 41 44 20 4F 46 20 |MAZE INSTEAD OF | 000010B0: 53 51 55 41 52 45 2C 20 41 4E 44 20 53 4F 0D 4F |SQUARE, AND SO.O| 000010C0: 4E 2E 20 20 77 45 20 43 41 4E 20 45 56 45 4E 20 |N. wE CAN EVEN | 000010D0: 48 41 56 45 20 54 48 45 20 43 4F 4D 50 55 54 45 |HAVE THE COMPUTE| 000010E0: 52 0D 53 4F 4C 56 45 20 54 48 45 20 4D 41 5A 45 |R.SOLVE THE MAZE| 000010F0: 20 49 54 53 45 4C 46 21 0D 0D 69 54 27 53 20 57 | ITSELF!..iT'S W| 00001100: 48 45 52 45 20 59 4F 55 52 20 49 4D 41 47 49 4E |HERE YOUR IMAGIN| 00001110: 41 54 49 4F 4E 20 54 41 4B 45 53 20 49 54 2E 0D |ATION TAKES IT..| 00001120: 0D 0D 0D 0D 0D 0D 0D 68 49 54 20 3C 73 50 41 43 |.......hIT <sPAC| 00001130: 45 20 62 41 52 3E 20 54 4F 20 45 58 45 43 55 54 |E bAR> TO EXECUT| 00001140: 45 20 45 58 41 4D 50 4C 45 0D 0D 73 4F 55 52 43 |E EXAMPLE..sOURC| 00001150: 45 20 43 4F 44 45 20 49 4E 20 46 49 4C 45 3A 20 |E CODE IN FILE: | 00001160: 6D 61 7A 65 5E 5E 5E 5E 5E 5E 5E |maze^^^^^^^ |
..^...WHAT IS A MAZE?..A MAZE IS A SET O
F 'ROOMS', OR 'CELLS',.CONNECTED IN SUCH
A WAY THAT THERE IS.AT LEAST ONE PATH F
ROM THE ENTRANCE TO.THE EXIT...WE CAN DR
AW ONE LIKE THIS:.. START HERE..
* *******. * * * *. *
* * * *. * * * *. * *
** * *. * * * *. * * *
* *. * * * EXIT. *
********.^..JUST AS IMPORTANT AS THE 'RO
OMS' ARE THEWALLS BETWEEN THEM. WE WILL
GENERATE A.MAZE BY 'KNOCKING DOWN' THE
WALLS AND.CONNECTING THE ROOMS TOGETHER.
WE'LL DOIT RIGHT ON THE SCREEN SO YOU
CAN SEE.HOW IT WORKS....THE PROGRAM.----
-------..FOLLOWING IS A COMPLETE LISTING
OF A.MAZE GENERATOR PROGRAM, ALONG WITH
A.DETAILED DESCRIPTION OF EACH PORTION.
...FIRST, WE HAVE TO SET UP A 'BACKGROUN
D' FOR THE MAZE TO BE DRAWN ON..^.. 100
PRINT CHR$(147);. 110 FOR I= 1 TO 21. 12
0 PRINT CHR$(18);"
". 130 NEXT..THE FIRST
'ROOM' IS ONE LINE DOWN AND.ONE COLUMN R
IGHT OF THE TOP OF THE.SQUARE WE JUST DR
EW. WE WILL BE USING.THE 'POKE' COMMAND
TO DRAW THE MAZE SO.WE WILL NOW SET A V
ARIABLE (P) TO POINT TO THE LOCATION ON
THE SCREEN OF THE.FIRST ROOM..^.. 140 LE
T P= 1065..THERE ARE FOUR WALLS AROUND E
ACH ROOM,.ABOVE, BELOW, TO THE LEFT AND
TO THE.RIGHT. TO MAKE THE COMPUTER POIN
T TO.ONE OF THESE WALLS WE MUST TAKE THE
.POINTER (P) AND ADD OR SUBTRACT 1 OR 40
.IT WOULD BE MUCH MORE CONVENIENT TO BE.
ABLE TO REPRESENT THESE FOUR DIRECTIONS
BY A NUMBER BETWEEN 1 AND 4. THIS IS A
JOB FOR AN ARRAY! THE VARIABLE D WILL.H
AVE THE DIRECTION IN IT... 150 DIM M(4).
160 FOR D= 1 TO 4. 170 READ M(D). 180 N
EXT. 190 DATA 1:REM RIGHT. 200 DATA 4
0:REM DOWN. 210 DATA -1:REM LEFT. 220 D
ATA -40:REM UP.^..HERE COMES THE COMPLIC
ATED PART. WE.HAVE TO GIVE THE COMPUTER
A WAY OF.FIGURING OUT WHICH WALL TO REM
OVE TO GETTO THE NEXT ROOM. IF A ROOM H
ASN'T BEENOPENED UP YET THEN WE WANT TO
KNOCK DOWNTHE WALL AND MOVE INTO THAT RO
OM. IF A.ROOM HAS ALREADY BEEN OPENED U
P THEN WE WANT TO TRY ANOTHER ROOM, AND
IF ALL THENEIGHBOURING ROOMS HAVE BEEN O
PENED THENWE WANT TO BACK-TRACK TO THE R
OOM THAT.OPENED UP INTO THIS ONE AND CON
TINUE.FROM THERE... 230 LET D=0.^..THE N
EXT PART IS THE MAIN PROGRAM LOOP,.IT IS
WHERE THE COMPUTER GOES WHEN IT.HAS GON
E INTO A NEW ROOM. WHAT WE DO ISPOKE TH
E DIRECTION WE CAME FROM TO GET.INTO THI
S ROOM. THE FIRST ROOM IS A NEWONE, AND
SINCE WE DIDN'T ENTER FROM.ANOTHER ROOM
THE DIRECTION IS SET TO.ZERO (LINE 230,
ABOVE). WE WILL USE.THIS LATER SO THE
COMPUTER WILL KNOW.WHEN IT'S DONE DRAWIN
G THE MAZE.... 240 POKE P,D..NOW WE WILL
PICK A NEW DIRECTION AT.RANDOM AND SET
A COUNTER WE WILL USE TO.KNOW WHEN ALL N
EIGHBOURING ROOMS HAVE.BEEN TRIED..^.. 2
50 LET D= INT(RND(0)*4)+1. 260 LET X= 0.
..VARIABLE D HAS A DIRECTION IN IT, LET'
S SEE IF WE CAN GO THAT WAY. THE PEEK.V
ALUE OF A REVERSE SPACE IS 160, AND WE.H
AVE TO LOOK BEYOND THE WALL INTO THE.ADJ
ACENT ROOM, SO WE ADD M(D) TO THE.POINTE
R P TWICE... 270 IF PEEK(P+M(D)+M(D))<>1
60 THEN 320..WE CAN GO THERE AND KNOCK D
OWN THE WALL.. 280 LET P= P+M(D). 290 PO
KE P,32..SET P TO POINT INTO THE ROOM IT
SELF:.. 300 LET P= P+M(D).^..AND GO BACK
TO THE MAIN LOOP:.. 310 GOTO 240..IF, H
OWEVER, WE CAN'T GO THAT WAY THEN.WE'LL
TRY ANOTHER DIRECTION... 320 LET D= D+1.
330 IF D>4 THEN D=1..BUT ONLY IF WE HAV
EN'T TRIED ALL FOUR.OF THEM ALREADY... 3
40 LET X= X+1. 350 IF X<4 THEN 270.^..AT
THIS POINT WE'VE EXHAUSTED ALL FOUR.NEI
GHBOURS SO IT'S TIME TO BACK-TRACK.ONE S
TEP. HERE'S WHERE THE DIRECTION.POKED I
N LINE 240 GETS USED. NOTE THAT.IF THE
DIRECTION IS EQUAL TO ZERO THEN.WE HAVE
BACTRACKED RIGHT BACK TO WHERE.WE STARTE
D AND ARE FINISHED DRAWING THE MAZE... 3
60 LET D= PEEK(P). 370 POKE P,32. 380 IF
D=0 THEN 410..WE SUBTRACT THE VALUE OF
M(D) FROM THE.POINTER P TO ACCOMPLISH TH
E.BACK-TRACKING... 390 LET P= P-M(D)-M(D
). 400 GOTO 250.^..VOILA! WE'RE ALL DON
E THE MAZE NOW, ANDALL WE HAVE TO DO IS
SET AN ENTRY AND.EXIT POINT SOMEWHERE ON
THE EDGE..NO MATTER WHERE THE ENTRY AND
EXIT ARE.THERE WILL ALWAYS BE ONE UNIQU
E PATH.BETWEEN THEM... 410 POKE 1025,32.
420 POKE 1861,32. 430 END.^..WHERE DO W
E GO FROM HERE ?..THIS IS NOT THE ONLY T
YPE OF MAZE THAT.CAN BE DRAWN, IT IS ALS
O POSSIBLE TO.DRAW A MAZE WITH MORE THAN
ONE PATH FROMTHE ENTRY TO THE EXIT, TO
DRAW A.CIRCULAR MAZE INSTEAD OF SQUARE,
AND SO.ON. WE CAN EVEN HAVE THE COMPUTE
R.SOLVE THE MAZE ITSELF!..IT'S WHERE YOU
R IMAGINATION TAKES IT.........HIT <SPAC
E BAR> TO EXECUTE EXAMPLE..SOURCE CODE I
N FILE: MAZE^^^^^^^
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL