Rabu, 26 Juli 2017

BAB 1 PENDAHULUAN

1.1            Latar Belakang

Perkembangan teknologi saat ini berkembang se- makin pesat, diiringi dengan kebutuhan manusia yang menginginkan kemudahan akan fasilitas-fasilitas yang mendukung manusia dalam upaya menyelesaikan pe- kerjaan. Teknologi komputer merupakan salah satu teknologi yang dapat membantu mempercepat kerja manusia. Teknologi komputer telah diterapkan diber- bagai macam bidang meliputi pendidikan, kesehatan, perkantoran, telekomunikasi, bisnis, dan sebagainya, begitu juga dalam dunia hiburan. Salah satu ben- tuk hiburan diantaranya adalah Game, game sangat berkembang pesat seiring dengan kemajuan teknologi komputer. Game sangat banyak diminati baik dari ka- langan anak-anak, remaja sampai dengan dewasa. Na- mun pada kesempatan ini penulis ingin membuat suatu buku yang mengangkat game yang tak lekang oleh wak- tu yaitu game tetris mengguanakan arduino. Untuk menjadi perancang game, kita dapat mempelajari su- atu media yang salah satunya adalah Arduino. Ardui- no adalah pengendali mikro single-board yang bersifat open-source, diturunkan dari Wiring platform, diran- cang untuk memudahkan penggunaan elektronik da- lam berbagai bidang.

1.2            Rumusan Masalah

Dalam pembuatan game tetris menggunakan ardu- ino ini permasalahan akan dibatasi pada:
                  1.    Pembuatan Game Tetris menggunakan Arduino.
2.    Pembuatan Game ini sebagai bahan referensi ba- gi pembuat game.

1.3           Tujuan

Tujuan dalam penulisan ini bermaksud untuk mem- buat game dengan mengangkat judul “ Pembuatan Game Balap Tetris berbasis Arduino” dan juga diharapk- an agar buku ini menjadi referensi dalam membuat ga- me dengan arduino

1.4         Sistematika Penulisan

Sistematika penulisan yang diterapkan penulis un- tuk menyajikan gambaran singkat mengenai permasa- lahan yang akan dibahas dalam penulisan ini, sehingga akan memperoleh gambaran yang jelas tentang isi dari penulisan ini terdiri dari empat bab diantaranya :
BAB I PENDAHULUAN
Pada bab ini menguraikan beberapa pokok persoal- an yang terdiri dari Latar Belakang Masalah, Batasan Masalah, Tujuan Penulisan, dan Sistematika Penulis- an.
BAB II GAME  DESIGN
Pada bab ini akan dibahas mengenai Game De- sign, Tentang Karakter/Object,Game Play, serta Le- vel/MAP.
BAB III PEMBAHASAN MASALAH
Pada bab ini akan diuraikan dengan jelas game te- tris dengan menggunakan arduino, Struktur Naviga- si, Rancangan Tampilan, Pembuatan game, Spesifikasi Perangkat yang Digunakan, serta  Implementasi.
BAB IV HASIL
Pada bab ini mengenai hasil yang dicapai dalam implementasi
BAB V PENUTUP
Pada bab ini mengenai kesimpulan dan saran sebagai evaluasi agar aplikasi ini dapat dikembangkan lebih jauh untuk ke depannya.

BAB 2 GAME DESIGN

2.1 Penjelasan Arduino


Arduino adalah pengendali mikro single-board yang bersifat open-source, diturunkan dari Wiring platform, dirancang untuk memudahkan penggunaan elektronik dalam berbagai bidang. Hardwarenya memiliki prose- sor Atmel AVR dan softwarenya memiliki bahasa pem- rograman sendiri. Arduino juga merupakan platform hardware terbuka yang ditujukan kepada siapa saja yang ingin membuat purwarupa peralatan elektronik interaktif berdasarkan hardware dan software yang flek- sibel dan mudah digunakan. Mikrokontroler diprogram menggunakan bahasa pemrograman arduino yang me- miliki kemiripan syntax dengan bahasa  pemrograman
C. Karena sifatnya yang terbuka maka siapa saja da- pat mengunduh skema hardware arduino dan memba- ngunnya.  Arduino menggunakan keluarga mikrokontroler ATMega yang dirilis oleh Atmel sebagai basis, namun ada individu/perusahaan yang membuat clone arduino dengan menggunakan mikrokontroler lain dan tetap kompatibel dengan arduino pada level hardware. Untuk fleksibilitas, program dimasukkan melalui boot- loader meskipun ada opsi untuk membypass bootloa- der dan menggunakan downloader untuk memprogram mikrokontroler secara langsung melalui port ISP
Semuanya berawal dari sebuah thesis yang dibuat oleh Hernando Barragan, di institute Ivrea, Italia pa- da tahun 2005, dikembangkan oleh Massimo Banzi dan David Cuartielles dan diberi nama Arduin of Ivrea. La- lu diganti nama menjadi Arduino yang dalam bahasa Italia berarti teman yang berani. Tujuan awal dibu- at Arduino adalah untuk membuat perangkat mudah dan murah, dari perangkat yang ada saat itu. Dan per- angkat tersebut ditujukan untuk para siswa yang akan membuat perangkat desain dan interaksi. Visi awalnya aja udah mulia kan.
Saat ini tim pengembangnya adalah Massimo Ba- nzi, David Cuartielles, Tom Igoe, Gianluca Martino, David Mellis, dan Nicholas Zambetti. Mereka mengu- payakan 4 hal dalam Arduino ini, yaitu: Harga terjang- kau Dapat dijalankan diberbagai sistem operasi, Win- dows, Linux, Max, dan sebagainya. Sederhana, dengan bahasa pemograman yang mudah bisa dipelajari orang awam, bukan untuk orang teknik saja. Open Source, hardware maupun software. Sifat Arduino yang Open Source, membuat Arduino berkembang sangat cepat. Dan banyak lahir perangkat-perangkat sejenis Arduino.  Seperti DFRDuino atauFreeduino, dan kalau yang lokal ada namanya CipaDu- ino yang dibuat oleh SKIR70, terus ada MurmerDuino yang dibuat oleh Robot Unyil, ada lagi AViShaDui- no yang salah satu pembuatnya adalah Admin Kelas Robot. Sampai saat ini pihak resmi, sudah membu- at berbagai jenis- jenis Arduino. Mulai dari yang pa- ling mudah dicari dan paling banyak digunakan, yaitu Arduino Uno. Hingga Arduino yang sudah menggu- nakan ARM Cortex, beebentuk Mini PC. Dan sudah ada ratusan ribu Arduino yang digunakan di gunakan di dunia pada tahun 2011. Dan untuk hari ini, yang bisa kamu hitung sendiri ya. Dan Arduino juga sudah banyak dipaka oleh perusahaan besar. Contohnya Go- ogle menggunakan Arduino untuk Accessory Develo- pment Kit, NASA memakai Arduino untuk prototypin, ada lagi Large Hadron Colider memakai Arduino dalam beberapa hal untuk pengumpulan data. Dan banyak yang bertanya juga Arduino ini menggunakan bahasa pemograman apa? Arduino sebenarnya menggunakan bahas C, yang sudah disederhanakan. Sehingga orang awam pun bisa menjadi seniman digital, bisa mempe- lajari Arduino dengan mudahnya.

           2.1.1           Jenis - Jenis Arduino

Dan seperti Microcontroller yang banyak jenisnya, Arduino lahir dan berkembang, kemudian muncul de- ngan berbagai jenis. Diantaranya adalah:
   Arduino Uno
Jenis yang ini adalah yang paling banyak digunakan.Terutama untuk pemula sangat disarankan untuk meng- gunakan Arduino Uno.Dan banyak sekali referensi yang membahas Arduino Uno. Versi yang terakhir ada- lah Arduino Uno R3 (Revisi 3), menggunakan ATME- GA328 sebagai Microcontrollernya, memiliki 14 pin I/O digital dan 6 pin input analog. Untuk pemograman cu- kup menggunakan koneksi USB type A to To type B. Sama seperti yang digunakan pada USB printer.
   Arduino Due
Berbeda dengan saudaranya, Arduino Due tidak meng- gunakan ATMEGA, melainkan dengan chip yang le- bih tinggi ARM Cortex CPU. Memiliki 54 I/O pin digital dan 12 pin input analog. Untuk pemograman- nya menggunakan Micro USB, terdapat pada beberapa handphone.
   Arduino Mega
Mega Mirip dengan Arduino Uno, sama-sama menggu- nakan USB type A to B untuk pemogramannya. Teta- pi Arduino Mega, menggunakan Chip yang lebih tinggi ATMEGA2560. Dan tentu saja untuk Pin I/O Digital dan pin input Analognya lebih banyak dari Uno.
   Arduino Leonardo
Bisa dibilang Leonardo adalah saudara kembar dari Uno. Dari mulai jumlah pin I/O digital dan pin input Analognya sama. Hanya pada Leonardo menggunakan Micro USB untuk pemogramannya.
   Arduino Fio

Bentuknya lebih unik, terutama untuk socketnya. Wa- lau jumlah pin I/O digital dan input analognya sama dengan uno dan leonardo, tapi Fio memiliki Socket XBee. XBee membuat Fio dapat dipakai untuk ke- perluan projek yang berhubungan dengan wireless.
   Arduino Lilypad
Bentuknya yang melingkar membuat Lilypad dapat di- pakai untuk membuat projek unik. Seperti membuat amor iron man misalkan. Hanya versi lamanya meng- gunakan ATMEGA168, tapi masih cukup untuk mem- buat satu projek keren. Dengan 14 pin I/O digital, dan 6 pin input analognya.
   Arduino Nano
Sepertinya namanya, Nano yang berukulan kecil dan sangat sederhana ini, menyimpan banyak fasilitas. Su- dah dilengkapi dengan FTDI untuk pemograman lewat Micro USB. 14 Pin I/O Digital, dan 8 Pin input Analog (lebih banyak dari Uno). Dan ada yang menggunakan ATMEGA168, atau ATMEGA328.
   Arduino Mini
Fasilitasnya sama dengan yang dimiliki Nano. Hanya tidak dilengkapi dengan Micro USB untuk pemogram- an. Dan ukurannya hanya 30 mm x 18 mm saja.
   Arduino Micro
Ukurannya lebih panjang dari Nano dan Mini. Karena memang fasilitasnya lebih banyak yaitu; memiliki 20 pin I/O digital dan 12 pin input analog.
   Arduino Ethernet
Ethernet Ini arduino yang sudah dilengkapi dengan fa- silitas ethernet. Membuat Arduino kamu dapat berhu- bungan melalui jaringan LAN pada komputer. Untuk fasilitas pada Pin I/O Digital dan Input Analognya sa- ma dengan Uno.
   Arduino Esplora
Rekomendasi bagi kamu yang mau membuat gadget sepeti Smartphone, karena sudah dilengkapi dengan Joystick, button, dan sebagainya. Kamu hanya perlu tambahkan LCD, untuk lebih mempercantik Esplora.
   Arduino Robot
Robot Ini adalah paket komplit dari Arduino yang su- dah berbentuk robot. Sudah dilengkapi dengan LCD, Speaker, Roda, Sensor Infrared, dan semua yang kamu butuhkan untuk robot sudah ada pada Arduino ini.

        2.2          Penjelasan Game Tetris

Tetris” adalah potongan permainan berbentuk se- perti tetromino, bentuk geometris terdiri dari empat blok persegi masing-masing. Urutan acak Tetriminos jatuh di lapangan (sebuah poros vertikal persegi pan- jang, yang disebut ”sumur” atau ”matriks”). Tujuan permainan ini adalah untuk memanipulasi  Tetriminos ini, dengan menggerakkan masing-masing ke samping (jika pemain merasakan kebutuhannya) dan memutar- nya dengan unit 90 derajat, dengan tujuan mencip- takan garis horizontal sepuluh unit tanpa celah. Bila garis seperti itu dibuat, lenyap, dan setiap blok di atas garis yang dihapus akan jatuh. Bila sejumlah baris telah dihapus, permainan akan memasuki level yang baru. Seiring permainan berlangsung, setiap tingkat menyebabkan Tetriminos jatuh lebih cepat, dan per- mainan berakhir saat tumpukan Tetriminos mencapai puncak lapangan dan tidak ada Tetriminos baru yang bisa masuk. Beberapa permainan juga berakhir sete- lah sejumlah level atau garis yang terbatas. Semua Tetriminos mampu membersihkan satu dan dua. I, J, dan L mampu membersihkan tiga kali lipat. Hanya sa- ya Tetrimino memiliki kapasitas untuk membersihkan empat baris secara bersamaan, dan ini disebut seba- gai ”tetris”. (Hal ini dapat bervariasi tergantung pada aturan rotasi dan kompensasi dari setiap implementa- si Tetris yang spesifik. Misalnya, dalam Sistem Rota- si Super yang digunakan dalam implementasi terbaru, [10] situasi tertentu memungkinkan T, S, dan Z untuk ’snap’ ke tempat yang ketat. Dan tiga kali lipat.
Formula penilaian untuk sebagian besar produk Te- tris dibangun berdasarkan gagasan bahwa garis yang
lebih sulit dibersihkan harus diberi lebih banyak poin. Sebagai contoh, satu baris yang jelas di Tetris Zone bernilai 100 poin, membersihkan empat baris sekaligus (dikenal sebagai Tetris) bernilai 800, sementara Tetris back-to-back bernilai 1.200 masing-masing.  [12]
Hampir semua permainan Tetris memungkinkan pe- main menekan tombol untuk meningkatkan kecepatan potongan potongan saat ini, daripada menunggu sam- pai jatuh. Pemain juga bisa menghentikan potongan- potongan yang meningkat kecepatannya sebelum po- tongannya mencapai lantai dengan melepaskan tom- bolnya, ini adalah ”soft drop”; Jika tidak, ini adalah ”tetesan keras” (beberapa permainan hanya memung- kinkan tetesan atau tetesan keras; yang lainnya me- miliki tombol terpisah). Banyak penghargaan game sejumlah poin berdasarkan ketinggian potongan yang jatuh sebelum mengunci.
Beberapa varian Tetris ada. Beberapa fitur atur- an dan potongan alternatif, beberapa fitur topologi al- ternatif atau dimensi, dan lain-lain memiliki gameplay yang sama sekali berbeda.
Sebuah varian populer yang disebut ”The Grand Master” akhirnya menjadi pemain yang sangat cepat harus menggunakan setiap detiknya secara optimal, dan bahkan memiliki mode yang dijuluki ”Invisible Tetris”, dimana balok hanya ditampilkan saat jatuh - lalu ter- ungkap saat permainan sudah selesai.
Karena popularitas dan kode yang relatif sederhana yang dibutuhkan untuk menghasilkan game, permain- an dengan aturan yang hampir sama seperti Tetris sering digunakan sebagai proyek hello world untuk pem- rogram coding untuk sistem atau bahasa pemrograman baru. Hal ini mengakibatkan tersedianya sejumlah be- sar port untuk platform yang berbeda. Misalnya, Tor- rent dan GNU Emacs berisi permainan susun bentuk serupa seperti telur Paskah.

        2.3   Object dari Game Tetris

Object utama dari game ini adalah balok sesuai de- ngan nama game tersebut. Lalu terdapat tombol pe- ngarah untuk mengarahkan balok ke bagian yang di inginkan.


Gambar 2.1 Lampu Balok

Gambar 2.2 Tombol Contoler

Gambar 2.3 Mesin Tetris

          2.4            Level pada game


Di awal permainan kamu akan mendapatkan se- rangkaian tutorial yang akan membantumu untuk me- mulai permainan. Ya sebenarnya kamu tidak mem- butuhkan tutorial tersebut karena game ini memang sangat mudah untuk dimainkan. Setelah melewati be- berap tutorial barulah kamu bermain game sebenar- nya. Dari level 1 sampai level 4 memang masih cukup mudah untuk dilalui, tetapi setelah level 4 keatas ka- mu akan merasakan gimana sulitnya menemukan balok dengan bentuk yang dituju. Puluhan balok akan ber- jatuhan dari atas ke bawah, tugas kita adalah mencari bentuk yang dituju di dalam puluhan balok yang ber- jatuhan tersebut. Jika balok yang dituju sudah jatuh dan melewati layar.
smartphone kita maka permainan pun berakhir. Da- lam game ini juga terdapat fitur di mana kamu  bisa mengatur untuk memulai game dengan level 1 5. Ja- di kamu tidak perlu report-repot lagi harus mengulang dari level satu setelah kalah. Selain itu kamu juga bisa mengatur framrate dari game yang kamu mainkan, hal ini bisa kamu sesuaikan dengan gadget yang kamu mi- liki. Hanya ada 1 mode di dalam game ini, namun di dalam mode endless ini terdapat 10 level yang bisa ka- mu capai. Setiap level mempunya tingkat kesulitannya masin-masing, dan yang tersulit adalah level 10. Bahk- an saya belum pernah mencapai level 10 setelah satu jam bermain. Selain banyak blok yang akan membu- atmu pusing, di setiap level, kecepatan dari jatuhnya blok akan bertambah, jadi mau tidak mau kamu harus berfikir cepat dalam menemukan balok yang  dituju.

 Gambar 2.4 Game tetris menggunakan alat


          2.5       Gameplay Tetris

Langkah 1 Daftar Bahan Sebuah maminboard Ardu- ino, keyboard analog, layar LCD
*  1xFreaduino Uno;
*  1xADkey;
               * 1xTFT01-1.8;
                Prinsip Kerja: Level game:Mudah, Normal. Sulit

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
    Hardware untuk sistem game tetris ini cukup se- dernahana yaitu meliputi satu modul dot matrix led 8×8 dengan shift register MAX7219, 3 buan push but- ton beserta kapasitornya dan sebuah Atmega328p de- ngan modul arduino. Cara kerja hardware adalah per- tama, komunikasi antara mikrokontroller dan LED dot matrix adalah menggunakan SPI, yaitu mikrokontro- ller akan mengirim bit sequence yang akan diprosses shift register untuk menjadi input yang akan menya- lakan atau mematikan LED dalam dot matrix. Ke- dua button-button digunakan untuk memanipulasi in- put yang dikirimkan kepada dot matrix via SPI. Pin yang terpakai dari arduino adalah pin – pin untuk SPI, yaitu MOSI, clk dan cs.   Pin SPI ini digunak-   an untuk menjadi interface antara shift register modul dot matrix dan mikrokontroller. Kapasitor digunak- an untuk mengurangi dampak dari button debouncing dengan menyambungnya secara parallel dengan push button. Pemogramman atmega dilakukan dengan ba- hasa C dan compilasi dan upload menggunakan ardui- no IDE. Pemilihan penggunaan shift register MAX7219 digunakan agar menghemat penggunaan pin. Dot ma- trix 8×8 bahkan dapat dicascade menjadi 16×8 dan dapat dikendalikan dengan hanya menggunakan 3 pin pada mikrokontroller. Jika tidak menggunakan mo- dul MAX7219, akan dibutuhkan 16 pin atmega beser- ta 8 resistor untuk mengendalikan dot matrix. Un- tuk display digunakan dot matrix led dibandingkan dengan LCD karena dot matrix jauh lebih mudah un- tuk deprogram yaitu dengan mengetahui koordinat led yang ingin kita nyalakan atau matikan dan menggunakan prinsip scanning untuk menyalakan LED. Pem- rogramman LCD lebih sulit karena ada berbagai LCD dipasaran dengan cara kerja yang berbeda-beda yang dimana penjual LCD dan LCD sendirinya tidak mem- berikan deskripsi chipset yang dipakai, maka sangat mempersulit untuk mengetahui cara kerja LCD. Lebih lagi, pemrogramman LCD membutuhkan library yang bagus dan butuh waktu untuk mempelajari berbagai library yang ada. Dengan demikian akhirnya dipilih LED dot matrix.

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.