SKRIPSI
Diajukan untuk Menempuh Ujian Akhir Sarjana
TEGUH PRIBADHI
10109447
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNIK DAN ILMU KOMPUTER
iii
KATA PENGANTAR
Puji syukur penulis panjatkan kehadirat Allah SWT yang telah
memberikan kekuatan, petunjuk, rahmat serta segala karuniaNya kepada
penulis untuk dapat menyelesaikan skripsi ini dengan judul ”IMPLEMENTASI ALGORITMA BACKTRACKING PADA GAME UNBLOCKME”.
Karya ilmiah ini disusun sebagai salah satu syarat kelulusan mata
kuliah Tugas Akhir pada Program Strata Satu (S1) Program Studi Teknik
Informatika. Telah banyak pihak yang membantu dalam penyusunan
skripsi ini, baik secara moril maupun materil. Oleh karena itu, pada
kesempatan ini penulis ingin menyampaikan ucapan dan rasa terima kasih
yang sebesar-besarnya kepada :
1. Kedua Orang tua saya yang memberikan semangat untuk
menyelesaikan program studi strata satu (S1) dan ini hadiah untuk
ayah, serta ibu saya yang telah melahirkan saya didunia ini.
2. Bapak Eko Budi Setiawan, S.kom, M.T. selaku Dosen Pembimbing
yang senantiasa memberikan bimbingan, ilmu, saran dan waktu
luangnya sehingga penulis dapat menyelesaikan karya ilmiah tugas
akhir ini.
3. Ibu Ednawati Rainarli, S.Si.,M,Si. Selaku dosen reviwer penguji saya
ucapkan terima kasih atas semua masukan serta bimbingannya.
4. Ibu Istiqomah S.kom selaku dosen penguji saya ucapkan terima kasih
atas semua masukan serta bimbingannya
5. Teman-teman mahasiswa yang telah memberikan dukungan dan
keluarga bantuan selama masa perkuliahan berlangsung yang tidak
bisa penulis sebutkan namanya satu-persatu.
Dan semua pihak yang membantu penulis baik langsung maupun tidak
iv
Tuhan penulis menyadari pasti ada kekurangan dan kelemahan yang
terdapat pada karya ilmiah skripsi ini.
Untuk itu penulis mengharapkan adanya masukan berupa kritik dan
saran dari semua pihak. Semoga karya ilmiah ini bermanfaat dan kita tidak
akan pernah berhenti untuk menuntut ilmu sepanjang hidup kita. Amin.
Wassalamualaikum Wr. Wb.
Bandung, 24 Februari 2015
v
1.1 Latar Belakang Masalah ... 1
1.2 Rumusan Masalah ... 2
1.3 Maksud Dan Tujuan ... 2
1.4 Batasan Masalah ... 3
1.5 Metode Penelitian... 3
1.5.1 Metode Pengumpulan Data ... 4
1.5.2 Metode Pembangunan Perangkat Lunak ... 4
1.6 Sistematika Penulisan ... 6
BAB 2 LANDASAN TEORI ... 8
2.2.5 Prinsip Algoritma Backtracking... 16
vi
2.4.1 C# Sintaks ... 25
2.5 Microsoft Visual Studio Express ... 27
BAB 3 ANALISIS DAN PERANCANGAN SISTEM ... 28
3.1 Analisis Masalah ... 28
3.2 Analisis Masukan ... 29
3.3 Analisis Algoritma ... 37
3.3.1 Analisis Algoritma Backtracking Dalam Penyelesaian Game... 37
3.4 Analisis Kebutuhan Perangkat Lunak ... 43
3.4.1 Analisis Kebutuhan Perangkat Keras ... 43
3.4.2 Analisis Kebutuhan Non Fungsional ... 44
3.4.3.6 Perancangan Antarmuka ... 50
3.4.3.7 Jaringan Semantik ... 51
BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM ... 59
4.1 Lingkungan Implementasi ... 59
4.2 Spesifikasi Kebutuhan Perangkat Keras ... 59
4.3 Spesifikasi Kebutuhan Implementasi Perangkat Lunak ... 59
4.4 Tampilan Antarmuka ... 58
4.5 Pengujian Simulasi ... 59
4.5.1 Pengujian Simulasi Game pada Level 3 ... 63
vii
4.6.2.2 Kasus Dan Hasil Pengujian (Black Box) ... 64
4.7 Kesimpulan ... 67
BAB 5 KESIMPULAN DAN SARAN ... 68
5.1 Kesimpulan ... 68
lxix
DAFTAR PUSTAKA
[1] Eric, "Penerapan strategi BFS untuk menyelesaikan permainan Unblock Me
beserta perbandingannya dengan DFS dan Branch and Bound," Teknik
Informatika ,2009.
[2] D. U. Soraya, "Penerapan Algoritma Backtracking (Runut Balik) Dalam
Permainan teka-Teki Silang (TTS)," Teknik Informatika, 2009.
[3] I. Sommerville, SOftware Enginerring Ninth Edition, 2011.
[4] D. N. Putra, O. O. Sardjito and C. Lawrence, "Penerapan Dan Implementasi
Algoritma," 2009.
[5] D. Berthier, "Pattern-Based Constraint Satisfaction And Logic Puzzles,"
Teknik Informatika, 2012.
[6] Millington, I and Funge , J. 2009. Artificial of Intelligence for Games.
Second Edition Massachusetts: Morgan Kaufmann Publishers.
[7] R. Munir, "Algoritma Pemograman Dalam Bahasa Pascal dan C," Teknik
Informatika, 2005.
[8] T. J. Purwadi and E. Kurniawan, "Penerapan Algoritma Backtracking Pada
Permainan Math Maze," Teknik Informatika, 2010.
[9] Suyanto, Artificial Intelligence (Searching, Reasoning, Planning, and
Learning), Informatika, 2010.
[10] P. W. Pudjo and H. , Menggunakna Unified Modeling Language (UML),
1
1.1. Latar Belakang Masalah
Unblockme merupakan salah satu permainan (game ) bergenre teka-teki yang
pada setiap langkahnya dibutuhkan suatu pemikiran ataupun strategi untuk
menyelesaikannya. Pada game Unblockme ini terdapat suatu masalah dalam
penyelesaiannya dimana terdapat balok-balok penghalang pada papan permainan,
setiap balok balok penghalang harus digeser sampai solusi ditemukan. Setiap balok
saling berkaitan antara satu dengan yang lainnya, oleh karena itu dibutuhkan teknik
atau strategi untuk menyelesaikan permainan tersebut. Salah satu cara untuk
menyelesaikannya adalah mengimplementasikan algoritma kedalam game tersebut.
Algoritma Backtracking dapat menjadi pilihan dalam menyelesaikan pada unblockme
tersebut, karena pada dasarnya algoritma backtracking berfungsi untuk mencari
segala kemungkinan solusi dengan menerapkan ruang kedalam bentuk pohon solusi
sehingga didapatkan solusi yang layak. Pencarian solusi yang dilakukan algoritma
Backtracking tersebut dilakukan dengan cara menelusuri simpul- simpul didalam
pohon solusi dengan teknik Depth First Search (DFS).
Algoritma backtracking (runut balik) pada dasarnya mencari segala
kemungkinan solusi seperti halnya bruteforce dan exhaustive search. Yang
membedakannya adalah pada backtracking semua kemungkinan solusi dibuat dalam
bentuk pohon terlebih dahulu baru kemudian pohon tersebut dijelajahi (explore)
secara DFS (Depth Field Search). Secara umum algoritma ini berfungsi dengan baik
untuk memecahkan masalah-masalah yang berkembang secara dinamik (dynamic
problem solving) sehingga menjadi dasar algoritma untuk Artificial Intelligence
(intelejensia buatan) [4].
Algoritma backtracking adalah algoritma yang berbasiskan Depth-First
backtracking berprinsip pada metode rekursif. Untuk menyelesaikan keseluruhan
masalah, dibutuhkan sebuah solusi untuk permasalahan pertama kemudian
permasalahan-permasalahan lainnya akan dicoba untuk diselesaikan secara rekursif
berdasarkan solusi pertama. Apabila pada kemungkinan solusi yang dicari tidak
ditemukan, maka dilakukan backtrack untuk menguji kemungkinan solusi
selanjutnya. Proses backtrack akan selesai ketika tidak ada lagi solusi yang mungkin
untuk diselesaikan pada permasalahan awal..
Game Unblockme ini sangat sederhana dan simple karena pemain hanya
perlu memindahkan box/balok kayu kelubang atau ke tempatnya. Pada game ini
makin sedikit langkah yang diterapkan makin besar nilai point pada game tersebut ,
jadi optimalnya algoritma backtrack pada game tersebut dilihat dari pendeknya rute
yang di jalankan. Namun permasalahan dalam permainannya adalah dibutuhkannya
suatu pemikiran dan strategi karena banyak terdapat penghalang dan aturan dalam
permainan. Sehingga pemain harus benar-benar memikirkan langkah yang jitu untuk
menyelesaikan permainan ,karena itu penulis tertarik untuk menerapkan algoritma
backtracking pada permasalahan game Unblockme dan mengambil pokok bahasan
skripsi bagaimana menerapkan algoritma tersebut pada perangkat lunak untuk
mencari solusi yang optimal dengan judul “IMPLEMENTASI ALGORITMA
BACKTRACKING PADA GAME UNBLOCKME”.
1.2. Rumusan Masalah
Berdasarkan uraian pada latar belakang masalah diatas, dapat didapatkan
perumusan masalahnya adalah bagaimana mengimplementasikan atau menerapkan
algoritma backtracking pada game Unblockme.
1.3. Maksud dan Tujuan
Berdasarkan permasalahan yang diteliti, maka maksud dari penulisan tugas akhir
Adapun tujuannya adalah sebagai berikut :
1. Untuk mengetahui apakah algoritma backtracking bisa diimplementasikan
untuk menyelesaikan permainan game Unblokme.
2. Mengetahui perfomasi dari algoritma backtracking untuk menyelesaikan
game Unblockme.
1.4. Batasan Masalah
Batasan masalah dalam pembangunan game ini adalah sebagai berikut :
1. Game bersifat offline.
2. Game bergenre board game dan logic game.
3. Ukuran papan permainan 6x6
4. Implementasi game menggunakan perangkat lunak Microsoft Visual C# 2010.
5. Pemodelan data yang dilakukan berbasis object oriented programming
dengan menggunakan UML diagram (Unifed Modelling Language).
6. Algoritma yang digunakan untuk penyelesaian game Unblockme ini adalah
algoritma .
1.5. Metode Penelitian
Metodologi penelitian yang digunakan adalah analisis deskriptif. Analisis
kualitatif adalah metode analisis yang meliputi observasi, dokumentasi, serta
mendapatkan pemahaman yang mendalam tentang masalah-masalah yang sedang
diteliti.
1.5.1 Metode Pengumpulan Data
Metode pengumpulan data yang digunakan dalam penelitian ini adalah studi
literatur, dengan cara mengumpulkan literatur, jurnal, paper, dan pencarian data yang
1.5.2 Metode Pembangunan Perangkat Lunak
Metode pembangunan perangkat lunak yang digunakan p a d a k a su s i n i
adalah model waterfall. Model ini mengusulkan sebuah pendekatan kepada
perkembangan aplikasi yang sistematik dan sekuensial yang mulai pada tingkat dan
kemajuan sistem pada seluruh requirements definition, system and software design,
implementation and unit testing, integration and system testing, operation
maintenance. Dimodelkan setelah siklus rekayasa konvensional, model sekuensial
linier melingkupi aktivitas-aktivitas sebagai berikut :
1. Requirements Definition.
Tahap requirements definition merupakan tahap pengumpulan kebutuhan data
secara lengkap, kemudian dianalisis dan didefinisikan kebutuhan data tersebut
sehingga terpenuhi oleh aplikasi yang akan dibangun. Fase ini harus terpenuhi
secara lengkap untuk menghasilkan desain yang sesuai.
2. System and Software Design.
Tahapan system and software design merupakan tahap dimana dilakukan
penuangan pikiran dan perancangan sistem terhadap solusi dari permasalahan
yang ada dengan menggunakan perangkat pemodelan sistem seperti diagram alir
data (data flow diagram), diagram hubungan entitas (entity relationship diagram)
serta struktur dan bahasan data.
3. Implementation and Unit Testing.
Tahap implementation and unit testing merupakan tahap dimana penulisan kode
program atau coding yang merupakan penerjemahan design dalam bahasa yang
dapat dikenali oleh komputer. Dilakukan oleh programmer yang akan
menterjemahkan transaksi yang diminta oleh pemain. Tahapan ini yang
merupakan tahapan secara nyata dalam mengerjakan suatu sistem. Dalam artian
penggunaan komputer akan dimaksimalkan dalam tahapan ini. Setelah
pengkodean selesai maka akan dilakukan testing terhadap sistem yang telah
dibuat. Tujuan testing adalah menemukan kesalahan-kesalahan terhadap sistem
Requirements analysis and
definition
System and software design
Integration and system testing Implementation
and unit testing
Operation and maintenance 4. Integration and System Testing.
Tahap integration and system testing merupakan tahap dimana sistem yang baru
diuji kemampuan dan keefektifannya sehingga didapatkan kekurangan dan
kelemahan sistem yang kemudian dilakukan pengkajian ulang dan perbaikan
terhadap aplikasi menjadi lebih baik dan sempurna.
5. Operationand Maintenance.
Tahap operationand maintenance merupakan tahap dimana penerapan dan
pemeliharaan program secara normal tidak selalu diperlukan, tahap ini
merupakan bagian siklus panjang. Sistem telah terpasang dan sedang dalam
penggunaan. Pemeliharaan mencakup perbaikan kesalahan yang tidak ditemukan
dalam tahap-tahap sebelumnya. Meningkatkan implementasi unit-unit sistem
dapat mempertinggi pelayanan sistem yang disebabkan oleh kebutuhan baru.
1.6. Sistematika Penulisan
Sistematika penulisan laporan akhir penelitian ini disusun untuk memberikan
gambaran umum tentang penelitian yang dijalankan. Sistematika penulisan
tugas akhir ini adalah sebagai berikut :
BAB I PENDAHULUAN
Bab ini berisi uraian latar belakang masalah, identifikasi masalah, maksud
dan tujuan, batasan masalah, metodologi penelitian, tahap pengumpulan data, model
pengembangan perangkat lunak dan sistematika penulisan.
BAB II LANDASAN TEORI
Bab ini akan membahas mengenai teori-teori yang berkaitan dengan geme
dan algoritma backtracking . Bab ini menguraikan dan membahas tentang teori-teori
yang digunakan untuk implementasi algoritma backtracking pada game Unblockme.
Mulai dari pengertian algoritma backtracking dan penjelasannya, teori–teori yang
digunakan dan penjelasan Algoritma Backtracking.
BAB III ANALISIS DAN PERANCANGAN SISTEM
Bab ini menjelaskan analisis terhadap implementasi algoritma backtracking
yang mencakup masalah dalam penyelesaian game unblockme menggunakan
algoritma Backtracking ,Menganalisis masalah dari model penelitian,
menggambarkan perumusan masalah dan analisa kebutuhan non-fungsional dan
BAB IV IMPLEMENTASI DAN PENGUJIAN
Merupakan tahapan yang dilakukan dalam penelitian secara garis besar
dimulai dari tahap persiapan sampai pada tahap penarikan kesimpulan, metode, dan
kaidah yang diterapkan dalam penelitian. Pada bab ini juga, menerapkan kegiatan
implementasi dan pengujian pada game Unblockme menggunakan algoritma
backtracking.
BAB V KESIMPULAN DAN SARAN
Bab ini berisi kesimpulan yang sudah diperoleh dari hasil yang di dapat pada
implementasi algoritma backtracking pada game Unblockme meliputi kecerdasan
buatan atau artificial intellegence (AI), desain, dan tools-tools yang dikembangkan
serta saran yang ditambahkan dalam implementasi algoritma backtracking pada game
9
2.1Game Unblockme
Game Unblockme, Game ini sangat sederhana dan simple karena pemain
hanya perlu memindahkan box/balok kayu kelubang atau ke tempatnya. Namun
dalam permainannya dibutuhkan suatu pemikiran dan strategi karena banyak
terdapat penghalang dan aturan dalam permainan. Sehingga pemain harus
benar-benar memikirkan langkah yang jitu untuk menyelesaikan permainan . Game
Unblokme merupakan salah satu game yang sistematis dengan ruang lingkup
masalah yang jelas dimana dalam penyelesaian game ini pemain harus fokus
untuk mencapai kondisi akhir (goal). Sehingga dengan fokus dalam pencarian
kemungkinan langkah yang tepat, game ini dapat diselesaikan. Papan dan board
pada game unblockme bisa dilihat pada gambar berikut :
2.1.1 Aturan Permainan Unblockme
Aturan permainan secara umum adalah membuat balok yang berwarna merah
keluar dari papan Permainan. Pemain hanya perlu menggulirkan balok-balok lain
agar tidak menghalangi jalan balock merah keluar dari board. Balok terdiri atas
empat macam, balok vertikal kecil, vertikal besar, horizontal kecil dan horizontal
besar.
1. Jika balok tersebut berbentuk horizontal maka hanya bisa digeser ke kanan
atau ke kiri. Pergerakan balok tersebut bisa dilihat pada gambar berikut :
Gambar 2.2 Balok bergerak Horizontal.
2. Jika balok tersebut berbetuk vertikal maka hanya bisa digeser ke atas atau
kebawah. Pergerakan balok tersebut bisa dilihat pada gambar berikut :
3. Aturan-aturan pada pergerakan atau pergeseran balok pada kotak bisa di
lihat pada gambar berikut :
Gambar 2.8 Contohgerakan valid dalam panah hijau,invalid dalam panah merah.
Pada gambar 2.8 aturan pergerakan balok di jelaskan dengan tanda panah
berwarna hijau dan merah. Tanda panah berwarna hijau berarti valid dalam artian bisa
di gerakan atau arah pergeraknnya benar dan tanda panah yang berwarna merah
berarti invalid dalam artian balok yang ditandai dengan panah berwarna merah tidak
bisa degerakan dengan alasan balok tersebut terhalang dinding atau balok lain.
2.2Algoritma
Algoritma adalah salah satu cabang ilmu komputer yang membahas prosedur
penyelesaian suatu permasalahan. Algoritma adalah urutan langkah-langkah dalam
menentukan suatu masalah. Algoritma juga dapat didefinisikan dengan deretan
langkah komputasi yang mentransformasikan masukan (input) menjadi keluaran
(output). Dapat disimpulkan algoritma adalah serangkaian urutan langkah-langkah
atau prosedur untuk menyelesaikan suatu masalah dengan memproses nilai keluaran.
Algoritma dapat ditulis dalam bentuk pseudocode ataupun flowchart. Pseudocode
sehingga pseudocode adalah kode yang menyerupai kode program sebenarnya.
Sedangkan flowchart merupakan bentuk gambar atau diagram yang mempunyai
aliran satu atau dua arah secara skuensial [4].
2.2.1 Definisi Algoritma
Algoritma adalah urutan langkah-langkah logis penyelesaian yang disusun secara
matematis dan logis. Langkah-langkah dalam algoritma harus logis dan harus dapat
ditentukan bernilai salah atau benar. Dalam beberapa konteks, algoritma adalah
spesifikasi urutan langkah untuk melakukan pekerjaan tertentu. Pertimbangan dalam
pemilihan algoritma adalah[7] :
1. Algoritma haruslah benar, artinya algoritma akan memberikan keluaran yang
dikehendaki dari sejumlah masukan yang diberikan. Tidak peduli sebagus apapun
algoritma, apabila menghasilkan keluaran yang bernilai salah maka algoritma
tersebut bukanlah algoritma yang baik.
2. Seberapa baik algoritma yang diterapkan, artinya algoritma yang baik harus
mampu memberikan hasil yang sedekat mungkin dengan nilai sebenarnya. Dalam
hal ini, hal terpenting pada algoritma untuk menyelesaikan masalah yang
memerlukan aproksimasi hasil (hasil yang berupa pendekatan).
3. Efisiensi algoritma, artinya efisiensi algoritma dapat ditinjau dari dua hal yaitu
efisiensi waktu dan memori.
2.2.2 Sejarah Algoritma
Kata algoritma berasal dari latinisasi nama seorang ahli matematika dari
Uzbekistan Al Khawārizmi. Dahulu, orang hanya mengenal kata algorism yang berarti
proses menghitung dengan angka arab. Para ahli bahasa berusaha menemukan asal kata
algorism, dan akhirnya para ahli sejarah matematika berhasil menemukan asal kata yang
berasal dari penulis buku arab yang terkenal yaitu Abu Ja’far Muhammad Ibnu Musa Al
Khawārizmi. Al Khawārizmi dibaca orang barat menjadi algorism. Al Khawārizmi
menulis kitab Al Jabar Wal-Muqabala yang artinya “Buku Pemograman Dan
menjadi kata algoritm muncul dikarenakan kata algorism sering dikelirukan dengan
arithmetic, sehingga akhiran -sm berubah menjadi –thm. Seiring perkembangan, lambat laun kata algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi)
secara umum sehingga kehilangan makna kata aslinya. Dalam bahasa Indonesia, kata
algorithm diserap menjadi algoritma .
2.2.3 Algoritma Backtracking
Algoritma backtracking pertama kali diperkenalkan oleh D.H. Lehmer pada
tahun 1950. Dalam perkembangannya, beberapa ahli seperti RJ Walker, Golomb, dan
Baumert menyajikan uraian umum tentang algoritma backtracking dan penerapannya
dalam berbagai persoalan dan aplikasi. Algoritma backtracking merupakan salah satu
metode pemecahan masalah yang termasuk dalam strategi yang berbasis pencarian
pada ruang status [8].
Algoritma backtracking bekerja secara rekursif dan melakukan pencarian
solusi persoalan secara sistematis pada semua kemungkinan solusi yang ada.
Algoritma ini berbasis Depth-First Search (DFS) dalam pencarian solusi dengan
melakukan penelusuran suatu struktur berbentuk pohon berakar secara preorder.
Proses ini dicirikan dengan ekspansi simpul terdalam lebih dahulu sampai tidak
ditemukan lagi suksesor dari suatu simpul.
Mekanisme penyelesaian dengan menggunakan algoritma backtracking
berprinsip pada metode rekursif. Untuk menyelesaikan keseluruhan masalah,
dibutuhkan sebuah solusi untuk permasalahan pertama kemudian
permasalahan-permasalahan lainnya akan dicoba untuk diselesaikan secara rekursif berdasarkan
solusi pertama. Apabila pada kemungkinan solusi yang dicari tidak ditemukan, maka
dilakukan backtrack untuk menguji kemungkinan solusi selanjutnya. Proses
backtrack akan selesai ketika tidak ada lagi solusi yang mungkin untuk diselesaikan
2.2.4 DFS (Depth-First Seacrh)
DFS (Depth-First-Search) adalah salah satu algoritma penelusuran struktur
graf / pohon berdasarkan kedalaman. Simpul ditelusuri dari root kemudian ke salah
satu simpul anaknya ( misalnya prioritas penelusuran berdasarkan anak pertama
[simpul sebelah kiri] ), maka penelusuran dilakukan terus melalui simpul anak
pertama dari simpul anak pertama level sebelumnya hingga mencapai level terdalam.
Setelah sampai di level terdalam, penelusuran akan kembali ke 1 level sebelumnya
untuk menelusuri simpul anak kedua pada pohon biner [simpul sebelah kanan] lalu
kembali ke langkah sebelumnya dengan menelusuri simpul anak pertama lagi sampai
level terdalam dan seterusnya. berikut ini adalah gambar simulasi pencarian jalur
simpul dengan DFS gambar berikut :
root
Gambar 2.2 Simulasi jalur pencarian simpul dengan Depth First Search (DFS)
Pada gambar 2.2 ,dapat dilihat simulasi pencarian simpul 7 di dalam pohon
biner menggunakan metode pencarian DFS. Pencarian dilakukan terhadap bagian kiri
pohon terlebih dahulu. Ketika sampai di simpul 3, backtracking (tanda panah merah)
kesimpul 2 untuk melanjutkan pencarian di bagian kanan (simpul 4). Ketika ternyata
simpul 4 bukan simpul yang dicari, backtracking dilakukan kembali hingga simpul 2
dan 1,kemudian dilanjutkan pencarian di simpul bagian kanan, yaitu simpul 5. Ketika
2.2.5 Prinsip Backtracking
Algoritma backtracking pada pencarian kemungkinan solusi dibuat dalam
bentuk pohon ruang status dan algoritma akan menelusuri pohon tersebut secara
Depth-First Seacrh (DFS) sampai ditemukan solusi yang layak. Langkah-langkah
pencarian solusi pada algoritma backtracking adalah sebagai berikut [8]:
1. Solusi dicari dengan membentuk lintasan dari akar ke daun. Aturan yang dipakai
adalah mengikuti metode pencarian Depth-First Search (DFS). Simpul yang
telah dilahirkan dinamakan simpul hidup dan simpul hidup yang diperluas
dinamakan simpul-E (expand node).
2. Jika lintasan yang diperoleh dari perluasan simpul-E tidak mengarah ke solusi,
maka simpul itu akan menjadi simpul mati yang tidak dapat diperluas lagi.
3. Jika posisi terakhir ada disimpul mati, maka pencarian dilakukan dengan
membangkitkan simpul anak yang lainnya. Apabila tidak ada simpul anak, maka
dilakukan backtracking ke simpul induk.
4. Pencarian dihentikan jika telah menemukan solusi atau tidak ada simpul hidup
yang dapat ditemukan.
Pada tahapan-tahapan yang terdapat diatas dapat diberikan contoh melalui
gambar 2.4 sebagai berikut:
2.2.6 Kegunaan Backtrack
Penggunaan terbesar backtrack adalah untuk membuat kecerdasan buatan
pada board games. Dengan algoritma ini, program dapat menghasilkan pohon sampai
dengan kedalaman tertentu dari current status dan memilih solusi yang akan
membuat langkah-langkah user dalam melakukan tindakan untuk mengahsilkan
pohon solusi baru dengan jumlah pilihan langka terbanyak.
Beberapa kegunaan yang cukup terkenal dari algoritma backtracking pada
suatu masalah statik adalah pemecahan masalah N-Queen problem dan maze solver.
N-Queen problem adalah bagaimana cara meletakan bidak queen catur sebanyak N
buah pada papan catur atau pada papan ukuran NxN yang dapat memangsa bidak
lainnya dengan satu gerakan. Meskipun terdapat kemungkinan lebih dari satu solusi,
tetapi pencarian semua solusi biasanya tidak terlalu diperlukan.
Gambar 2.8 Contoh N-Queen problem.
Pada maze solver cara kerjanya adalah bagaimana mencari jalan keluar dari
suatu maze (labirin). Pada maze yang sederhana dimana field yang dibentuk dapat
dipresentasikan dalam bentuk biner dan pada setiap petak maksimal terdapat 4
kemungkinan yaitu atas, kanan, bawah, dan kiri. Untuk masalah ini biasanya solusi
pertama yang ditemukan bukanlah solusi yang paling optimal, sehingga untuk
mendapatkan hasil yang optimal dibutuhkan pencarian terhadap seluruh kemungkinan
Gambar 2.9 Contoh maze solver
2.2.7 Kecerdasan Buatan
Kecerdasan buatan merupakan sub-bidang ilmu komputer (computer science)
yang khusus ditujukan untuk membuat perangkat lunak dan perangkat keras yang
sepenuhnya bisa menirukan beberapa fungsi otak manusia, atau cabang ilmu
komputer yang mempelajari otomatisasi tingkah laku cerdas (intelligent). Kecerdasan
buatan didasarkan pada teori suara (sound theoretical) dan prinsip-prinsip aplikasi
dari bidangnya. Prinsip-prinsip ini meliputi struktur data yang digunakan dalam
representasi pengetahuan algoritma yang diperlukan untuk mengaplikasikan
pengetahuan serta bahasa dan teknik pemograman yang digunakan dalam
mengimplementasikannya.
Beberapa para ahli, mendefinisikan kecerdasan buatan (artificial intelligence)
secara berbeda-beda tergantung pada sudut pandangnya masing-masing. Para ahli ada
yang mendefinisikan kecerdasan buatan (artificial intelligence) fokus kepada logika
berpikir manusia saja, ada juga yang mendefinisikan kecerdasan buatan (artificial
intelligence) secara lebih luas terhadap tingkah laku manusia. Stuart Russel dan Peter
Norvig mengelompokan definisi kecerdasan buatan (artificial intelligence) yang
1. Thinking humanly : The cognitive modeling approach
Pendekatan thinking humanly dilakukan dengan dua cara sebagai berikut :
a. Melalui intropeksi dimana proses ini adalah menangkap
pemikiran-pemikiran yang didapat pada saat berfikir.
b. Melalui eksperimen-eksperimen psikologi.
2. Acting humanly : The turing test approach
Pada tahun 1950, Alan Turing membuat sebuah eksperimen program
penginterogasian untuk menguji kemampuan komputer pada manusia melalui
teletype (komunikasi berbasis teks jarak jauh). Dalam hal ini, apabila integrator
tidak dapat membedakan yang diinterogasi adalah manusia atau komputer maka
program tersebut lolos dari turing test. Turing test sengaja menghindari interaksi
fisik antara integrator dan komputer, karena simulasi fisik manusia tidak
memerlukan intelejensia.
3. Thinking rationally : The laws of thought approach
Terdapat dau masalah pada pendekatan ini, yaitu :
a. Tidak mudahnya untuk membuat pengetahuan informal dan menyatakan
pengetahuan tersebut kedalam formal term yang diperlukan oleh notasi
logika, khususnya ketika pengetahuan tersebut memiliki kepastian kurang
dari 100%.
b. Terdapat perbedaan besar antara dapat memecahkan masalah “dalam
prinsip” dan memecahkannya “dalam dunia nyata”.
4. Acting rationally : The rationally agent approach
Membuat inferensi yang logis merupakan bagian dari suatu rational agent. Hal
ini disebabkan satu-satunya cara untuk melakukan aksi secara rasional adalah
dengan menalar secara logis. Dengan menalar secara logis, maka bisa didapatkan
kesimpulan bahwa aksi yang diberikan akan mencapai tujuan atau tidak. Apabila
mencapai tujuan, maka agent dapat melakukan aksi berdasarkan kesimpulan
Thinking humanly dan acting humanly adalah dua definisi dalam arti yang sangat
luas. Hingga saat ini, pemikiran manusia yang diluar rasio, yakni refleks dan intuitif
(perasaan), belum dapat ditirukan oleh komputer. Sedangkan definisi thinking
rationally jauh lebih sempit dari acting rationally dengan pendekatan rational agent.
Hal ini berdasarkan pemikiran bahwa komputer dapat melakukan penlaran secara
logis dan juga dapat melakukan aksi secara rasional berdasarkan hasil penalaran. [6].
2.3Unified Modeling Language (UML)
Unified Modeling Language merupakan salah satu alat bantu yang dapat
digunakan dalam bahasa pemograman yang berorientasi objek, saat ini UML akan
mulai menjadi standar masa depan bagi industri pengembangan sistem/perangkat
lunak yang berorientasi objek sebab pada dasarnya UML digunakan oleh banyak
perusahaan raksasa seperti IBM, Microsoft, dan sebagainya. Berikut ini beberapa
definisi UML [10]:
Unified Modeling Language merupakan metode pengembangan perangkat lunak
(sistem informasi) dengan menggunakan metode grafis serta merupakan bahasa untuk
visualisasi, spesifikasi, konstruksi serta dokumentasi.
1. Unified Modeling Language (UML) adalah bahasa yang telah menjadi standar
untuk visualisasi, menetapkan, membangun dan mendokumentasikan arti
suatu sistem perangkat lunak.
2. Unified Modeling Language (UML) dapat didefinisikan sebagai sebuah
bahasa yang telah menjadi standar dalam industri untuk visualisasi,
merancang dan mendokumentasikan sistem perangkat lunak.
3. Unified Modeling Language (UML) merupakan standard modeling language
yang terdiri dari kumpulan-kumpulan diagram, dikembangkan untuk
membantu para pengembang system dan software agar bisa menyelesaikan
tugas-tugas seperti spesifikasi, visualisasi, desain arsitektur, konstruksi,
Berdasarkan beberapa pendapat yang dikemukakan diatas dapat ditarik kesimpulan
bahwa Unified Modeling Language (UML) adalah sebuah bahasa yang berdasarkan
grafik atau gambar untuk memvisualisasikan, menspesifikasikan, membangun, dan
pendokumentasian dari sebuah sistem pengembangan perangkat lunak berbasis
Object Oriented Programming (OOP).
Gambar 2.9 Logo Unified Modeling Language (UML).
2.3.1 UML (Diagram Unified Modeling Language )
Beberapa literatur menyebutkan bahwa UML menyediakan sembilan jenis
diagram, yang lain menyebutkan delapan karena ada beberapa diagram yang
digabung, misalnya diagram komunikasi, diagram urutan dan diagram pewaktuan
digabung menjadi diagram interaksi. Namun demikian model-model itu dapat
dikelompokkan berdasarkan sifatnya yaitu statis atau dinamis. Jenis diagram itu
antara lain [9].
1. Diagram Kelas (Class Diagram)
Diagram kelas menggambarkan struktur sistem dari segi pendefinisian
kelas-kelas yang akan dibuat untuk membangun sistem. Kelas memiliki apa yang
disebut atribut dan metode atau operasi.
a. Atribut merupakan variabel-variabel yang dimiliki oleh suatu kelas.
Diagram kelas dibuat agar pembuat program atau programmer membuat
kelas-kelas sesuai rancangan di dalam diagram kelas-kelas agar antara dokumentasi
perancangan dan perangkat lunak menjadi sinkron. Berikut adalah contoh dari
diagram kelas.
Gambar 2.7 contoh class diagram
2. Diagram Use Case
Use case mendeskripsikan sebuah interaksi antara satu atau lebih aktor dengan
sistem informasi yang akan dibuat. Secara kasar, use case digunakan untuk mengetahui
fungsi apa saja yang ada di dalam sebuah sistem informasi dan siapa saja yang berhak
menggunakan fungsi-fungsi itu. Syarat penamaan pada use case adalah nama
didefinisikan sesimpel mungkin dan dapat dipahami. Ada dua hal utama pada use case
yaitu pendefinisian apa yang disebut aktor dan use case.
a. Aktor merupakan orang, proses, atau sistem lain yang berinteraksi dengan
sistem informasi yang akan dibuat diluar sistem informasi yang akan dibuat
itu sendiri, jadi walaupun simbol dari aktor adalah gambar orang, tapi aktor
belum tentu merupakan orang.
b. Use case merupakan fungsionalitas yang disediakan sistem sebagai unit-unit
yang saling bertukar pesan antar unit atau aktor.
Gambar 2.8 Contoh Use Case Diagram
3. Diagram Aktivitas (Activity Diagram)
Diagram aktivitas menggambarkan workflow (aliran kerja) atau
aktivitas dari sebuah sistem atau proses bisnis atau menu yang ada pada
perangkat lunak. Yang perlu diperhatikan disini adalah bahwa diagram
aktivitas menggambarkan aktivitas sistem bukan apa yang dilakukan aktor,
jadi aktivitas yang dapat dilakukan oleh sistem. Diagram aktivitas juga
banyak digunakan untuk mendefinisikan hal-hal berikut :
a. Rancangan proses bisnis dimana setiap urutan aktivitas yang digambarkan
merupakan proses bisnis sistem yang didefinisikan.
b. Urutan atau pengelompokkan tampilan dari system / user interface dimana
c. Rancangan pengujian dimana setiap aktivitas dianggap memerlukan
sebuah pengujian yang perlu didefinisikan kasus ujinya.
d. Rancangan menu yang ditampilkan pada perangkat lunak.
Gambar 2.9 Contoh activity diagram
4. Diagram State Machine (Statechart Diagram)
State machine diagram atau statechart diagram atau dalam bahasa Indonesia
disebut diagram mesin status atau sering juga disebut diagram status
digunakan untuk menggambarkan perubahan status atau transisi status dari
sebuah mesin atau sistem atau objek. Jika diagram sekuen digunakan untuk
interaksi antar objek maka diagram status digunakan untuk interaksi di dalam
sebuah objek. Perubahan tersebut digambarkan dalam suatu graf berarah.
Gambar 2.10 Contoh statechart diagram
5. Diagram Sekuen (Squence Diagram)
Diagram sekuen menggambarkan kelakuan pada objek use case dengan
mendeskripsikan waktu hidup objek dan message yang dikirimkan dan
diterima antar objek. Oleh karena itu untuk menggambar diagram sekuen
maka harus diketahui objek-objek yang terlibat dalam sebuah use case beserta
metode-metode yang dimiliki kelas yang diinstansiasi menjadi objek itu.
Membuat diagram sekuen juga dibutuhkan untuk melihat skenario yang ada
pada use case. Banyaknya diagram sekuen yang harus digambar adalah
minimal sebanyak pendefinisian use case yang memiliki proses sendiri atau
yang penting semua use case yang telah didefinisikan interaksi jalannya pesan
sudah dicakup pada diagram sekuen sehingga semakin banyak use case yang
Gambar 2.11 Contoh squence diagram
2.4 Pembangunan Perangkat Lunak
Pada tahapan pembangunan perangkat lunak ini, tols atau aplikasi yang
digunakan untuk mengimplementasikan algoritma backtracking pada game
2.4.1 Bahasa Pemrograman C#
C# (dibaca: C sharp) merupakan sebuah bahasa pemrograman yang
berorientasi objek yang dikembangkan oleh Microsoft sebagai bagian dari
inisiatif kerangka .NET Framework. Bahasa pemrograman ini dibuat berbasiskan
bahasa C++ yang telah dipengaruhi oleh aspek-aspek ataupun fitur bahasa yang
terdapat pada bahasa-bahasa pemrograman lainnya seperti Java, Delphi, Visual
Basic, dan lain-lain) dengan beberapa penyederhanaan. Menurut standar
ECMA-334 C# Language Specification, nama C# terdiri atas sebuah huruf Latin C
(U+0043) yang diikuti oleh tanda pagar yang menandakan angka # (U+0023).
Tanda pagar # yang digunakan memang bukan tanda kres dalam seni musik
(U+266F), dan tanda pagar # (U+0023) tersebut digunakan karena karakter kres
dalam seni musik tidak terdapat di dalam keyboard standar.
Gambar 2.10 Logo Extensi Bahasa C# pada Visual Studio.
2.4.2 C# Sintaks
Bahasa C# sangat mirip dengan bahasa C++ dan Java. Kode pada C# terdiri
dari kumpulan statement, dimana antar statementnya dipisahkan dengan titik
koma. Anda dapat menambahkan lebih dari satu statement pada satu baris
program C# merupakan block-structured language, yang berarti setiap statement
buka dan kurung kurawal tutup ({ dan }) yang dapat berisi beberapa statement,
contohnya:
{
<code line 1, statement 1>; <code line 2, statement 2> <code line 3, statement 2>;
}
dapat melihat statement kedua dan statement ketiga adalah satu baris program
karena statement kedua tidak diakhiri dengan titik koma. Pada C# dalam sebuah
blok dapat terdapat blok dagi didalamnya atau dapat juga disebut sebagai
nested-blocks.
Komentar adalah baris program yang tidak akan dieksekusi oleh compiler,
gunanya untuk menambahkan keterangan pada program atau menonaktifkan
sementara baris program tertentu untuk kepentingan debugging, baris komentar
pada C# dapat ditulis sebagi berikut:
/* Ini adalah komentar */ /* Dan juga...
... ini komentar */
Contoh penulisan program dalam bahasa C# adalah sebagai berkut :
using System;
namespace HelloCSharp {
class Program {
static void Main(string[] args) {
//menampilkan output ke layar
Console.WriteLine("Ini adalah contoh program C#");
} }
}
2.4.3 Microsoft Visual Studio Express
Microsoft Visual Studio Express adalah kumpulan freeware
lingkungan pengembangan terpadu (IDE) yang dikembangkan oleh Microsoft
yang merupakan versi ringan dari Microsoft Visual Studio. Gagasan edisi
ekspres menurut Microsoft adalah untuk menyediakan efisiensi, mudah
digunakan dan mudah dipelajari bagi pengguna IDE selain pengembang
perangkat lunak profesional, yaitu seperti penggemar dan mahasiswa.
29
Unblockme adalah permainan yang bersifat logika Permainan ini adalah
permainan menemukan jalan atau solusi dengan cara menggeser balok penghalang
pada kolom-kolom kosong sampai ditemukan solusi dari balok User menuju Goal.
Permainan Unblockme bersifat unik ,karena setiap penggeseran balok saling
berkaitan dan balok tersebut mempunyai gerak yang terbatas. Untuk
menyelesaikan permainan unblockme ini, harus menggeser sejumlah balok
penghalang (Cokelat) sampai terbentuk jalan dari balok tujuan (Merah) menuju
Goal.
GOAL
RESETGambar 3.1 Contoh penyelesaian Game Unblockme
Oleh karena itu dibutuhkan teknik untuk menyelesaikan masalah yang
bersifat unik dengan sistem random yang akan menghasilkan solusi yang akan
saling terkait dari soal balok dengan balok lainnya dan mencari solusi dalam
menyelesaikan jawaban pada permainan Unblockme dengan beberapa syarat
didalamnya. Dengan menggunakan prinsip dasarnya, algoritma backtracking
mencari segala kemungkinan solusi dengan menerapkan ruang keadaan dalam
bentuk pohon solusi hingga menghasilkan solusi yang layak. Kelayakan solusi
pada permainan Unblockme didefinisikan dengan sampainya balok User (Merah)
GOAL
RESETGambar 3.2 State akhir dari Penyelesaian game Unblockme.
3.2 Analisis Data Masukan
Analisis game yang akan diteliti pada game Unblockme ini adalah dengan
mencari rute atau solusi dan menyelesaikannya. Pada dasarnya Unblockme ini
disetiap Balok saling terkait satu sama lainnya. Oleh karena itu, algoritrma
backtracking akan diterapkan pada Unblockme ini. Berikut merupakan alur
membangkitkan soal permainan serta penyelesaian Permainan :
Menentukan Jalur Membangkitkan Solusi
Gambar 3.3 Proses menentukan jalur.
Berikut ini adalah langkah-langkah penelesaian dari game unblockme
menggunakan algoritma backtracking, penjelasannya bisa dilihat dalam langkah
sebagai berikut :
1. Menentukan jalur
Pada tahapan menentukan jalur ini, kotak pada papan diinisialisasikan
terlebih dahulu kedalam bentuk matrix yang bertujuan mengidentifikasi balok
pada papan. Tujuan dari inisialisasi ini adalah supaya mudah menidentifikasi atau
menetukan apakah kotak pada papan berisi balok atau tidak, untuk lebih jelasnya
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Gambar 3.4 Kotak sebelum di inisialisasi.
Pada gambar 3.4 diatas dapat dilihat nilai matrix kotak sebelum
diinisialisasi, pada kotak tersebut diberi nilai nol (0) karena kotak tidak terisi
balok atau bisa dikatakan kotak kosong.
Sebelum memberikan nilai inisialisasi pada kotak, akan di jelaskan inisial
dari nilai yang dimasukan kedalam kotak dan inisialisasi tersebut dijabarkan
kedalam bentuk matrix. Inisialisasi balok berdasarkan angka dapat dijabarkan
sebagai berikut :
0 : Kotak kosong
1 : Balok User
2,3,4,5,6,7 : Balok penghalang
Gambar 3.5 kotak pada balok.
Pada penjelasan tersebut, dijelaskan keadaan pada kolom kotak setelah
diberikan inisialisasi , dimana nilai 0 adalah kotak yang kosong, nilai 1 balok user
dan 2,3,4,5,6,7 adalah balok penghalang. Pada gambar 3.5 masih dalam bentuk
balok , jika diinisialisakan dalam bentuk matrik akan menjadi seperti gambar 3.6
0 0 0 4 5 0 0 0 0 4 5 0 1 1 0 4 5 0 0 0 0 0 6 6 0 2 3 0 0 0 0 2 3 0 7 7
Gambar 3.6 inisialisasi matrix
Gada gambar 3.6 di atas dijelaskan gambaran papan permainan setelah
diisikan nilai matrix pada kolom inisialisasi.
Didalam proses penginisialisasian ,setiap kotak akan diberikan nilai indeks
yang akan di gambarkan dalam koordinat dalam papan permainan. Titik koordinat
pada papan akan digambarkan sebagai berikut :
Gambar 3.7koordinat Sumbu.
Pada gambar 3.7 menjelaskan keadaan awal kotak yang masih kosong
sebelum terjadinya inisialisasi balok permainan yang akan input dengan angka.
Gambar 3.8 Angka dimasukan sebagai inisialisasi balok
Pada gambar 3.8 , dapat dilihat sumbu (A,3),(B,3) diisikan oleh nilai 1 yang
diinisialisasikan sebagai balok yang terdapat dalam kotak. Untuk lebih jelasnya
masukan nilai yang menyatakan balok bisa dilihat pada tabel berikut :
Tabel 3.1 Tabel nilai input koordinat.
Koordinat Nilai Koordinat Nilai Koordinat Nilai
A1 0 C1 0 E1 5
A2 0 C2 0 E2 5
A3 1 C3 0 E3 5
A4 0 C4 0 E4 6
A5 0 C5 3 E5 0
A6 0 C6 3 E6 7
Koordinat Nilai Koordinat Nilai Koordinat Nilai
B1 0 D1 4 F1 0
B2 0 D2 4 F2 0
B3 1 D3 4 F3 0
B4 0 D4 0 F4 6
B5 2 D5 0 F5 0
Pada tabel diatas dapat dilihat nilai-nilai koordinat pada papan yang diisi
dengan angka-angka yang diinisialisasikan sebagai balok-balok pada papan
permainan. Setelah nilai-nilai tersebut dimasukan kedalam papan sesuai koordinat
yang sudah di tentukan. Pada gambar 3.9 terlihat hasil dari pemetaan nilai sesuai
koordinat yang telah ditentukan Maka didapatkan hasil sebagai berikut :
Gambar 3.9 Pemetaan nilai sesuai Koordinat.
Untuk tahap selanjutnya kotak-kotak yang diinisialisasi tersebut ditentukan
alur vertikal atau horizontal pergerakannya. Untuk mengetahui pergerakannya
dilihat dari urutan digit yang sama, contohnya pada papan permainan digit 4,4,4
terletak horizontal, maka hanya berlaku penggeseran horizontal, dan begitu juga
dengan dengan digit yang berurutan secara vertikal ,maka pergerakan atau
pergeseran yang berlaku vertikal. Pergeseran digit yang telah diinisialisasi
tersebut dapat digambarkan dalam tabel sebagai berikut :
Tujuan dari gambar 3.10 adalah untuk memperlihatkan arah pergerakan
balok berbentuk matrix pada papan permainan. Berikut ini adalah contoh kasus
pada penyelesaian game Unblockme dalam bentuk pohon solusi, bisa dilihat pada
gambar berikut :
Pada gambar 3.11 di atas dalam menemukan solusi yang layak digambarkan
kedalam pohon solusi. Tujuan dari tahapan-tahapan tersebut adalah untuk
mengeluarkan balok user (balok merah), dengan kata lain jalur mana yg di tempuh
oleh balok tersebut sehingga bisa keluar. Tahapan dalam inisialisasi ini bisa di
jelaskan dengan tahapan pada gambar berikut:
Gambar 3.12 menjelaskan tentang menentukan jalur, pada kasus ini balok
yang akan dipindahkan berada pada koordinat (A3,B3) diinisialisasikan dengan
angka 1, oleh karena itu koordinat yang harus dikosongkan adalah koordinat
(C3,D3,E3,F3) yang bertujuan untuk menentukan jalur mana yang harus
dikosongkan untuk dilewati oleh balok User.
Gambar 3.14 State awal (kiri) dan akhir (kanan) dalam bentu balok.
Gambar diatas menjelaskan kotak setelah jalur ditentukan dan
kemungkinan dibangkitkan. Pada setiap balok telah ditetapkan arah
pergerakannya horizontal atau vertikal jalurnya tersebut..pada balok user atau
balok merah telah ditetapkan goal statenya pada papan permainan. Pada
penjelasan gambar di atas juga dapat dilihat titik koordinat yang berubah pada
3.3 Analisis Algoritma
Analisis algoritma yang akan diteliti pada Unblockme ini adalah untuk
menganalisis cara kerja algoritma backtracking terhadap kasus permainan
Unblockme, bagaimana cara kerja algoritma backtracking dalam mencari solusi
serta penyelesaian tahap penyelesaian pada game Unblockme.
3.3.1 Analisis Algoritma Backtracking Penyelesaian Game
Sebelum melakukan pencarian solusi dengan graf, permainan ini harus
dimodelkan menjadi matrix berukuran 6 × 6. Dimana tempat kosong ditandai
dengan angka 0, balok merah (balok yang ingin dikeluarkan) ditandai dengan
angka 1, dan balok lainnya ditandai dengan angka 2 s/d 18. Terdapat batasan pada
banyak balok yaitu sebanyak 18. Dengan asumsi kasus terburuk, setiap balok
merupakan balok horizontal berukuran 2 × 1 maka banyak balok maksimal adalah
sebanyak luas permainan dibagi luas balok (sebanyak 36/2 atau 18) balok,
termasuk dengan balok yang ingin dikeluarkan. Sebagai contoh, untuk
merepresentasi keadaan permainan seperti pada Gambar menggunakan matriks
dapat dilihat sebagai berikut :
0 0 0 2 3 3
Gambar 3.15 Gambar kotak yang telah diinisialkan.
Pada gambar di atas akan di jelaskan langkah-langkah yang dilakukan dari awal
permainan. Sebelum melakukan permainan , langkah-langkah harus dicatat dalam
Untuk menandai apakah suatu matriks keadaan permainan sudah pernah
dikunjungi atau belum bisa digunakan sebuah Map yang memetakan Matriks ke
sebuah Boolean. Map memetakan Matriks ke Boolean dengan menyimpan
Elemen dalam bentuk pasangan Matriks dan Boolean. Dapat dilihat apakah suatu
Matriks sudah dipetakan ke sebuah Boolean dengan mudah. Jika sudah terdapat
Pemeteaan dari Matriks ke Boolean maka Matriks tersebut sudah dikunjungi.
Boolean dalam pemakaian ini selalu bernilai true jika ada. Selain cara di atas, ada
cara lain untuk mengetahui apakah Matriks sudah pernah dikunjungi adalah
dengan menggunakan hash table atau set. Pemakaian hash table akan membuat
rumit persoalan karena harus diimplementasikan fungsi hash terlebih dahulu,
sedangkan pemakaian set hanya dapat dilakukan untuk segelintir bahasa
pemrograman. Setelah dihasilkan Node yang merupakan solusi dari permainan,
digunakanlah langkah-langkah dari Node tersebut untuk mengkonstruksi ulang
transisi matriks permainan dari awal sampai ditemukannya solusi.
3.3.2 Membangkitkan Solusi
Tiap 1 balok memiliki kemungkinan langkah yang banyak, bisa jadi >=1,
dalam aplikasi semua kemungkinan-kemungkinan langkah di simpan dalam array.
Contohnya pada matrix di posisi awal . Tiap-tiap balok dibuat kemungkinan
langkahnya dan dimasukan kedalam satu daftar langkah-langkah .Setiap 1 langkah
dari balok yg manapun, direkam keseluruhan posisi balok (matrix). 1 matrix ini
yang disebut membangkitkan solusi. sampai didapat matrix dengan posisi dimana
jalur yang telah di tentukan sama dengan jalur pada gambar 3.5 untuk balok user.
Flowchart tersebut merupakan alur dari proses pembangkitan solusi atau
generate solution pada program. Alur flowchart tersebut dapat di tuliskan dengan
langkah seperti berikut :
1. Mulai.
2. Inisialisasi matrix awal dari posisi awal balok.
3. Simpan pada antrian Pemetaan (Matrix).
4. Sebelum dilakukan pembangkitan langkah, di cek terlebih dahulu
apakah matrix (pemetaan posisi balok) sudah pernah di lakukan proses
pembangkitan atau belum. jika sudah kembali ke antrian pemetaan
untuk ambil antrian selanjutnya.
5. Jika belum dilakukan, maka cek kembali apakah pada pemetaan matrix
tersebut balok merah (di tandai dengan angka 1) sudah ada pada posisi
goal/ belum).
6. Jika ya maka pencarian akan dinyatakan "Selesai".
7. Jika belum ,maka lakukan pembangkit solusi berupa langkah- langkah
yang dapat dilakukan oleh tiap balok.
8. Masukan kedalam antrian langkah.
9. Setiap dilakukan 1 langkah kemungkinan di atas, petakan ke dalam
matrix dari posisi awal. (yang berganti hanya balok yg melakukan
langkah dari dan ke).
10. Masukan pemetaan tersebut kedalam antrian Pemetaan(Matrix).
11.Proses ini dilakukan berulang sampai mendapat posisi yg diinginkan
(posisi goal).
Pada proses tersebut algoritma backtrackingnya terlihat dari mulai no :
7 -> pencarian kemungkinan langkah / disebut membangkitkan solusi,
(didapat banyak langkah)
8 -> simpan ke antrian langkah(Al)
9 -> lakukan langkah sebanyak antrian.
matrix awal(Ma) matrik setelah dilakukan 1 langkah(Mf)
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
simpan kedalam antrian matrix.
antrian Matrix (Am) / jika d analogikan sebagai pohon Am ini adalah node
nya. jadi 1 node = 1 matrix[a,b] .
setelah di lakukan langkah, akan dilakukan lagi pembangkitan
langkah/solusi dari matrix yang baru (Mf), terus menerus dilakukan hingga d
dapat matrix dengan posisi angka 1 (balok merah) berada pada posisi. setiap 1
langkah dilakukan, pada balok juga di lakukan perubahan pada titik koordinat
baloknya.
Untuk aturannya dilakukan terlebih dahulu pada balok no 1. jadi langkah
yg pertama di ambil oleh balok merah (angka 1 pda matrix). selanjutnya bebas
Pada proses tersebut terjadi pergeseran balok , pergeseran tersebut berupa
inisialisasi dalam bentuk matrix. Pada proses tersebut dapat dilihat pada gambar
berikut :
Gambar 3.17 Pergesaeran balok berupa Matrix
Pada gambar tersebut dapat dilihat pergerakan setiap balok , jadi setiap
pergeseran atau pergerakan balok deirekam dan ditampilkan kedalam output
3.4 Analisis Kebutuhan Perangkat Lunak
Perangkat lunak (software) merupakan hal terpenting dalam mendukung
kinerja sebuah sistem. Perangkat lunak digunakan dalam sebuah sistem untuk
memberikan perangkat keras (hardware) sebuah perintah agar perangkat keras
melakukan apa yang diinginkan oleh pemain.
Berikut ini, kebutuhan perangkat lunak untuk menerapkan algoritma
backtracking pada game Unblockme pada tabel 3.2.
Tabel 3.2 Spesifikasi perangkat lunak
Spesifikasi Perangkat Lunak
Windows XP, Windows 7, Windows 8
Visual Studio
3.4.1 Analisis Kebutuhan Perangkat Keras
Agar aplikasi dapat berjalan dengan baik, maka dibutuhkan perangkat
keras (hardware) yang sesuai dengan kebutuhan aplikasi. Tabel 3.3 adalah
spesifikasi minimum perangkat keras yang dibutuhkan agar dapat menjalankan
aplikasi permainan Unblockme secara optimal.
Tabel 3.3 Spesifikasi perangkat keras
Komputer Spesifikasi Perangkat Keras
Prosesor Prosesor 1,8 Ghz
Resolusi Layar 800 x 600 pixel
Memori Memori 128 Mb
Hardisk Hardisk 20 Gb
Keyboard dan mouse Standar
3.4.2 Analisis Kebutuhan Non Fungsional
Analisis kebutuhan non fungsional merupakan analisis yang dibutuhkan
untuk menentukan spesifikasi kebutuhan sistem. Spesifikasi yang meliputi elemen
atau komponen-komponen yang dibutuhkan untuk sistem yang akan dibangun
hingga sistem tersebut diimplementasikan. Analisis kebutuhan ini menentukan
spesifikasi masukan yang diperlukan sistem, keluaran yang akan dihasilkan sistem
dan proses yang dibutuhkan untuk mengolah masukan sehingga menghasilkan
suatu keluaran yang diinginkan.
3.4.3 Analisis Kebutuhan Fungsional
Pemodelan yang digunakan pada game yang akan dibuat adalah analisis
perancangan dan pengembangan perangkat lunak berbasis objek, dimana alat yang
akan digunakan untuk pengembangan perangkat lunak yaitu pemodelan Unified
Modeling Language (UML).
3.4.3.1Use case Diagram
Sistem
User
Generate algoritma
Keluar permainan
Gambar 3.18 Use case diagram
Definisi use case berfungsi untuk menjelaskan fungsi dari use case yang terdapat
Tabel 3.3 Definisi use case
No Use Case Keterangan
1. Generate Solution Proses menyelesaikan game menggunakan algoritma.
2. Keluar Proses untuk keluar dari permainan
3.4.3.2Use Case Scenario
Skenario use case merupakan penjelasan mengenai alur kejadian yang di
dalamnya menjelaskan urutan interaksi antara aktor dengan use case tersebut.
Adapun skenario use case digambarkan sebagai berikut.
Tabel 3.4 Tabel memainkan permainan
Identifikasi
Nomor 1
Nama Memainkan Permainan
Tujuan Memainkan permainan
Deskripsi Proses untuk memainkan permainan
Aktor Pemain
Skenario Utama
Kondisi Awal Pemain berada di permainan
Aksi Aktor Reaksi Sistem
3.4.3.3Activity Diagram
Activity diagram merupakan gambaran alur aktivitas pada permainan yang
sedang dirancang, bagaimana masing-masing alur aktivitas berawal, decision yang
mungkin terjadi, dan bagaimana berakhir. Activity diagram dijelaskan melalui
gambar berikut:
1. Activity memainkan permainan
Pemain Sistem
Menggeser Kotak secara vertikal dan horizontal Start
Pemeriksaan Lajur
Pergeseran Kotak
Goal Sesuai
End Tidak sesuai
Kosong Jika berisi balok
2. Activity keluar permainan
Gambar 3.20 Activity keluar permainan
3.4.3.4Sequence Diagram
Sequence diagram menggambarkan tindakan objek pada use case dengan
mendeskripsikan waktu hidup objek dan message yang dikirimkan dan diterima
1. Squence diagram memainkan permainan
Sequence diagram memainkan permainan menunjukkan rangkaian
interaksi, pesan yang dikirim antar objek pada proses dimana game dimulai.
LoadGame :user
Lvl LoadSolution
1 : Membuka Permainan
2 : Load()
5 : GenerateSolution()
7 : SetCaption() 3 : InitialComponent()
9 : MoveBalok
8 : SetDescription()
10 : CetakMatrix() 4 : CetakMatrix()
10 : Finish
6 : LoadSolution
9 : ProcesComand()
Gambar 3.21 Squence diagram memainkan permainan
2. Squence diagram keluar permainan
Sequence diagram keluar menunjukkan rangkaian interaksi, pesan yang
User
1 : Tekan Mouse
Menu
2 : CloseForm()
3.4.3.5Class Diagram
Class diagram merupakan gambaran sistem berupa relasi antar kelas-kelas
ataupun paket-paketnya. Classdiagram dijelaskan melalui gambar berikut.
sistem
Gambar 3.23 Class diagram Game Unblockme
3.4.3.6 Perancangan Antarmuka
Perancangan antarmuka bertujuan untuk memberikan gambaran tentang
aplikasi yang akan dibangun, sehingga akan mempermudah dalam
mengimplementasikan aplikasi serta akan memudahkan pembuatan aplikasi.
Antarmuka permainan merupakan halaman yang muncul pertama kali pada saat
1. Perancangan antarmuka permainan.
5
2
Keterangan : 1. Goal state 2. Reset 3. Generate 4. next/prev level 5. Kotak Permainan 6. exit
1
3
6 4
Screen size : 800x600
Font : Times New Roman
F01
5
Gambar 3.24 Antarmuka permainan
2. Pesan ketika permaianan terselesaikan.
Selesai
OK MO1
3.4.3.7Jaringan Semantik
Untuk mengetahui keterhubungan dari setiap tampilan yang dibuat dapat
menggunakan jaringan semantik.
55
BAB IV
IMPLEMENTASI DAN PENGUJIAN SISTEM
4.1. Lingkungan Implementasi
Tahap implementasi dilakukan setelah analisis dan perancangan sistem selesai
dilakukan, selanjutnya akan diimplementasikan kedalam bahasa pemograman dan
diuji kedalam aplikasi. Aplikasi yang telah dibangun akan diimplementasikan untuk
mengetahui sistem dapat berjalan sesuai tujuan atau tidak. Tujuan dari implementasi
adalah untuk menerapkan perancangan yang telah dilakukan terhadap sistem,
sehingga pemaindapat memberikan masukan untuk perkembangan sistem yang telah
dibangun pada game unblockme dalam menerapkan algoritma backtracking.
4.2. Spesifikasi Kebutuhan Perangkat Keras
Adapun spesifikasi perangkat keras yang direkomedasikan untuk implementasi
algoritma backtracking pada game ini adalah sebagai berikut :
Tabel 4.1 Spesifikasi perangkat keras
Komputer Spesifikasi Perangkat Keras
Prosesor Prosesor 1,8 Ghz
Resolusi Layar 1024 x 768 pixel
Memori Memori 2 Giga
Hardisk Hardisk 100 Gb
4.3. Spesifikasi Kebutuhan Perangkat Lunak
Adapun spesifikasi perangkat lunak yang direkomendasikan untuk
implementasi algoritma backtracking pada game ini adalah sebagai berikut :
Tabel 4.2 Spesifikasi perangkat lunak
Spesifikasi Perangkat Lunak
Windows 7
Visual Studio
4.4. Tampilan Antar Muka
Pada tampilan antar muka ini diperlihatkan permainan dalam bentuk gambar ,
Algoritma yang telah dirancang pada sistem, diimplementasikan kedalam program
dengan antarmuka sebagai berikut :
4.4.1. Tampilan Splash Screen
Gambar tersebut merupakan tampilan awal atau loading pada saat user
membuka permainan.
4.4.2. Tampilan Level 1
Gambar 4.2 TampilanLevel 1
Gambar tersebut merupakan tampilan level 1 yang harus diselesaikan oleh
4.4.3. Tampilan Level 2
Gambar 4.3 TampilanLevel 2
Gambar tersebut merupakan tampilan level 2 yang harus diselesaikan oleh
pemain.
4.4.4. Tampilan Level 3
Gambar tersebut merupakan tampilan level 3 yang harus diselesaikan oleh
pemain.
4.4.5. Tampilan Berhasil
Gambar 4.5 Tampilan Berhasil
Gambar tersebut merupakan tampilan ketika pemain berhasil menyelesaikan
sebuah level.
4.5. Pengujian Simulasi
Pengujian dilakukan bertujuan untuk mendapatkan jalur solusi dari
susunan balok yang ada pada game UnblockMe. Pencarian dilakukan
berdasarkan jumlah balok yang masing-masing balok memiliki pola langkah
Gambar 4.6 Pola Penyelesaian pada Level 1
4.5.1 Pengujian Simulasi Game pada Level 1
Pengujian simulasi game Unblock Me dilakukan pada level 1 yang
memiliki tingkat kesulitan rendah agar dapat dengan mudah untuk dijelaskan
Gambar 4.7 TampilanLevel 1
4.5.2.Pengujian Matrix
Untuk mempermudah lajur pencarian solusi, terlebih dahulu dilakukan
perubahan bentuk dari sebuah balok kedalam sebuah matrix yang kemudian
diberikan inisialisasi berupa angka sesuai dengan banyaknya balok yang tersedia
0 0 0 3 0 0
- Balok merah ditandai dengan angka 1
- Selebihnya dari inisialisasi angka 2 s/d 6, merupakan balok biasa
Matriks di atas menggambarkan alur pencarian solusi yang dilakukan oleh aplikasi
setelah tombol generate solution di klik. Adapun aturan yang diterapkan pada balok
yaitu :
1. Balok merah merupakan balok user yang harus dikeluarkan dari petak papan
game menuju petak goal disebelah kanan. Untuk balok user ditandai dengan
angka 1 pada matriks.
2. Balok kayu merupakan balok pendukung aplikasi yang berguna untuk
memberikan halangan dan rintangan terhadap balok user. Untuk balok kayu
ditandai dengan angka > 1 pada matriks.
4.6. Pengujian Sistem
Pengujian system dilakukan untuk menemukan kekurangan atau kesalahan pada
perangkat lunak yang akan diuji. Pengujian ini bermaksud untuk mengetahui
perangkat lunak yang dibuat sudah memenuhi kriteria yang sesuai dengan tujuan
perancangan perangkat lunak tersebut. Pada pengujian perangkat lunak ini
menggunakan metode pengujian white box dan black box.Pengujian dengan metode
white box adalah pengujian dengan melihat kedalam modul untuk meneliti kode-kode
program yang ada, dan menganalisis apakah terdapat kesalahan atau tidak. Pengujian
dengan menggunakan metode black box berfokus pada persyaratan fungsional
perangkat lunak.
4.6.1 Pengujian White Box
Pengujian white box merupakan metode perancangan test case yang
menggunakan struktur control dari perancangan metode dalam mendapatkan test
case. Adapun metode yang digunakan dalam pengujian white box ini adalah metode
basic path. Metode basic path memungkinkan perancang uji kasus untuk