Implementasi Algoritma Backtracking Pada Game Unblokme

(1)

SKRIPSI

Diajukan untuk Menempuh Ujian Akhir Sarjana

TEGUH PRIBADHI

10109447

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS TEKNIK DAN ILMU KOMPUTER

UNIVERSITAS KOMPUTER INDONESIA

2015


(2)

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 langsung, semoga Allah SWT membalasnya. Akhir kata sebagai makhluk


(3)

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


(4)

v

ABSTRACT ... ii

KATA PENGHANTAR... iii

DAFTAR ISI ... v

DAFTAR GAMBAR ... ix

DAFTAR TABEL ... xii

DAFTAR SIMBOL ... xiii

DAFTAR LAMPIRAN ... xix

BAB 1 PENDAHULUAN ... 1

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.1 Game Unblockme... 8

2.1.1 Aturan Permainan Unblockme...9

2.2 Algoritma ... 10

2.2.1 Definisi Algoritma ... 11

2.2.2 Sejarah Algoritma ... 11

2.2.3 Algoritma Backtracking ... 12

2.2.4 DFS (Depth-First Search) ... 14

2.2.5 Prinsip Algoritma Backtracking... 16


(5)

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 Analisis Kebutuhan Fungsional ... 44

3.4.3.1 Use Case Diagram ... 44

3.4.3.2 Use Case Scenario... 45

3.4.3.3 Activity Diagram ... 46

3.4.3.4 Squence Diagram ... 47

3.4.3.5 Class Diagram ... 49

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


(6)

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


(7)

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), Informatika, 2011.


(8)

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 Seacrh (DFS). Mekanisme penyelesaian dengan menggunakan algoritma


(9)

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 adalah untuk mengimplementasikan algoritma backtracking pada game Unblockme.


(10)

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 bersumber dari internet berkaitan dengan aplikasi yang akan dibangun.


(11)

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 tersebut dan kemudian diperbaiki.


(12)

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.


(13)

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 analisa kebutuhan fungsional.


(14)

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 Unblockme agar lebih baik.


(15)

(16)

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 :


(17)

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 :


(18)

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 berasal dari kata pseudo yang artinya mirip atau menyerupai dan code berarti kode,


(19)

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


(20)

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 pada permasalahan awal.


(21)

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

1

2

8

5 10

9

7

3 4 6

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 simpul yang dicari berhasil ditermukan di simpul 7, pencarian pun dihentikan.


(22)

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:


(23)

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 solusi yang ada [4].


(24)

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 diperoleh dari beberapa textbook berbeda kedalam empat kategori, yaitu [9]:


(25)

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 tersebut.


(26)

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, simulasi dan testing, serta dokumentasi.


(27)

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. b. Operasi atau metode adalah fungsi-fungsi yang dimiliki oleh suatu kelas.


(28)

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.

KoneksiBasisData +host

+database +username +password +open() +execute() +getResult() +close()


(29)

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 setiap aktivitas dianggap memiliki sebuah rancangan antarmuka tampilan.


(30)

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. Berikut ini adalah contoh dari statechart diagram :


(31)

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 didefinisikan maka diagram sekuen yang harus dibuat juga semakin banyak.


(32)

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 Unblockme diperkenalkan secara singkat.


(33)

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 merupakan bagian dari blok kode. Setiap blok dibatasi dengan kurung kurawal


(34)

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.

{

<code line 1>; {

<code line 2>; <code line 3>; }

<code line 4>;

}

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 */


(35)

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.


(36)

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

RESET

Gambar 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) pada Goal.


(37)

GOAL

RESET

Gambar 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 bisa dilihat pada gambar berikut :


(38)

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 sebagai berikut :


(39)

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. Contoh, pada gambar berikut ini :


(40)

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


(41)

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 :

Gambar 3.10 arah pergerakan Horizontal (kiri) dan Vertikal (kanan). 0 0 0 4 0 0

0 0 0 4 0 0 0 0 0 4 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 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0


(42)

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 :

0 2 3 4 5 0 0 2 3 4 5 0 1 1 0 4 5 0 0 0 0 0 7 7 0 0 0 0 0 0 0 0 0 0 6 6

0 2 3 4 5 0 0 2 3 4 5 0 0 1 1 4 5 0 0 0 0 0 7 7 0 0 0 0 0 0 0 0 0 0 6 6

0 2 3 4 5 0 0 2 3 4 5 0 0 1 1 4 5 0 7 7 0 0 0 0 0 0 0 0 0 0 6 6 0 0 0 0

0 2 3 0 5 0 0 2 3 0 5 0 0 1 1 0 5 0 0 0 0 4 7 7 0 0 0 4 0 0 0 0 0 4 6 6

0 2 3 0 5 0 0 2 3 0 5 0 0 0 1 1 5 0 0 0 0 4 7 7 0 0 0 4 0 0 0 0 0 4 6 6

x

x

0 2 3 0 5 0 0 2 3 0 5 0 1 1 0 0 5 0 7 7 0 4 0 0 0 0 0 4 0 0 6 6 0 4 0 0

x

x

0 0 3 0 5 0 0 0 3 0 5 0 0 0 1 1 5 0 0 0 0 4 7 7 0 2 0 4 0 0 0 2 0 4 6 6

...

x

x

...

0 2 3 4 5 0 0 2 3 4 5 0 1 1 0 4 5 0 7 7 0 0 0 0 0 0 0 0 0 0 6 6 0 0 0 0

x

0 2 3 4 5 0 0 2 3 4 5 0 1 1 0 4 5 0 7 7 0 0 0 0 0 0 0 0 0 0 6 6 0 0 0 0

x

0 2 3 4 0 0 0 2 3 4 0 0 1 1 0 4 0 0 7 7 0 0 5 0 0 0 0 0 5 0 6 6 0 0 5 0

0 2 3 4 0 0 0 2 3 4 0 0 1 1 0 4 0 0 0 0 7 7 5 0 0 0 0 0 5 0 0 0 6 6 5 0

x

0 2 3 0 0 0 0 2 3 0 0 0 1 1 0 0 0 0 7 7 0 0 5 0 0 0 0 4 5 0 6 6 0 4 5 0

0 2 3 0 0 0 0 2 3 0 0 0 0 0 0 0 1 1 7 7 0 0 5 0 0 0 0 4 5 0 6 6 0 4 5 0

...

x

x

1 2 3 4 5


(43)

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:

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.12 Menentukan Jalur.

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.13 State awal (kiri) dan akhir (kanan) dalam bentuk matrix. 0 2 3 0 0 0

0 2 3 0 0 0 1 1 0 0 0 0 6 6 0 4 5 0 0 0 0 4 5 0 7 7 0 4 5 0 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


(44)

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 state state akhir.


(45)

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

0 0 4 2 5 0

1 1 4 6 5 0

7 7 0 6 8 0

9 10 10 10 8 0 9 11 11 11 0 0

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 bentuk matrix agar terlihat pergerakan balok pada saat game dimainkan.


(46)

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. Untuk tahapan lebih jelasnya dapat dilihat dari alur flowchat sebagai berikut :


(47)

(48)

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.


(49)

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 atau acak (tanpa menggunakan random).


(50)

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 seperti gambar 3.17.


(51)

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


(52)

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 pada diagram use case. Definisi use case dijelaskan pada tabel 3.3.


(53)

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

1. Menggeser balok permainan 2. Menginisialisasi Papan

Permainan

3. Melakukan Backtracking 4. Melakukan Cek Balok 5. Menemukansolusi 6. Menampilkan sukses


(54)

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


(55)

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 antar objek. Sequencediagram dapat dilihat pada gambar berikut.


(56)

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 dikirim antar objek pada proses dimana notifikasi akan ditampilkan.


(57)

User

1 : Tekan Mouse

Menu

2 : CloseForm()


(58)

3.4.3.5Class Diagram

Class diagram merupakan gambaran sistem berupa relasi antar kelas-kelas ataupun paket-paketnya. Classdiagram dijelaskan melalui gambar berikut.

sistem LoadGame +load() +closeForm() +Timer1_Tick() Lvl #WaitHandle #moveBalok #finish #init #blk1 #blk2 #blk3 #blk4 #blk5 #blkUser #stat1 #stat2 +enableButton() +disableButton() +generateSolution() +CetakMatrix() LoadSolution +LoadSolution() +setCaption() +setDescription() +processComand() Level1 -initialComponent() Level2 -initialComponent() Level3 +initialComponent()

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 memainkan game. Berikut perancangan antarmuka permainan :


(59)

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

Gambar 3.25 Pesan ketika permaianan terselesaikan


(60)

3.4.3.7Jaringan Semantik

Untuk mengetahui keterhubungan dari setiap tampilan yang dibuat dapat menggunakan jaringan semantik.


(61)

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


(62)

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


(63)

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 pemain.


(64)

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


(65)

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 pencarian yang berbeda.


(66)

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 secara lebih terperinci.


(67)

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 pada level tersebut. Berikut ini adalah hasil dari tampilan matrix saat digenerate :


(68)

0 0 0 3 0 0 0 0 2 3 0 9 1 1 2 3 0 9 0 0 0 0 0 8 0 4 6 6 0 8 0 4 5 5 7 7

---simpul utama --- 0 0 0 3 0 9

0 0 2 3 0 9 1 1 2 3 0 0 0 0 0 0 0 8 0 4 6 6 0 8 0 4 5 5 7 7

---simpul utama --- 0 0 0 3 0 9

0 0 2 3 0 9 1 1 2 3 0 8 0 0 0 0 0 8 0 4 6 6 0 0 0 4 5 5 7 7

---simpul utama --- 0 0 0 3 0 9

0 0 2 3 0 9 1 1 2 3 0 8 0 0 0 0 0 8 0 4 0 0 6 6 0 4 5 5 7 7

---simpul utama --- 0 0 0 3 0 9

0 0 2 3 0 9 1 1 2 3 0 8 0 0 0 0 0 8 0 4 0 6 6 0 0 4 5 5 7 7

---simpul utama --- 0 0 0 3 0 9

0 0 2 3 0 9 1 1 2 3 0 0 0 0 0 0 0 8 0 4 0 6 6 8 0 4 5 5 7 7

---simpul utama --- 0 0 0 3 0 0

0 0 2 3 0 9 1 1 2 3 0 9 0 0 0 0 0 8 0 4 0 6 6 8 0 4 5 5 7 7

---simpul utama --- 0 0 0 3 0 0

0 0 2 3 0 9 1 1 2 3 0 9 0 4 0 0 0 8 0 4 0 6 6 8 0 0 5 5 7 7

0 4 2 3 0 9 0 4 2 3 0 9 1 1 0 3 0 8 0 0 0 0 0 8 6 6 0 0 0 0 0 0 5 0 7 7

---simpul utama --- 0 4 2 3 0 9

0 4 2 3 0 9 1 1 0 3 0 8 0 0 0 0 0 8 6 6 0 0 0 0 0 0 5 7 7 0

---simpul utama --- 0 4 2 3 0 9

0 4 2 3 0 9 1 1 0 3 0 8 0 0 0 0 0 8 0 0 0 0 6 6 0 0 5 7 7 0

---simpul utama --- 0 4 2 3 0 9

0 4 2 3 0 9 1 1 0 3 0 8 0 0 0 0 0 8 0 0 0 0 6 6 0 0 5 0 7 7

---simpul utama --- 0 4 2 3 0 9

0 4 2 3 0 9 1 1 0 3 0 8 0 0 0 0 0 8 0 6 6 0 0 0 0 0 5 0 7 7

---simpul utama --- 0 4 2 0 0 9

0 4 2 0 0 9 1 1 0 0 0 8 0 0 0 3 0 8 0 6 6 3 0 0 0 0 5 3 7 7

---simpul utama --- 0 4 2 0 0 9

0 4 2 0 0 9 1 1 0 0 0 0 0 0 0 3 0 8 0 6 6 3 0 8 0 0 5 3 7 7

---simpul utama --- 0 4 2 0 0 9

0 4 2 0 0 9 0 0 0 0 1 1 0 0 0 3 0 8 0 6 6 3 0 8 0 0 5 3 7 7


(69)

- 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 memperoleh ukuran kompleksitas logis dari sebuah perancangan prosedral dan


(70)

dasar dari alur eksekusi.

Pengujian white box akan digunakan pada algoritma backtracking untuk mengetahui kinerja logika berdasarkan flowchart yang telah dibuat pada tahap analisis. Pengujian white box meliputi beberapa tahap, yaitu :

1. Pengujian Algoritma Backtracking Pada Game Unblock Me.

Pada pengujian ini, algoritma backtracking akan diuji dalam pembangkitan soal pada game Unblock Me. Berikut merupakan pengujian algoritma backtracking pada pembangkit soal dengan menggunakan white box.

Mengubah source code menjadi flowchart, kemudian diubah kedalam flowgraph. Berikut source code algoritma backtracking dalam generate solution permainan :

Tabel 4.3 Source code algoritma backtracking pada generate solution

1 2 3 4 5 6 7

#region inisialisasi matrix

for (int a = 0; a <= 5; a++) {

for (int b = 0; b <= 5; b++) {

matrix[a, b] = 0;

}

#endregion

antrian.Add(matrix);

front = antrian[antrian.Count - 1];

for (int var = 0; var < kunjung.Count; var++)

//cetak front

for (int a = 0; a <= 5; a++) {

for (int b = 0; b <= 5; b++) {

Console.Write(front[a, b] + " ");

// Console.Write(antrian[init][a, b] + " ");

}

Console.WriteLine(); }

Console.WriteLine("---simpul utama ---");

#region move balok auto mode if (finish == true)

{


(71)

8

9

balokUser.Left = 389; blkUser = "GOAL";

bgGoal.BackColor = Color.Firebrick;

labelControl1.BackColor = Color.Firebrick;

MessageBox.Show("selesai"); // return true; }

// jika tidak else{

//catat simpul yang sedang d kunjungi

kunjung.Add(front);

string[,] step = new string[25, 2]; int i = 0; int j = 0; // balok user #region balok user

}

#endregion

// end pencarian langkah

for (int val = 0; val <= (i - 1); val++) {

int[,] matrik = new int[6, 6]; for (int bts = 0; bts <= 5; bts++) {

for (int bts2 = 0; bts2 <= 5; bts2++) {

matrik[bts, bts2] = front[bts, bts2]; }

}

if (step[val, 0].Substring(0, 1) == "1") {

#region balok user

if (step[val, 1] == "2,0-2,1") {

for (int x = 0; x < 6; x++) {

if (x == 0 || x == 1) {

matrik[2, x] = 1; }

else {

if (matrik[2, x] == 1)


(72)

1

3

5 6

4 2

8

7

9


(73)

1,2

3

4

5 6

7

8 9

Gambar 4.10 Flowchart menjadi flowgraph

Cyclomatic complexity

Dari diagram alir pada gambar 4.3 dapat dihitung cyclomatic complexity, yakni : V(G) = 9 busur - 8 simpul + 2

V(G) = 3 Predicate node

V(G) = Jumlah node yang memiliki lebih dari 1 lajur + 1 V(G) = 2 predicate node + 1

V(G) = 3


(74)

2

3

4 5

6

7 8

Gambar 4.11 Penomoran ulang flowgraph Graph matrix, dapat dilihat pada tabel 4.4.

Tabel 4.4Graph matrix

Node 1 2 3 4 5 6 7 8 9 10 11 12 13 Perhitungan

1 1 0

2 1 0

3 1 1 1

4 1 0

5 1 0

6 1 1 1

7 0

8 1 0

Jumlah (x) 2

V(G) = x + 1 V(G) = 2 + 1 V(G) = 3


(75)

Pengujian black box adalah pengujian yang mengatakan benar bila input yang diberikan akan menghasilkan output yang sesuai dengan spesifikasi program tanpa memperhatikan struktur logika dalam program . Kasus dan hasil uji aplikasi yang sudah dibangun dengan menggunakan metode black box berdasarkan pengamatan yang dilakukan dan menghasilkan kesimpulan dari pengujian tersebut. Kasus dan hasil pengujian dapat dilihat pada tabel.

4.6.2.1 Rencana Pengujian

Rencana pengujian yang akan dilakukan pada aplikasi ini dapat dilihat pada tabel 4.5.

Tabel 4.5 Rencana Pengujian

Komponen yang diuji Skenario pengujian Jenis pengujian

Menu Utama

Memilih kotak Black box Menggeser kotak Black box Menekan tombol solve /

Generate Black box

4.6.2.2Kasus Dan Hasil Pengujian (BlackBox)

Kasus dan hasil uji aplikasi yang sudah dibangun dengan menggunakan metode black box berdasarkan pengamatan yang dilakukan dan menghasilkan kesimpulan dari pengujian tersebut. Kasus dan hasil pengujian dapat dilihat pada tabel 4.6


(76)

4.7 Kesimpulan

Dari hasil pengujian dapat disimpulkan bahwa algoritma backtracking dapat berfungsi dalam generate solution pada game Unblock Me. Pada generate solution, algoritma backtracking dapat bekerja dengan baik dalam mengenerate solution permainan pada game Unblockme ini. Jawaban Penyelesaian yang dihasilkan menggunakan algoritma backtracking disesuaikan dengan syarat permainan Unblock me yaitu balok hanya bisa digeser secara horizontal atau vertical sesuai posisi balok dan sesuai dengan inisialisasi balok di setiap levelnya.

Kasus yang Diuji

Skenario pengujian

Hasil yang diharapkan Kesimpulan

Menu Utama

Memilih kotak

Pointer dapat menunjuk kotak yang dipilih. [√] Berhasil [ ] Tidak Menggeser

Kotak

Sistem dapat menggeser kotak secara horizontal atau vertical.

[√] Berhasil [ ] Tidak Menekan

tombol solve

Sistem memberikan jawaban penyelesaian untuk menggeser balok-balok sehingga balok user ada pada posisi goal.

[√] Berhasil [ ] Tidak


(77)

69

5.1 Kesimpulan

Berdasarkan dari penelitian, analisis, perancangan sistem, pembuatan program hingga tahap penyelesaian program pada game Unblockme, dapat ditarik kesimpulan sebagai berikut :.

1. Algoritma backtracking dapat diimplementasikan dalam penyelesaiyan Game Unblockme.

2. Pada penyelesaian game Unblockme ini ,pencarian rute terpendek atau solusi tercepat tidak sesuai dengan aturan atau prinsip Algoritma backtracking tersebut, karena prinsip kerja algoritma backtracking menelusuri semua nede atau kemungkinan yang sesuai dengan jalurnya hingga didapatkan hasil akhir.

5.2 Saran

Permainan Unblockme ini masih dapat dikembangkan lebih lanjut dengan perkembangan spesifikasi kebutuhan pengguna sistem dalam mencapai tahap yang lebih tinggi untuk mendapatkan kinerja sistem yang lebih baik. Berdasarkan hasil dari keseluruhan simulasi, maka dapat diberikan saran-saran adalah Algoritma Backtracking bisa dikombinasikan dengan algoritma lain untuk mencari solusi yang lebih optimal.


(78)

Nama lengkap : Teguh Pribadhi

Tempat tanggal lahir : Manggar ,12 Maret 1992

Agama : Islam

Alamat : Jl Tengah Ds.Padang No 248. No telpon : 085224060466

Email : pribadhi.teguh@yahoo.com

2. Riwayat Pendidikan

1. Tahun 1997 – 2000 : SD Negeri 21, Manggar. 2. Tahun 2000 – 2003 : SD Negeri 13, Manggar 3. Tahun 2003 – 2006 : SMP Negeri 2, Manggar. 4. Tahun 2006 – 2009 : SMKN 1 ,Manggar.

5. Tahun 2009 – 2015 : Universitas Komputer Indonesia

Program Studi S1 Jurusan Teknik Informatika Fakultas Teknik dan Ilmu Komputer


(79)

(80)

(81)

(1)

67

Tabel 4.6 Kasus dan hasil pengujian

4.7 Kesimpulan

Dari hasil pengujian dapat disimpulkan bahwa algoritma backtracking dapat berfungsi dalam generate solution pada game Unblock Me. Pada generate solution, algoritma backtracking dapat bekerja dengan baik dalam mengenerate solution permainan pada game Unblockme ini. Jawaban Penyelesaian yang dihasilkan menggunakan algoritma backtracking disesuaikan dengan syarat permainan Unblock me yaitu balok hanya bisa digeser secara horizontal atau vertical sesuai posisi balok dan sesuai dengan inisialisasi balok di setiap levelnya.

Kasus yang Diuji

Skenario pengujian

Hasil yang diharapkan Kesimpulan

Menu Utama

Memilih kotak

Pointer dapat menunjuk kotak yang dipilih. [√] Berhasil [ ] Tidak

Menggeser Kotak

Sistem dapat menggeser kotak secara horizontal atau vertical.

[√] Berhasil [ ] Tidak

Menekan tombol

solve

Sistem memberikan jawaban penyelesaian untuk menggeser balok-balok sehingga balok user ada pada posisi goal.

[√] Berhasil [ ] Tidak


(2)

69 BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Berdasarkan dari penelitian, analisis, perancangan sistem, pembuatan program hingga tahap penyelesaian program pada game Unblockme, dapat ditarik kesimpulan sebagai berikut :.

1. Algoritma backtracking dapat diimplementasikan dalam penyelesaiyan Game Unblockme.

2. Pada penyelesaian game Unblockme ini ,pencarian rute terpendek atau solusi tercepat tidak sesuai dengan aturan atau prinsip Algoritma backtracking

tersebut, karena prinsip kerja algoritma backtracking menelusuri semua nede atau kemungkinan yang sesuai dengan jalurnya hingga didapatkan hasil akhir. 5.2 Saran

Permainan Unblockme ini masih dapat dikembangkan lebih lanjut dengan perkembangan spesifikasi kebutuhan pengguna sistem dalam mencapai tahap yang lebih tinggi untuk mendapatkan kinerja sistem yang lebih baik. Berdasarkan hasil dari keseluruhan simulasi, maka dapat diberikan saran-saran adalah Algoritma Backtracking bisa dikombinasikan dengan algoritma lain untuk mencari solusi yang lebih optimal.


(3)

BIODATA PENULIS (RIWAYAT HIDUP)

1. Data Pribadi

Nama lengkap : Teguh Pribadhi

Tempat tanggal lahir : Manggar ,12 Maret 1992

Agama : Islam

Alamat : Jl Tengah Ds.Padang No 248.

No telpon : 085224060466

Email : pribadhi.teguh@yahoo.com

2. Riwayat Pendidikan

1. Tahun 1997 – 2000 : SD Negeri 21, Manggar. 2. Tahun 2000 – 2003 : SD Negeri 13, Manggar 3. Tahun 2003 – 2006 : SMP Negeri 2, Manggar. 4. Tahun 2006 – 2009 : SMKN 1 ,Manggar.

5. Tahun 2009 – 2015 : Universitas Komputer Indonesia

Program Studi S1 Jurusan Teknik Informatika Fakultas Teknik dan Ilmu Komputer


(4)

(5)

(6)