Skip to content
18 September 2009 / Jeffrey Hermanto Halimsetiawan

Perfect Maze Generator using Java OpenGL


Screenshot Perfect Maze Generator 125 x 145

PerfectMazeGenerator125x145

PerfectMazeGenerator125x145

Screenshot Perfect Maze Generator 45 x 65

PerfectMazeGenerator45x65

PerfectMazeGenerator45x65

Algoritma :

Buatlah sebuah array terlebih dahulu yang memiliki bentuk seperti di bawah ini :
1 adalah representasi tembok dan 0 adalah representasi jalan yang dapat dilalui.
  012345678
0 111111111
1 101010101
2 111111111
3 101010101
4 111111111
5 101010101
6 111111111

Kemudian pilih salah satu titik '0' sebagai titik start dengan random, semisal didapatkan titik 1,3.
Beri tanda titik 1,3 dengan angka lain semisal 5 untuk menandai bahwa titik tersebut telah dilalui.
  012345678
0 111111111
1 101510101
2 111111111
3 101010101
4 111111111
5 101010101
6 111111111

Lakukan random antara 0-3 untuk menentukan arah geraknya, semisal :
0 = atas
1 = kiri
2 = kanan
3 = bawah
Jika kita melakukan random, dan diperoleh angka 0 maka cek dua kotak di atasnya.
Titik sebelumnya 1,3 maka akan mengecek -1,3 karena -1 telah melewati batas array
maka harus dicari arah gerak lain dengan melakukan random kembali.
Misalnya, diperoleh angka 2 maka cek dua kotak di sebelah kanan titik tersebut, yaitu : 1,5.
Titik 1,5 masih bernilai '0' jadi kita dapat berpindah ke titik tersebut dan menghapus tembok
yang berada di titik 1,4 sehingga :
 012345678
0 111111111
1 101555101
2 111111111
3 101010101
4 111111111
5 101010101
6 111111111

Jika pada suatu titik, semua arah telah dicoba dan menemui jalan buntu 
maka kita harus melakukan backtracking dan kembali ke state sebelumnya.

Ulangi langkah-langkah diatas hingga semua titik '0' telah berubah menjadi titik '5'
dengan menggunakan rekursi ataupun iterasi dengan membuat stack sendiri.

Selamat mencoba :D

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: