Jamal..nasibmu..

Hari itu Kamis, 1 Oktober 2009. Jam setengah 8 pagi adalah saatnya kuliah grafika komputer. Pas kuliah, liat kiri kanan, nyari dimana anak buahku. Ternyata yang masuk cuma fikar. Mana 2 orang lainnya. Si ucup dan Jamal.
Yaudahlah, duduk no 2 dari depan, entah dijelaskan apa sama dosennya. Begitu banyak angka2 di slide , ditambah ngantuk tak terkira, rasanya pingin pulang secepatnya. tik..tok..tik..tok akhirnya mendekati jam pulang. Menjelang pulang, bu dosen mengabsen satu per satu. Sapa tau ada yg TA (titip absen). Ibunya cuma manggil yg tanda tangan disitu.

Yang mengejutkan, ibunya manggil "M. JAMALUDDIN". Tidak ada yg angkat tangan. Dipanggil sekali lagi "M. JAMALUDDIN". Dalam hatiku, wah jelas aja ga ada yg angkat tangan, lha wong dia ga masuk. Pertanyaannya : sapa yg TA-in dia? Bagaimana nasib Jamal selanjutnya?

Seisi kelas pun riuh gemuruh, seperti para jamaah Jumat di masjid ketika khatib membacakan doa.
"Wah si Jamal nih kenapa ya? Klo sakit ya ngomong aja"
Wah, ternyata dosennya lagi baik. Nasib jamal selamat. Ku kira dia akan langsung mendapat E. Klo itu terjadi, pasti si Jamal akan menangis sejadi-jadinya sambil berlari di tengah guyuran hujan. Begitu juga nasib yg TA-in. Selamat karena tidak ditanyain.

Kira-kira sapa yg jadi pelaku TA-nya Jamal?? jeng..jeng..Ini dia orangnya...
|
|
|
|
|
|
|
|
V

Code::blocks+Glut+Ubuntu

Salah seorang teman bertanya kepada saya, “IDE untuk glut, di linux pake apa ya?”
Jawabannya adalah pake saja code::blocks. Untuk settingan awalnya adalah sebagai berikut. (saya pake Ubuntu 9.04)
  1. Install Code::Blocks (yaiyalah...).
  2. Untuk mendapatkan library GLUT, install beberapa packages berikut : libxxf86vm, freeglut3.
  3. Sekarang coba buat project baru. Select File->New->Project. Pilih GLUT project, isikan sesuai keinginan. Ketika muncul jendela dibawah ini, isikan "/usr". Biasanya library-library terinstall di folder ini. Lalu lanjutkan, sampe selesai.
  4. Maka akan muncul code template. Sekarang coba langsung di tes. Tekan F9. Maka akan muncul seperti berikut. Horeeeee!! Berhasil!!

simple maze

Sekarang sudah masuk semester 5, artinya sudah setengah jalan ku lalui di ITS Teknik Informatika ini (Insya Allah kalo lancar jaya 4 tahun). Salah satu mata kuliah yang ku ambil di semester ini adalah grafika komputer.
Jadi ceritanya dapat tugas membuat koch snowflake dan simple maze. Karena ini tugas berkelompok, maka yg ku kebagian simple maze.

Gini soalnya :
Simple Maze
Untuk membuat sebuah simple maze, mulai dengan sebuah array berisi cell berbentuk
persegi empat. Setiap cell memiliki empat sisi. Buang sisi-sisi cell (kecuali dari garis
keliling luar) sampai semua cell terhubung. Lalu buatlah sebuah jalan masuk dan
keluar dengan membuang dua sisi dari garis keliling luar. Buatlah program dengan
masukan dua integer N dan M yang akan menghasilkan gambar maze N x M. Contoh
untuk maze 4 x 4 ada di bawah:


Kodenya dapat di donlot disini.
Saya akan menjelaskan algoritma membuat maze ini saja, jadi saya tidak akan menjelaskan mengenai openGLnya.
Untuk membuat maze seperti diatas, maka kita perlu membuat cell-cell, sesuai dengan yang diinginkan. Misalnya kita ingin membuat maze 10x10, maka kita akan membuat array 2 dimensi cell[10][10].
Cell ini mempunyai beberapa atribut, yaitu koordinat, dinding (kiri, kanan, atas, bawah), dan penanda. Jadi klo di bahasa C nya, cell ini adalah struct berikut

typedef struct {
int kiri, kanan, atas, bawah, visited;
GLfloat v[4][2];
}cell;

Pada kode, terdapat fungsi void init_kotak();
Fungsi ini sebagai inisialisasi awal semua cell. Keempat dinding diberi nilai 1, maksudnya berarti ada dindingnya. Nanti klo di jebol tinggal kasi angka 0 aja.
Jadi klo ditampilkan akan jadi seperti ini awalnya.


Skenarionya adalah kita akan menjebol dinding-dinding dari masing-masing cell, sehingga satu cell dengan cell lainnya terhubung. Setetah itu kita random mana yang jadi pintu keluar dan masuknya.
Algoritmanya adalah seperti ini :

1. Kita mulai dari sembarang cell.
klo di codingannya, ada pada fungsi void generate_maze(). Pertama dia akan memanggil fungsi random_kotak(rand()%panjang,rand()%tinggi). Artinya dia memulai dari sembarang cell.

2.Jika cell ini belum dikunjungi, maka tandai kalo cell ini sudah dikunjungi.
if (cells[x][y].visited == 0)
{
cells[x][y].visited = 1;
.....

3.Lalu di random, dinding mana yang akan dijebol. Jika yang bisa dijebol adalah dinding kiri, maka cell yang kanannya, dijebol tembok kanannya.

4.Sekarang pindah ke cell yang dipilih sesuai dinding yang dijebol tadi(rekursi).
Kembali ke langkah 2.

5.Lakukan sampai semua cell sudah dikunjungi semua.
Langkah 2 sampai 5 terdapat pada fungsi void random_kotak(int x, int y).

6.Buat pintu masuk dan keluar.
Terdapat pada fungsi void keluar_masuk().

Maka maze 10x10 akan jadi seperti ini


Masih bingung??Tanya aja langsung ke aku klo bingung..hehe..