Minggu, 08 April 2012

Analisa Game >>> Tetris


Gambaran Umum Game
Tetris adalah permainan teka-teki yang disusun dan diprogram oleh sepasang programmer berkebangsaan Rusia. Dalam permainan tetris, balok-balok tetris berjatuhan ke area permainan dalam waktu konstan[1]. Saat bermain tetris pemain dapat mengontrol jatuhnya tetris dengan 2 jenis tombol kendali. Tombol yang pertama yaitu tombol arah panah yang biasanya berada disebelah kiri layar, terdiri dari panah kanan-kiri untuk menggerakan balok ke kiri dan kanan, lalu tombol panah ke bawah untuk mempercepat turunnya balok. Selain tombol arah panah ada juga tombol yang dapat memutar 90° searah jarum jam balok tetris, biasanya ada disebelah kanan layar. Tujuan dari permainan ini adalah menyusun balok sedemikian rupa agar membentuk baris penuh pada balok tetris yang sudah tersusun sebelumnya. Setiap baris yang penuh akan terhapus dan digantikan oleh baris berikutnya/ baris atasnya. Jika baris tidak penuh sampai garis batas atas maka permainan berakhir.
Pendekatan Algoritma yang Digunakan
                   Permainan tetris ini menggunakan pendekatan algoritma greedy dan brute force. Algoritma Greedy memecahkan masalah langkah per langkah, pertama algoritma ini akan mengambil pilihan yang terbaik yang dapat diperoleh pada saat itu tanpa memperhatikan konsekuensi ke depan (prinsip “take what you can get now!”) lalu berharap bahwa dengan memilih optimum local pada setiap langkah akan berakhir dengan optimum global.
Sedangkan algoritma brute force adalah sebuah pendekatan yang sesuai (straightforward) untuk memecahkan suatu masalah, biasanya didasarkan pada pernyataan masalah (problem statement) dan definisi konsep yang dilibatkan. Algoritma brute force memecahkan masalah dengan sangat sederhana, langsung dan dengan cara yang jelas (obvious way).
Algoritma yang digunakan untuk mendapatkan susunan tumpukan balok yang paling baik dengan menempatkan balok ke tempat yang tepat. Algoritma ini menggunakan prinsip Greedy dalam mencari langkah sollusi yang paling menguntungkan. Prioritas keuntungan yang tersusun terdiri dari:
1. Membentuk satu atau lebih baris paling penuh
2. Membentuk satu atau lebih baris paling mendekati penuh
3. Tidak membentuk ruang kosong pada susunan tumpukan balok
4. Balok dapat masuk ke dalam susunan tumpukan balok paling dalam[1]
Algoritma yang kami jelaskan akan mencari penempatan balok yang turun pada posisi yang paling tepat dan sesuai dengan keuntungan diatas diantara susunan tumpukan balok. Pencarian solusi akan dilakukan dengan pendekatan algoritma Brute force.
Permainan tetris ini menggunakan 7 jenis balok dalam permainan nya, berikut jenis-jenis nya :
 
Penggunaan Matriks dalam pembuatan Tetris
Pada game tetris, terdapat blok-blok yang akan kita susun secara horizontal ataupun vertikal blok-blok tersebut dinamakan dengan grid. Jumlah tiap baris grid tergantung pada si pembuat tetris, kalo contoh yang kami gunakan berjumlah 15 grid. Grid tersebut pada pemrograman kita buat dengan menggunakan matriks berdimensi 2.  Contoh :
___________________
o o o o
o o o o
o o o o
__________________                         

Sebagai contoh gambar diatas adalah matriks ukuran 4x3 (4 kolom, 3 baris). Begitu pula pada tetris juga memiliki ukuran kolom x baris (m x n). Pada kolom 1 baris 1, memiliki index[0,0]. Pada kolom 1 baris 2, memiliki indexnya[0,1]. Pada kolom 1 baris 3, memiliki index[0,2]. Pada kolom 2 baris 1, itu indexnya[1,0]. Pada kolom 2 baris 2, itu indexnya[1,1] dan s seterusnya. Di sini kami anggap susunannya  terlihat seperti pada matriks dibawah ini :
[0,0] [0,1] [0,2] [0,3]
[1,0] [1,1] [1,2] [1,3]
[2,0] [2,1] [2,2] [2,3]
Baris paling atas pada tetris  (baris 1) memiliki index [0,n] sampai [0,n+1]. Sehingga dapat kita anggap ukuran layar tetris [m,n]. Setiap ada blok yang turun atau berjatuhan kita definisikan sebagai, m+1 dan setiap bergeser kekanan n+1 dan setiap kekiri n-1
Pada permainan tetris ini apabila blok yang berjatuhan telah melampaui batas dari layar tetris [m,n] maka permainan akan berakhir (game over) sehingga apabila ada baris yang penuh (sesuai dengan syarat) maka baris tersebut akan dihapus.



Tidak ada komentar:

Posting Komentar