Bab ini membahas tentang implementasi algoritma column by column dan depth-first search pada permainan Babylon Tower berdasarkan rancangan aplikasi yang telah dibahas pada bab 3. Bab ini juga membahas hasil yang diperoleh dari pengujian terhadap implementasi yang telah dilakukan terhadap aplikasi yang dibuat.
4.1. Implementasi
Aplikasi permainan Babylon Tower dibuat menggunakan softwareUnity versi 5.0.0f4 dengan menggunakan bahasa pemrograman C#. Output yang ditargetkan berupa aplikasi untuk platform Android (.apk).
4.1.1. Spesifikasi perangkat keras
Komputer yang digunakan penulis dalam proses pembuatan dan pengembangan aplikasi permainan Babylon Tower memiliki spesifikasi perangkat keras sebagai berikut:
1. Processor Intel Pentium P6300 (2.27 GHz) 2. Memory RAM 2 GB
3. Hard Disk 300 GB 4. VGA Intel HD Graphics
Untuk melakukan uji coba pada perangkat Android, penulis menggunakan Asus Zenfone 5 T00F.
48
4.1.2. Spesifikasi perangkat lunak
Proses pembuatan dan pengembangan aplikasi permainan Babylon Tower di komputer, penulis menggunakan sistem operasi Windows 7 32-bit. Perangkat lunak yang digunakan adalah sebagai berikut:
1. Blender 2.7.1 2. Unity 5.0.0f4
3. Java Standard Edition Development Kit 7 4. Android SDK 6.0 (API 23)
Penulis menggunakan software Blender untuk membangun model-model 3D yang dibutuhkan dalam merancang aplikasi permainan Babylon Tower. Selanjutnya penulis menggunakan model 3D tersebut dalam software Unity untuk merancang keseluruhan aplikasi permainan yang hendak dibangun, termasuk kode program, tampilan antarmuka, serta assets (berupa gambar dan model 3D) yang digunakan. Setelah aplikasi Babylon Tower selesai dirancang menggunakan software Unity, penulis mem-build aplikasi tersebut ke dalam bentuk aplikasi Android (.apk). Untuk mem-build aplikasi Android, dibutuhkan Java Development Kit dan Android SDK. Sistem operasi yang digunakan pada perangkat Android untuk melakukan uji coba adalah Android 4.4.2.
4.1.3. Eksekusi aplikasi
Berikut akan dijelaskan hasil eksekusi aplikasi permainan Babylon Tower pada perangkat smartphone Asus Zenfone 5 T00F. Penjelasan dimulai dari tampilan awal aplikasi yaitu tampilan main menu. Tampilan main menu aplikasi dapat dilihat pada gambar 4.1.
Gambar 4.1. Tampilan Main Menu
Pada tampilan main menu, user dapat menekan tombol suara yang terletak pada posisi sudut kiri bawah untuk menyalakan atau mematikan suara yang digunakan dalam aplikasi permainan. Pilihan pertama pada tampilan main menu adalah play yang berfungsi untuk memulai permainan baru. Dengan memilih play, user dapat memilih salah satu di antara tiga tingkat kesulitan permainan, yaitu easy, medium atau hard. Tingkat kesuliatan yang dipilih oleh user akan menentukan jumlah kolom yang diacak pada Babylon Tower. Untuk tingkat kesulitan easy, hanya dua kolom Babylon Tower yang posisi bola-bolanya diacak. Untuk tingkat kesulitan medium, terdapat empat kolom yang posisi bola-bolanya diacak. Untuk tingkat kesulitan hard, posisi bola-bola pada semua kolom akan diacak. Setelah memilih tingkat kesulitan yang diinginkan, tampilan main menu akan berganti menjadi tampilan game scene. Saat memasuki tampilan game scene, model Babylon Tower beserta bagian-bagiannya akan di-load di dalam scene. Kemudian posisi bola-bola dalam Babylon Tower akan diacak oleh program sesuai dengan tingkat kesulitan yang telah dipilih oleh user. Pada tampilan
50
game scene juga terdapat beberapa UI, seperti button-button untuk melakukan undo, redo, play/pause, dan sebagainya, serta text yang menampilkan jumlah langkah yang telah dilakukan dalam permainan Babylon Tower dan lama waktu yang dibutuhkan user untuk menyelesaikan permainan Babylon Tower.. Tampilan game scene dapat dilihat pada gambar 4.2.
Gambar 4.2. Tampilan Game Scene
Selanjutnya user dapat berinteraksi dengan Babylon Tower yang telah diacak oleh program untuk memainkannya. Beberapa jenis interaksi yang dapat dilakukan oleh user terhadap Babylon Tower adalah memutar sudut pandang penglihatan user terhadap sisi Babylon Tower, menekan salah satu bola masuk ke dalam cakram, menggeser bola ke atas / bawah pada kolom yang memiliki celah, serta memutar cakram. Setiap langkah yang dilakukan oleh user akan disimpan ke dalam list dan
jumlah langkah yang telah dilakukan oleh user akan ditampilkan sebagai text di sebelah bawah Babylon Tower.
Pada bagian atas game scene terdapat timer yang menyatakan lama waktu yang dibutuhkan user untuk menyelesaikan permainan. Waktu pada timer akan mulai dijalankan ketika user melakukan gerakan pertama terhadap Babylon Tower. Waktu pada timer akan dihentikan ketika user telah menemukan solusi permainan atau user menyentuh button solve. Di sebelah bawah button solve terdapat informasi yang dapat membantu user mengingat warna bola serta posisi kolom bola yang sedang berada di dalam Babylon Tower. Informasi tersebut hanya akan ditampilkan ketika terdapat bola yang sedang berada di dalam Babylon Tower.
User juga dapat melakukan navigasi terhadap langkah-langkah yang telah tersimpan di dalam list melalui button-button yang terdapat pada bagian bawah tampilan game scene. User dapat menjalankan animasi dari langkah-langkah yang tersimpan di dalam list dengan menyentuh button play. Ketika animasi sedang dijalankan, button play berubah menjadi button pause yang berfungsi untuk menghentikan animasi yang sedang berjalan. Ketika button pause disentuh, animasi akan berhenti dan button pause akan berubah kembali menjadi button play.
User dapat memilih untuk menyelesaikan permainan melalui AI dengan menekan button solve. Dengan menekan button solve, maka akan dijalankan animasi tiga dimensi setiap langkah yang ditempuh mulai dari keadaan awal hingga Babylon Tower terselesaikan. User dapat kembali ke main menu dengan menekan button home. Dari main menu, user dapat memilih help untuk melihat cara bermain Babylon Tower dan memilih about untuk melihat informasi tentang aplikasi permainan Babylon Tower. Tampilan help dan about dapat dilihat pada gambar 4.3.
52
Gambar 4.3. Tampilan Help dan About
4.2. Pengujian
Pengujian dilakukan terhadap aplikasi permainan Babylon Tower yang telah dirancang dan diimplementasikan dengan algoritma column by column dan depth-first search. Algoritma dijalankan pada Babylon Tower yang telah diacak oleh program dan akan diuji apakah algoritma tersebut mampu menemukan solusi dari Babylon Tower yang telah diacak tersebut. Algoritma dianggap berhasil menemukan solusi apabila algoritma tersebut mampu mengurutkan setiap bola dengan warna yang sama pada kolom yang sama serta mengurutkan setiap kolom berdasarkan tingkat kecerahan warna bola.
4.2.1. Hasil dari Tahap Sorting
Tahap sorting yang dilakukan terhadap Babylon Tower menghasilkan posisi bola-bola yang telah berada pada kolom yang benar sesuai dengan warna yang ditetapkan untuk masing-masing kolom. Proses sorting akan selalu mencari bola dari kolom lain yang memiliki warna yang sama dengan warna yang ditetapkan pada kolom yang memiliki celah. Bola yang telah ditemukan akan dipindahkan menuju kolom yang memiliki celah sehingga celah akan berpindah ke kolom yang lain. Selanjutnya akan diulangi proses pencarian bola dari kolom lain yang memiliki warna yang sama dengan warna pada kolom baru yang memiliki celah. Proses tersebut akan dilakukan terus menerus hingga setiap bola berada pada kolom yang sesuai dengan warna yang telah ditetapkan.
Tahap sorting akan selalu diakhiri dengan dipindahkannya bola dari kolom yang bolanya ditekan masuk ke dalam saat tahap sorting akan dijalankan. Misalnya saat tahap sorting dijalankan, bola pada kolom pertama ditekan masuk ke dalam Babylon Tower sehingga menghasilkan celah pada kolom pertama. Bola terakhir yang dipindahkan pada keadaan tersebut adalah bola yang berada pada kolom pertama sehingga pada akhirnya celah kembali berada pada kolom pertama. Dengan demikian, bola yang sebelumnya berada di dalam Babylon Tower dapat dikeluarkan kembali karena telah terdapat celah pada kolom pertama.
4.2.2. Hasil dari Tahap Swapping
Tahap swapping yang dilakukan terhadap Babylon Tower selalu menukar posisi bola- bola pada setiap kolom hingga setiap bola yang berada pada baris ketiga dari atas sampai baris terbawah menempati posisi yang benar sesuai dengan tingkat kecerahan warnanya. Tahap swapping dijalankan secara kolom per kolom untuk setiap kolom yang tidak memiliki celah. Setelah proses swapping selesai dijalankan pada setiap kolom yang tidak memiliki celah, maka proses swapping dijalankan sekali lagi untuk kolom yang memiliki celah. Misalnya kolom pertama memiliki celah, maka tahap swapping akan dijalankan mulai dari kolom kedua hingga kolom kelima dan diakhiri dengan kolom pertama.
54
Proses swapping pertama akan menukar posisi setiap bola pada masing-masing kolom dimulai dari bola yang warnanya paling pucat (tingkat kecerahan 0) menuju posisi yang paling dekat dengan posisi seharusnya (baris 0), dilanjutkan dengan menukar posisi bola yang tingkat kecerahannya 1 menuju posisi yang paling dekat dengan baris 1, dan seterusnya hingga bola yang tingkat kecerahannya 5. Yang dimaksud dengan posisi paling dekat adalah bola yang tingkat kecerahannya n berada pada baris n - 1, baris n, atau baris n + 1, misalnya posisi bola yang tingkat kecerahannya 3 ditukar dengan posisi bola lain hingga berada pada baris 2, baris 3, atau baris 4 walaupun bola tersebut seharusnya hanya boleh berada pada baris 3. Posisi bola yang belum berada pada baris yang benar akan dilanjutkan pada proses swapping kedua. Proses swapping kedua akan menukar posisi bola yang belum berada pada baris yang benar dimulai dari bola yang berada pada baris terbawah hingga baris ketiga dari atas.
Setelah tahap swapping dilakukan, maka yang tersisa adalah dua baris teratas yang belum semuanya terurut. Jumlah kolom yang dua baris teratasnya belum terurut tidak selalu sama untuk setiap keadaan Babylon Tower yang berbeda. Tahap swapping juga mungkin menghasilkan dua baris teratas yang telah terurut untuk setiap kolomnya, namun kondisi tersebut jarang terjadi. Apabila dua baris teratas pada setiap kolom telah terurut, maka tahap parity tidak perlu dijalankan.
4.2.3. Hasil dari Tahap Parity
Tahap parity yang dilakukan terhadap Babylon Tower menghasilkan posisi bola pada dua baris teratas yang telah terurut sesuai dengan tingkat kecerahan warnanya. Tahap parity hanya dapat dijalankan apabila banyak kolom yang dua baris teratasnya belum terurut berjumlah genap. Setiap tahap parity dijalankan, akan dihasilkan sepasang kolom yang dua baris teratasnya terurut. Tahap parity dapat dijalankan sebanyak lebih dari satu kali tergantung pada keadaan Babylon Tower sebelum tahap parity dijalankan. Misalnya terdapat empat kolom yang belum terurut, maka tahap parity akan dijalankan sebanyak dua kali untuk mengurutkan dua pasang kolom tersebut.
4.2.4. Hasil Pengujian
Pengujian dilakukan sebanyak sepuluh kali terhadap Babylon Tower yang keadaan awalnya diacak oleh program untuk setiap tingkat kesulitan yang berbeda. Hal yang dicatat dalam pengujian tersebut adalah banyak langkah yang dibutuhkan untuk mencapai solusi. Hasil pengujian terhadap banyak langkah yang dibutuhkan untuk menemukan solusi dapat dilihat pada tabel 4.1.
Tabel 4.1. Hasil pengujian terhadap banyak langkah yang dibutuhkan untuk menemukan solusi
Case
Tingkat kesulitan
Easy Medium Hard
1 160 253 369 2 122 337 456 3 184 211 356 4 176 300 431 5 99 275 465 6 191 265 466 7 197 242 342 8 108 216 477 9 68 254 547 10 137 293 471
BAB 5