• Tidak ada hasil yang ditemukan

Implementasi Algoritma Backtracking Pada Game Unblokme

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Algoritma Backtracking Pada Game Unblokme"

Copied!
81
0
0

Teks penuh

(1)

SKRIPSI

Diajukan untuk Menempuh Ujian Akhir Sarjana

TEGUH PRIBADHI

10109447

PROGRAM STUDI TEKNIK INFORMATIKA

FAKULTAS TEKNIK DAN ILMU KOMPUTER

(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

(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

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

(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.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),

(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

(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

(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

(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

(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

(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

(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

(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

(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

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

(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

(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

(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

(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,

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

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

(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

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

(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

(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

(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

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

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)

(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

(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

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

(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 :

(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 :

(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:

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.

(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

(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

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

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

(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

(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

(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

(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

(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

(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

(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

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

(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

(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

(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

(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

(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

(68)

0 0 0 3 0 0

(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

Gambar

Gambar 2.9 Contoh activity diagram
Gambar 2.10 Contoh statechart diagram
Gambar 2.11 Contoh squence diagram
Gambar 2.10  Logo Extensi Bahasa C# pada Visual Studio.
+7

Referensi

Dokumen terkait

Dalam reflecting on teaching ini, guru juga memperhatikan semua hal di sekitarnya, komponen apa yang tidak bermanfaat untuk peningkatan kemampuan siswa.. Lebih

Enny Zuhni Khayati, M.Kes.. HARI TANGGAL JAM KE- KODE MATAKULIAH NAMA MATAKULIAH DOSEN PENGAMPU PRODI SEM RUANG.. UJIAN

Tujuan penelitian berisi pernyataan mengenai tujuan dari dilakukannya penelitian, yaitu penerapan strategi yang digunakan dalam mempromosikan Perpustakaan Universitas

TUGAS : Membantu Bupati dalam melaksanakan kebijakan teknis urusan pemerintahan di bidang Penanaman Modal dan PTSP.

bahwa guna melaksanakan Instruksi Gubernur Kalimantan Tengah Nomor 188.54/03/2011 tentang Jam Kerja Pegawai Negeri Sipil Di Lingkungan Pemerintah Kabupaten/Kota

Instrumen yang digunakan dalam penelitian ini adalah Pittsburgh Sleep Quality Index (PSQI) dengan nilai cronbach’s alpha 0,707, yang dikembangkan oleh Buysse,

Berkaitan dengan pembangunan sumber daya manusia di Kota Bandar. Lampung, Kecamatan Panjang merupakan daerah yang memiliki

Pengaturan desa tentang pembangunan jalan rabat beton di Desa Gumpang Lempuh Kecamatan Putri Betung Kabupaten Gayo Lues Provinsi Aceh sesuai dengan Pasal 1