Friday 19 February 2016

Program "Maze Generator"

Rajah 1: Maze Generator, Compute! December 1981
Lagi sekali, kita selongkar majalah Compute! di www.archive.org. Kali ini kita lihat isu 19, Disember 1981.  Ada suatu artikel di mukasurat 54 serta program yang menarik perhatian saya iaitu "Maze Generator".

Ianya ialah mengenai suatu algotrima pendek yang mampu menghasilkan sebuah maze secara rawak. Perinciannya meliputi komputer Commodore Pet (Microsoft BASIC) dan Atari 400/800. Contoh maze yang terhasil adalah seperti dalam Rajah 2.

Rajah 2: Contoh Maze
Rajah 3: Carta Alir "Maze Generator"
Algoritmanya adalah seperti dalam Rajah 3. Asasnya, maze dibina di dalam sebuah medan yang dinamakan "Background field" (BF). Ia terdiri daripada baris-baris (Y) yang jumlahnya ganjil. Setiap baris pula terbina dengan sel-sel (X) yang juga jumlahnya ganjil. Ianya membentuk jajaran (array) 2 dimensi X*Y; dengan koordinat (X,Y) = (0,0) terletak di penjuru atas-kanan.

"Maze Generator"

Pembinaan maze dimulakan dengan meletak penanda khas di sel (1,1). Kemudian nombor rawak 0 - 3 dipilih untuk menentukan arah pergerakan ke sel baharu (B). Sel baharu ini terletak selang satu sel daripada sel asal (A). Sel (penghadang) yang berada di antara dua sel tadi -- (A) dan (B) -- dipadam. Sekarang sel (B) menjadi sel (A); dan proses tadi diulang untuk mencari sel (b) yang baru; sehingga ketemu "jalan buntu".

Jika kebuntuan terjadi kurang daripada lima langkah, laluan yang telah terlakar akan diunduri sehingga bertemu dengan sel yang belum dipadam. Dari situ laluan baru akan dilakarkan dengan mengulangi lagi langkah-langkah tersebut di atas.

Program versi Microsoft BASIC

Berikut ialah program yang ditulis dengen Microsoft BASIC untuk Commodore Pet: