BAB 3 IMPLEMENTASI
3.1
Tujuan sistem
Tujuan
sistem adalah untuk
mengimplementasi ga- me tetris sederhana pada LED
menggunakan mikro- kontroller atmega. Game tetris sederhana yang dimak-
sud adalah pemain
mencoba untuk melengkapi garis dengan bentuk-bentukan tetris
yang digenerate. Jum- lah
garis yang terbentuk memberikan poin.
3.2 Design Hardware
Gambar 3.1
rangkaian penyusunan alat
3.3 Design Software
Gambar 3.2
diagram pembuatan alat game
Software pada tugas
ini terbagi menjadi
dua. Perta- ma adalah
library dot matrix
led, dan yang kedua ada- lah
software implementasi game tetris. Library dot ma- trix LED digunakan untuk interface software
dengan hardware LED dot matrix. Library tersebut memili- ki fungsi
yang dapat diberikan nomor LED dan action
yang ingin kita lakukan pada LED tersebut
seperti me- matikan atau
menyalakan. Library membagi setiap LED memiliki nomor uniknya sendiri, maka
dalam hal ini ada 63 nomor yang dapat dimanipulasi
state nya. Dari nomor LED
dan action yang
diinginkan, LED ak- an
mengkalkulasi series bit yang dibutuhkan untuk di- kirimkan ke shift
register MAX7219 via
SPI yang akan memberikan
kita hasil yang diinginkan. Kedua adalah software implementasi game tetris. Pertama yang di-
lakukan adalah membuat
sistem koordinat dari angka
unik LED tersebut. Ini dilakukan agar pemrograman
lebih mudah dilakukan dan agar lebih mudah berko-
munikasi dengan library LED. Untuk
mengimplemen- tasi game, software berkerja dengan memberikan suatu matriks 8×8 yang memiliki
berbagai informasi tentang state game tesrebut. Contohnya, indeks
matriks yang memiliki nilai 1 berarti
adalah bagian dari sprite gra- fik game dan nilai 2 berarti adalah
titik pusat sprite tersebut, dan nilai 3 adalah boundary collision. Ma- ka untuk memprogram game tetris dilakukan berbagai hal untuk memanipulasi matrix tersebut. Pertama
di- lakukan pemrogramman rules,
yaitu sprite yang akan
selalu “jatuh”, mana
gerakan yang sah
atau tidak, dan syarat-syarat game kalah dan menang.
Kedua dila- kukan pemrogramman sprite, yiatu
bentuk pada game tetris. Dan terakhir adalah pemrogramman manipula- si sprite
seperti geraan ke kiri,
kanan dan transformasi rotasi 90 derajat sprite.
Untuk pushbutton digunakan mekanisme polling dan bukan interrupt karena softwa- re butuh mengecek berbagai hal seperti
sah-nya suatu gerakan
terhadap peraturan game untuk dapat dila- kukan gerakan tersebut. Setelah
matrix dimanipulasi tergantu state
yang diinginkan, matrix
di-push kepada library untuk
di intrepetasikan menjadi
nyala tidak nya LED pada dot matrix. matrix yang di push selalu berubah
seiiring pemecetan tombol.
Dibawah adalah berbagai fungsi penting
yang dipa- kai dalam software
int xbackconvert (int led); cari kordinat x dari ang- ka
led
int ybackconvert (int led); cari kordinat y dari ang- ka
led
int xy (int x, int y ); dari koordinat x,y cari angka led
void spritecreate(void);
randomized sprite
void triangle(int matrix[63]); membuat sprite segitiga
void square(int matrix[63]); membuat sprite
kotak void lshape(int matrix[63]);
membuat sprite bentuk
“L”
void lineshape(int matrix[63]); membuat sprite garis
void zshape(int matrix[63]); membuat
sprite bentuk void spriteleft(int matrix[63]); gerakan sprite kekiri satu led
void spriteright(int matrix[63]); gerakan sprite ke kanan satu led
void spritetransform(int matrix[63]);
transformasi sprite clockwise 90 derajat
void spritedrop(int matrix[63]); gerakan sprite ke bawah satu led
void addmatrix(int matrixa[63], int matrixb[63]); menambahkan dua matri
void pushmatrix(int matrix[63]); konversi matrix
menjadi led nyala dan mati pada dot matrix
void checkpoin (int matrix[63]); cek apakah suatu garis
row suda penuh
void spritecreate(int x,
int matrix[63]); fungsi untuk memilih berbagai bentuk sprite ketika melakukan
transformasi sprite clockwise 90 derajat, bentuk “baru”
tidak di hard-code namun di- lakukan
transformasi matrix dengan rumus rotasi 90
derajat dari center setiap sprite.
Komentar
Posting Komentar