SKRIPSI
Diajukan untuk Menempuh Ujian Akhir Sarjana
HERDI PRAYOGA
10109422
PROGRAM STUDI TEKNIK INFORMATIKA
FAKULTAS TEKNIK DAN ILMU KOMPUTER
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 ... 9
2.1 Puzzle Kakuro ... 9
2.1.1 Definisi Puzzle Kakuro ... 9
vi
2.2.2 Sejarah Algoritma ... 13
2.3 Algoritma backtracking ... 13
2.3.1 Prinsip Algoritma Backtracking ... 14
2.3.2 Kegunaan Backtracking ... 16
2.4 Kecerdasan Buatan... 17
2.5 Unified Modeling Language (UML) ... 19
2.5.1 Diagram Unified Modeling Language (UML) ... 20
2.6 Java.... . ... 24
2.7 Greenfoot ... 26
BAB 3 ANALISIS DAN PERANCANGAN SISTEM ... 27
3.1 Analisis Masalah ... 27
3.2 Analisis Game ... 28
3.3 Analisis Masukan ... 31
3.4 Analisis Algoritma ... 32
3.4.1 Analisis Algoritma Backtracking Pembangkit Nilai Soal ... 35
3.4.2 Analisis Algoritma Backtracking Penyelesaian Jawaban ... 39
3.4.1.1 Penyelesaian Jawaban Pada Kotak Kosong ... 39
3.4.1.2 Penyelesaian Jawaban Pada Kotak Terisi Nilai ... 44
3.5 Analisis Kebutuhan Perangkat Lunak ... 46
3.5.1 Analisis Kebutuhan Perangkat Keras ... 47
vii
3.5.3.2 Use Case Scenario ... 48
3.5.3.3 Activity Diagram ... 49
3.5.3.4 Squence Diagram ... 51
3.5.3.5 Class Diagram ... 53
3.5.3.6 Perancangan Antarmuka ... 53
3.5.3.7 Jaringan Semantik ... 55
BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM ... 57
4.1 Implementasi ... 57
4.1.1 Implementasi Perangkat Keras ... 57
4.1.2 Implementasi Perangkat Lunak ... 57
4.1.3 Implementasi Antarmuka ... 58
4.2 Pengujian Sistem ... 59
4.2.1 Pengujian White Box ... 60
4.2.1.1 Pengujian Algoritma Backtracking Pada Game Puzzle Kakuro ... 60
4.2.2 Pengujian Black Box ... 64
4.2.2.1 Rencana Pengujian ... 64
4.2.2.2 Kasus Dan Hasil Pengujian (Black Box) ... 64
4.3 Kesimpulan ... 65
BAB 5 KESIMPULAN DAN SARAN ... 67
5.1 Kesimpulan ... 67
69
[1] D. N. Putra, O. O. Sardjito and C. Lawrence, "Penerapan Dan Implementasi
Algoritma," 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] E. Talbot's, "Enter the Kakuro Puzzles," [Online]. Available:
http://www.articlesphere.com/Article/Enter-the-Kakuro-Puzzles/32877.
[Accessed 22 July 2014].
[5] D. Berthier, "Pattern-Based Constraint Satisfaction And Logic Puzzles,"
Teknik Informatika, 2012.
[6] "Kakuro," [Online]. Available: http://en.wikipedia.org/wiki/Kakuro.
[Accessed 22 July 2014].
[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.
[11] Suarga, Dasar Pemrograman Komputer Dalam Bahasa Java, Andi, 2009.
Nama lengkap : Herdi Prayoga
Tempat tanggal lahir : Cirebon, 19 Juli 1991
Agama : Islam
Alamat : Jl. Kesunean Tengah, No.41, RT.05/RW.08,
Kel. Kesepuhan, Kec. Lemahwungkuk, Cirebon.
No telpon : 085224060466
Email : [email protected]
2. Riwayat Pendidikan
1. Tahun 1997 – 2003 : SD Negeri 1 Tirtawinaya, Cirebon.
2. Tahun 2003 – 2006 : SMP Negeri 6, Cirebon.
3. Tahun 2006 – 2009 : SMK Muhammadiyah, Cirebon.
4. Tahun 2009 – 2014 : Universitas Komputer Indonesia
Program Studi S1 Jurusan Teknik Informatika
Fakultas Teknik dan Ilmu Komputer
1 1.1 Latar Belakang Masalah
Kakuro adalah permainan puzzle yang bersifat logika dan biasa disebut
sebagai transliterasi matematis dari puzzle silang. Permainan puzzle kakuro
merupakan inovasi dari permainan puzzle dengan menerapkan unsur matematika
dan logika. Permainan ini adalah permainan penjumlahan angka dengan aturan
mainnya yaitu dengan mengisi setiap kotak yang tersedia (kotak jawaban) dengan
angka bulat dari 1 hingga 9 dengan beberapa syarat dalam pengisiannya. Soal-soal
dalam permainan puzzle kakuro bersifat unik, karena soal-soal ini akan saling
terkait baik dengan soal lainnya maupun jawaban dalam menyelesaikan
permainan puzzle kakuro [5]. Untuk menyelesaikan permainan puzzle kakuro ini,
jumlah pada nilai jawaban harus bernilai sama dengan nilai soal dan tidak boleh
terdapat dua angka yang sama pada satu lajur (kolom maupun baris).
Oleh karena itu dibutuhkan teknik untuk membangkitkan soal yang
bersifat unik dengan sistem random yang akan menghasilkan soal yang akan
saling terkait dari soal satu dengan soal lainnya dan mencari solusi dalam
menyelesaikan jawaban pada permainan puzzle kakuro dengan beberapa syarat
didalamnya. Algoritma backtracking dapat menjadi pilihan dalam menyelesaikan
permasalahan pada puzzle kakuro karena pada dasarnya algoritma ini berfungsi
untuk mencari segala kemungkinan solusi dengan menerapkan ruang keadaan
dalam bentuk pohon solusi hingga menghasilkan solusi yang layak. Secara umum
algoritma backtracking dapat berfungsi dengan baik untuk memecahkan
masalah-masalah yang berkembang secara dinamis (dynamic problem solving) sehingga
menjadi dasar algoritma untuk kecerdasan buatan (artificial intelligence) [1].
Pencarian solusi pada algoritma backtracking dilakukan dengan menelusuri
simpul-simpul di dalam pohon dengan teknik Depth-First Search (DFS).
Algoritma backtracking adalah algoritma yang berbasiskan Depth-First
backtracking berprinsip pada metode rekursif. Untuk menyelesaikan keseluruhan
masalah, dibutuhkan sebuah solusi untuk permasalahan pertama kemudian
permasalahan-permasalahan lainnya akan dicoba untuk diselesaikan secara
rekursif berdasarkan solusi pertama. Apabila pada kemungkinan solusi yang dicari
tidak ditemukan, maka dilakukan backtrack untuk menguji kemungkinan solusi
selanjutnya. Proses backtrack akan selesai ketika tidak ada lagi solusi yang
mungkin untuk diselesaikan pada permasalahan awal. Pada algoritma baktracking
tidak perlu mencari kemungkinan-kemungkinan solusi yang ada sehingga
kemungkinan-kemungkinan solusi yang ada akan dipangkas (pruning) [2].
Oleh karena itu, algoritma backtracking akan diterapkan pada permainan puzzle
kakuro dengan permasalahannya dan mengambil pokok bahasan skripsi
bagaimana menerapkan algoritma tersebut pada perangkat lunak game dengan judul “IMPLEMENTASI ALGORITMA BACKTRACKING PADA GAME PUZZLE KAKURO”.
1.2 Rumusan Masalah
Berdasarkan uraian pada latar belakang masalah diatas, didapatkan
perumusan masalahnya adalah bagaimana mengimplementasikan algoritma
backtracking pada game puzzle kakuro.
1.3 Maksud Dan Tujuan
Berdasarkan permasalahan yang diteliti, maka maksud dari penulisan tugas
akhir ini adalah untuk mengimplementasikan algoritma backtracking pada game
puzzle kakuro. Adapun tujuannya adalah sebagai berikut :
1. Membangkitkan nilai soal pada permainan dengan sistem random
menggunakan algoritma backtracking.
2. Mendapatkan solusi penyelesaian dalam menemukan jawaban pada
1.4 Batasan Masalah
Batasan masalah dalam pembangunan game ini adalah sebagai berikut :
1. Game berbasis desktop.
2. Game dibangun dengan desain 2D.
3. Game bersifat offline.
4. Game bergenre puzzle game.
5. Aplikasi yang dibangun dibatasi hanya untuk puzzle kakuro berukuran grid
(9x9).
6. Algoritma yang digunakan untuk membangkitkan nilai soal dengan sistem
random serta pencarian solusi jawaban pada permainana puzzle kakuro adalah
menggunakan algoritma backtracking.
7. Data masukan untuk mengisi jawaban pada game puzzle kakuro diisi dengan
angka bilangan bulat dari 1 hingga 9.
8. Kotak jawaban dibatasi hanya menampilkan 2 hingga 3 kotak jawaban dalam
satu lajur (baris maupun kolom) pada game puzzle kakuro.
9. Metode analisis perancangan yang digunakan adalah analisis perancangan
dan pengembangan perangkat lunak berorientasi objek, dengan menggunakan
pemodelan Unified Modeling Language (UML).
10. Aplikasi yang digunakan untuk membangun game ini adalah :
a. Aplikasi yang digunakan untuk membangun game adalah greenfoot.
b. Bahasa pemograman yang digunakan adalah java.
1.5 Metode Penelitian
Metodologi penelitian yang digunakan adalah metodeologi analisis
kualitatif. Analisis kualitatif adalah metode analisis yang meliputi observasi,
dokumentasi, serta mendapatkan pemahaman yang mendalam tentang
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.
1.5.2 Metode Pembangunan Perangkat Lunak
Metode pembangunan perangkat lunak yang digunakan p a d a k a s u 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
pengkodean selesai maka akan dilakukan testing terhadap sistem yang telah
dibuat. Tujuan testing adalah menemukan kesalahan-kesalahan terhadap
sistem tersebut dan kemudian diperbaiki.
4. Integration and System Testing.
Tahap integration and system testing merupakan tahap dimana sistem yang
baru diuji kemampuan dan keefektifannya sehingga didapatkan kekurangan
dan kelemahan sistem yang kemudian dilakukan pengkajian ulang dan
perbaikan terhadap aplikasi menjadi lebih baik dan sempurna.
5. Operationand Maintenance.
Tahap operationand maintenance merupakan tahap dimana penerapan dan
pemeliharaan program secara normal tidak selalu diperlukan, tahap ini
merupakan bagian siklus panjang. Sistem telah terpasang dan sedang dalam
penggunaan. Pemeliharaan mencakup perbaikan kesalahan yang tidak
ditemukan dalam tahap-tahap sebelumnya. Meningkatkan implementasi
unit-unit sistem dapat mempertinggi pelayanan sistem yang disebabkan oleh
kebutuhan baru.
1.6 Sistematika Penulisan
Sistematika penulisan laporan akhir penelitian ini disusun untuk
memberikan gambaran umum tentang penelitian yang dijalankan. Sistematika
penulisan tugas akhir ini adalah sebagai berikut :
BAB I PENDAHULUAN
Bab ini berisi penjelasan latar belakang permasalahan pada puzzle kakuro dengan
menerapkan algoritma backtracking untuk membangkitkan soal permainan
dengan sistem random serta mendapatkan solusi penyelesaian jawaban pada permainan puzzle kakuro. Perumusan masalah yang didapat, dapat menjadi acuan
untuk menghasilkan maksud dan tujuan pada game puzzle kakuro. Dikuti dengan
metodologi penelitian serta sistematika penulisan untuk menggambarkan struktur
penulisan yang lebih baik.
BAB II LANDASAN TEORI
Membahas berbagai konsep dasar dan teori-teori yang berkaitan dengan topik
penelitian yang dilakukan dan hal-hal yang berguna dalam proses analisis
permasalahan.
BAB III ANALISIS DAN PERANCANGAN SISTEM
Menganalisis masalah dari model penelitian, menggambarkan identifikasi
masalah, menerapkan kedalam contoh kasus, hardware, software, diagram
pembuatan sistem dan UML (Unified Modeling Language).
BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM
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 puzzle kakuro menggunakan algoritma
BAB V KESIMPULAN DAN SARAN
Bab ini berisi kesimpulan yang sudah diperoleh dari hasil yang di dapat pada
implementasi algoritma backtracking pada game puzzle kakuro meliputi
kecerdasan buatan atau artificial intellegence (AI), desain, dan tools-tools yang
dikembangkan serta saran yang ditambahkan dalam implementasi algoritma
9 2.1 Puzzle Kakuro
Kakuro adalah sebuah permainan puzzle yang bermula bernama cross
sums. Puzzle, pertama dikeluarkan pada tahun 1966 oleh Dell Megazine di
Amerika Serikat. Sepuluh tahun kemudian, Dell Megazine memperkenalkan
puzzle sudoku pada dunia. Maki Kaji presiden dari Nicoli Puzzle, pada tahun 1980
membawa masuk cross games ke Jepang. Maki Kaji memberi nama puzzle
buatannya adalah kasan kurosu (penjumlahan silang). Pada tahun 1986, Nicoli
memberi nama dagang game dengan nama kakuro (kependekan dari kasan
kurosu). September 2005 adalah titik penentunya, dimana game puzzle kakuro
diperkenalkan ke barat oleh The Guardian dan The Daily Mail yang menerbitkan
puzzle kakuro setiap harinya di Inggris dan setelah itu game puzzle kakuro ini
menyebar keseluruh dunia [4].
2.1.1 Definisi Puzzle Kakuro
Puzzle kakuro adalah permainan puzzle dengan ukuran grid N x M dengan
mempunyai dua jenis kotak yaitu kotak berwarna hitam dan kotak berwarna putih.
Pada kedua jenis kotak tersebut mempunyai dua posisi yaitu horizontal dan
vertikal. Kotak berwarna hitam digunakan sebagai tanda pembatas dan soal untuk
menyelesaikan permainan puzzle kakuro, sedangkan kotak berwarna putih
digunakan sebagai kotak pengisian jawaban. Pada baris paling atas dan kolom
paling kiri pada grid puzzle kakuro, hanya berisi kotak berwarna hitam (dapat
berfungsi sebagai pembatas atau soal). Aturan dalam pengisisan puzzle kakuro ini
adalah dengan mengisi angka bilangan bulat dari 1 hingga 9 dengan tidak boleh
terdapat angka yang sama pada satu lajur (baris maupun kolom). Nilai angka yang
terdapat pada kotak pengisian jawaban yang sudah dijumlahkan harus bernilai
sama dengan nilai angka pada kotak soal disetiap lajurnya [5]. Gambar 2.1 adalah
Gambar 2.1 Contoh soal dan solusi penyelesaiannya
2.1.2 Aturan Permainan Puzzle Kakuro
Puzzle kakuro adalah adalah sebuah permainan puzzle yang bersifat puzzle
logika. Puzzle ini biasa disebut transliterasi matematis dari puzzle silang. Aturan
dalam permainan puzzle kakuro ini adalah dengan mengisi setiap setiap kotak
yang tersedia dengan angka bulat dari 1 hingga 9 dengan beberapa syarat dalam
pengisiannya. Adapun syarat-syarat dalam pengisian kotak jawaban adalah
sebagai berikut [5]:
1. Setiap kotak jawaban hanya boleh diisikan dengan bilangan bulat dari angka
1 hingga 9.
2. Setiap kotak jawaban yang berurutan dalam satu lajur (lajur yang dimaksud
adalah deretan kotak yang berurtutan dalam satu baris atau kolom) tidak
boleh memiliki angka yang sama.
3. Isi dari setiap lajur harus memiliki jumlah yang sama pada ujung kiri (baris)
Gambar 2.2 Cara pengisisan dengan jumlah jawaban sesuai dengan soal
Pengisian kotak jawaban seperti pada gambar gambar 2.3merupakan contoh yang
salah karena terdapat dua angka atau lebih pada satu lajur.
Gambar 2.3 Nilai sama pada lajur
Sedangkan pada gambar 2.4 merupakan pengisian kotak jawaban yang benar
karena terdapat pada lajur yang berbeda walaupun dalam kotak yang sama.
2.2 Algoritma
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, 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.
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
2.2.2 Sejarah Algortima
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 Pengurangan” (The Book of
Restoration And Reducation). Perubahan kata dari algorism 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.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
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. Dalam penerapannya, algoritma
backtracking mempunyai properti umum didalmnya yang harus dibutuhkan :
1. Solusi Persoalan.
Solusi dinyatakan sebagai vektor dengan n-tuple :
X = ( ),
Mungkin saja = … =
Contoh = {0,1}, = 0 atau 1
2. Fungsi Pembangkit nilai .
Dinyatakan sebagai predikat : T(k)
T(k)membangkitkan nilai untuk yang merupakan komponen vektor solusi.
3. Fungsi Pembatas.
Dinyatakan sebagai : B ( ) mengarah ke solusi.
Jika true, maka pembangkit nilai untuk dilanjutan, dan jika false maka
( ) akan dibuang dan tidak dapat dipertimbangkan kembali dalam
pencarian solusi. Penjelasan lain dapat dilihat melalui gambar berikut :
Gambar 2.1 Tree pencarian solusi
Solusi persoalan adalah kemungkinan solusi yang didapatkan dari permasalahan
yang diberikan, sedangkan fungsi pembatas merupakan fungsi yang akan
menentukan langkah selanjutnya berupa penerusan pencarian solusi ataupun
2.3.1 Prinsip Algoritma 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.
Gambar 2.6 Contoh pohon ruang status algoritma backtracking
Salah satu fungsi yang menjadi ciri khas algoritma backtracking adalah
fungsi pemangkasan (pruning). Jika tahap-tahap pencarian solusi suatu masalah
dilakukan terhadap simpul-simpul yang tidak mengarah kesolusi. Jika suatu
simpul telah dipangkas, simpul-simpul yang menjadi anak dan turunan dari
simpul tersebut secara langsung tidak akan diproses, karena pemangkasan sebuah
simpul seperti membuang seluruh lintasan yang berada dibawah simpul tersebut.
A
Gambar 2.7 Proses pemangkasan pada ruang status (pruning)
Berdasarkan gambar 2.7, simpul yang dipangkas adalah simpul D dan F. Akibat
pemangkasan tersebut, simpul K yang merupakan anak simpul D serta simpul L
dan M yang merupakan anak simpul F tidak akan diproses [2].
2.3.2 Kegunaan Backtracking
Penggunaan terbesar backtrack adalah untuk membuat artificial
intellegence (AI) pada puzzle games. Dengan algoritma ini, program dapat
menghasilkan pohon sampai dengan kedalaman tertentu dari current status dan
memilih solusi yang akan membuat langkah-langkah pemain dalam melakukan
tindakan untuk menghasilkan 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 [1]. N-Queen problem adalah bagaimana cara meletakan bidak queen catur
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.
Gambar 2.9 Contoh maze solver
2.4 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
(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]:
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
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.
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.
2.5 Unified 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
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.
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.10 Logo Unified Modeling Language (UML)
2.5.1 Diagram Unified Modeling Language (UML)
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
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.
Diagram kelas dibuat agar pembuat program atau programmer membuat
kelas-kelas sesuai rancangan di dalam diagram kelas agar antara
dokumentasi perancangan dan perangkat lunak menjadi sinkron. Berikut
adalah contoh dari diagram kelas.
Gambar 2.11 Contoh class diagram
2. Diagram Use Case
Diagram use case merupakan pemodelan untuk kelakuan (behaviour) sistem
informasi yang akan dibuat. 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
b. Use case merupakan fungsionalitas yang disediakan sistem sebagai
unit-unit yang saling bertukar pesan antar unit-unit atau aktor.
Gambar 2.12 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.
c. Rancangan pengujian dimana setiap aktivitas dianggap memerlukan
d. Rancangan menu yang ditampilkan pada perangkat lunak.
Gambar 2.13 Contoh activity diagram
4. Diagram State Machine (Statechart Diagram)
State machine diagram atau statechart diagram atau dalam bahasa Indonesia
disebut diagram mesin status atau sering juga disebut diagram status
digunakan untuk menggambarkan perubahan status atau transisi status dari
sebuah mesin atau sistem atau objek. Jika diagram sekuen digunakan untuk
interaksi antar objek maka diagram status digunakan untuk interaksi di dalam
sebuah objek. Perubahan tersebut digambarkan dalam suatu graf berarah.
Gambar 2.14 Contoh state chart 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
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.
Gambar 2.15 Contoh squence diagram
2.6 Java
Java adalah salah satu bahasa pemrograman komputer yang berorientasi
objek, yang diciptakan oleh satu tim dari perusahaan Sun Microsystem, perusahaan
workstation UNIX (Sparc) yang cukup terkenal. Java diciptakan berdasarkan bahasa
C++, dengan tujuan platform independent (dapat dijalankan pada berbagai jenis
hardware tanpa kompilasi ulang), dengan slogan “Write Once, Run Anywhere
(WORA), dan Java pada hakikatnya lebih sederhana dan memakai objek secara
Asal usul java dimulai pada tahun 1991 ketika Sun Microsystem melakukan
penelitian terhadap berbagai produk elektronika. James Gosling (kepala proyek
penelitian) beserta Patrick Naughton ditugaskan untuk merancang perangkat lunak
aplikasi yang independen, tidak bergantung pada jenis perangkat keras, agar bisa
dipakai pada berbagai peralatan elektronik itu. James Gosling kemudian memakai
bahasa pemrograman C++ untuk menulis beberapa aplikasi untuk peralatan mikro,
namun ternyata dia mengalami banyak kesulitan. Setiap kali sebuah peralatan mikro
menggunakan jenis microchip yang berbeda, program yang digunakannya harus
dikompilasi ulang. Berdasarkan hal itu kemudian munculah ide dari James Gosling
untuk menciptakan sebuah bahasa baru, yang ditulis berdasarkan C++ namun dengan
beberapa perbaikan. Bahasa ini kemudian disebut Oak (nama pohon yang terlihat dari
jendela ruangan kerja James Gosling), yang digunakan untuk membuat perangkat
lunak cerdas bagi peralatan elektronika buatan Sun Mirosystem.
Pada tahun 1994, ketika Web mulai populer nama bahasa Oak kemudian
diganti menjadi Java (salah satu sebabnya ternyata nama Oak telah terlebih dahulu
dipakai untuk hal lain). Menurut gosip, Gosling bingung mencari nama untuk bahasa
baru tersebut karena setiap nama yang dipikirkannya untuk nama bahasa
pemrogramannya ternyata sudah ada yang memakai, sampai suatu ketika dia mampir
di sebuah kafe untuk minum kopi, dan ia meminta “Java”. Timbullah idenya untuk memakai nama Java. Menurut Gosling nama ini cukup cool.
Java kemudian dipakai untuk membuat sebuah browser yang bernama WebRunner.
Setelah berhasil maka browser ini kemudian dinamakan HotJava dengan simbol
secangkir kopi panas.
2.7 Greenfoot
Greenfoot merupakan software pembelajaran pemrograman berorientasi
objek, dengan berbasis pemrograman java yang memungkinkan kita untuk
membuat game 2 dimensi (2D). Greenfoot diprakarsai oleh Michael Kolling pada
tahun 2003. Prototype pertama dibangun oleh Michael Kolling dan Paul
Henrikson pada tahun 2003-2004. Pembangunan dilanjutkan pada tahun 2005
oleh kelompok Blue J lain dari University of Kent dan Deakin University.
Greenfoot versi 1.0 pertama dirilis pada tanggal 31 Mei 2006. Pada bulan Maret
2009, proyek greenfoot menjadi software open source dan berlisensi dibawah
GNU GPL.
Untuk menjalankan greenfoot ini diharuskan sudah menginstalasi program
java 5 (JDK 1.5) atau program java terbaru. Didalam greenfoot terdapat project yang
dinamakan scenario. Dalam project tersebut, kita dapat membuat dua macam tipe
class dari library greenfoot, yaitu class world dan class actor. World merupakan latar
dari game yang akan dibuat. Actor adalah kelas yang berfungsi sebagai karakter pada
game yang akan dibuat.
27 3.1 Analisis Masalah
Kakuro adalah permainan puzzle yang bersifat logika dan biasa disebut
sebagai transliterasi matematis dari puzzle silang. Permainan ini adalah
permainan penjumlahan angka dengan aturan mainnya yaitu dengan mengisi
setiap kotak yang tersedia (kotak jawaban) dengan angka bulat dari 1 hingga 9
dengan beberapa syarat dalam pengisiannya. Soal-soal dalam permainan puzzle
kakuro bersifat unik, karena soal-soal ini akan saling terkait baik dengan soal
lainnya maupun jawaban dalam menyelesaikan permainan puzzle kakuro [5].
Untuk menyelesaikan permainan puzzle kakuro ini, jumlah total pada nilai
jawaban harus bernilai sama dengan nilai soal dan tidak boleh terdapat dua angka
yang sama pada satu lajur (kolom maupun baris).
Gambar 3.1 Contoh penyelesaian puzzle kakuro
Oleh karena itu dibutuhkan teknik untuk membangkitkan soal yang bersifat
unik dengan sistem random yang akan menghasilkan soal yang akan saling terkait
dari soal satu dengan soal lainnya dan mencari solusi dalam menyelesaikan
jawaban pada permainan puzzle kakuro dengan beberapa syarat didalamnya.
Dengan menggunakan prinsip dasarnya, algoritma backtracking mencari segala
solusi hingga menghasilkan solusi yang layak. Kelayakan solusi pada permainan
puzzle kakuro didefinisikan dengan suatu nilai akan dinyatakan layak apabila
tidak terdapat nilai angka yang sama pada satu serta nilai total pada jawaban harus
bernilai sama dengan nilai soal. Fungsi solusi didefiniskan jika semua kotak
kosong (kotak jawaban) telah terisi dengan nilai yang sesuai (sesuai dengan fungsi
kelayakan). Berikut gambaran kelayakan solusi pada permainan puzzle kakuro :
Gambar 3.2 Solusi layak pada permainan puzzle kakuro
3.2 Analisis Game
Analisis game yang akan diteliti pada game puzzle kakuro adalah dengan
membangkitkan soal permainan serta menyelesaikan jawaban. Pada dasarnya
permainan puzzle kakuro ini disetiap soal maupun jawaban akan saling terkait satu
sama lainnya dan mempunyai nilai pasti disetiap jawabannya. Oleh karena itu,
algoritrma backtracking akan diterapkan pada kasus puzzle kakuro ini. Berikut
merupakan alur membangkitkan soal permainan serta penyelesaian jawaban :
1. Proses pembangkitan soal.
Pada proses pembangkitan soal, nilai soal harus saling terkait dengan nilai
soal lainnya. Pada kasus ini, algoritma backtracking akan diterapkan dalam
membangkitkan soal. Algoritma backtracking bekerja untuk mencari nilai
yang akan menjadi nilai jawaban dalam pembangkitan soal dengan
menerapkan aturan permainan pada puzzle kakuro yaitu tidak boleh terdapat
Inisialisasi kotak Membangkitkan
jawaban Akumulasi jawaban Cetak soal
Gambar 3.3 Proses pembangkitan soal
Berikut penjelasan alur proses pada gambar 3.3 dengan kasus permainan
puzzle kakuro :
Gambar 3.4 Inisialisasi kotak permainan
Gambar 3.4 menjelaskan tentang keadaan awal permainan sebelum
menentukan nilai acuan pada lajur. Dimana kotak permainan disusun
berdasarkan kotak blok yang berwarna hitam dan kotak kosong yang
berwarna putih.
Gambar 3.5 Membangkitkan jawaban
Gambar 3.5 menjelaskan tentang pembangkit nilai jawaban. Pengisian ini
bertujuan untuk membangkitkan nilai soal pada kotak blok. Selain bertujuan
Gambar 3.6 Akumulasi jawaban dan cetak soal
Gambar 3.6 menjelaskan tentang akumulasi nilai jawaban dan cetak nilai
soal untuk permainan ini. Untuk mencetak soal, kotak yang berisikan nilai
jawaban dalam satu lajur akan diakumulasikan dari total nilai jawaban.
2. Proses penyelesaian jawaban pada kotak kosong.
Pada proses ini, penyelesaian jawaban dengan algoritma backtracking dengan
sistem terurut dalam pencarian nilai. Proses pencarian nilai dilakukan dari
angka 1 hingga 9, dan dengan melakukan tahapan pengecekan nilai yaitu
tidak boleh terdapat angka yang sama pada satu lajur serta total nilai jawaban
pada satu lajur yang akan dibandingkan dengan nilai soal.
Membangkitkan
jawaban Cetak jawaban
Gambar 3.7 Proses penyelesaian jawaban pada kotak kosong
3. Proses penyelesaian jawaban pada kotak terisi nilai.
Pada proses ini, penyelesaian jawaban dengan algoritma backtracking hampir
sama dengan proses penyelesaian jawaban pada kotak tidak terisi. Hanya saja
pada proses pengecekan nilai, nilai jawaban yang telah diisi oleh pemain akan
dicek ulang dengan nilai jawaban pada algoritma backtracking.
Membangkitkan jawaban
Cek jawaban pemain dengan jawaban yang dibangkitkan
3.3 Analisis Masukan
Analisis masukan yang dilakukan dalam penelitian ini adalah menganalisis
inputan puzzle dalam algoritma backtracking pada game kakuro. Masukan
tersebut berupa nilai (angka), akan tetapi masukan diberi batasan nilai yaitu dari
angka 1 hingga 9, berikut merupakan tabel analisis masukan pada game puzzle
kakuro.
Tabel 3.1 Nilai masukan 2 kotak
Nilai acuan lajur Nilai kombinasi
3 1-2
Tabel 3.2 Nilai masukan 3 kotak
Nilai acuan lajur Nilai kombinasi
6 1-2-3
7 1-2-4
8 1-2-5; 1-3-4
Nilai acuan lajur Nilai kombinasi
untuk menganalisis cara kerja algoritma backtracking terhadap kasus permainan
puzzle kakuro, bagaimana cara kerja algoritma backtracking dalam pembangkitan
Sebelum meneliti cara kerja algoritma backtracking pada game puzzle
kakuro ini, akan dibahas terlebih dahulu bagaimana cara menginisialisasikan
kotak terlebih dahulu yang akan menghasilkan kotak kosong (kotak jawaban) dan
kotak blok (kotak nilai soal / pembatas).
Dalam proses inisialisasi kotak pada puzzle kakuro, di setiap kotak puzzle
kakuro akan diberikan nilai indeks yang akan digambarkan dengan titik koordinat
sumbu (X, Y). Pada sumbu X menyatakan posisi kotak secara horizontal, dan
sumbu Y menyatakan posisi kotak secara vertikal. Titik koordinat sumbu X, dan
Y akan di gambarkan sebagai berikut :
Gambar 3.9 Titik koordinat sumbu (X, Y)
Pada gambar 3.9 menjelaskan keadaan awal kotak sebelum terjadinya
inisialisasi kotak permainan yang akan menentukan nilai acuan lajur dan kotak
permainan. Dimana kotak permainan disusun berdasarkan kotak blok yang
berwarna hitam dan kotak kosong yang berwarna putih seperti yang terjadi pada
proses gambar 3.4. Dalam menentukan kotak blok dan kosong dalam permainan
puzzle kakuro ini, maka alur proses yang akan terjadi adalah sebagai berikut :
1. Mengecek lajur nilai X.
Apabila nilai indeks pada kotak yang dipilih terdapat nilai 0 pada sumbu X
atau Y, maka kotak tersebut akan menjadi kotak blok. Sedangkan apabila
nilai indeks pada kotak yang dipilih terdapat nilai > 0 pada sumbu X atau Y,
2. Mengecek lajur nilai Y.
Nilai indeks pada kotak yang dipilih akan menjadi kotak blok, apabila lajur
pada sumbu Y diatasnya terdapat 3 kotak kosong. Sedangkan nilai indeks
pada kotak yang dipilih akan menjadi kotak kosong, apabila lajur pada sumbu
Y diatasanya kurang dari 3 kotak kosong. Pada pengecekan lajur sumbu Y
terdapat batasan, karena pada permainan yang dibuat hanya dibatasi 2 hingga
3 kotak kosong sebagai nilai masukan.
Dari pengecekan tersebut, didapatlah kotak blok dan kosong untuk menentukan
lajur permainan seperti pada gambar gambar 3.4. Proses pengecekan nilai pada
titik koordinat (X, Y) diatas akan dijelaskan pada alur flowchart berikut :
3.4.2 Analisis Algoritma Backtracking Pembangkit Nilai Soal
Analisis algoritma backtracking pada pembangkit nilai soal merupakan
penjelasan alur atau cara kerja algoritma backtracking saat terjadi pembuatan soal
di dalam game puzzle kakuro yang sudah terinisialisasi kotak terlebih dahulu.
Algoritma backtracking akan bekerja saat pencarian nilai dan akan melakukan
backtrack apabila terdapat nilai angka yang sama dalam satu lajur. Penjelasan
tersebut akan digambarkan pada kotak sebagai berikut.
Kotak soal
Kotak jawaban
Gambar 3.11 Keadaan awal satu lajur
Gambar 3.11 menjelaskan tentang keadaan awal satu lajur sebelum
menentukan nilai soal. Dimana kotak dari satu lajur disusun berdasarkan kotak
jawaban dan kotak soal. Setelah tampil satu lajur tersebut, alur kerja algoritma
backtracking akan dimulai dengan menujuk kotak jawaban pertama menggunakan
pointer yang akan dicari nilai jawaban kedalam array.
Kotak soal
Kotak jawaban
Kotak yang dipilih
Gambar 3.12 Memilih kotak jawaban
Gambar 3.12 menjelaskan ketika pointer memilih kotak jawaban. Sebelum
menentukan nilai jawaban, kotak jawaban di cek terlebih dahulu oleh sistem
apakah kotak jawaban dalam kondisi kosong atau terisi nilai dalam satu lajur.
Apabila kotak jawaban dalam kondisi kosong, maka sistem akan mengisi kotak
jawaban dengan cara random. Dan apabila kotak jawaban dalam kondisi terisi
Kotak masukan nilai kakuro
Kotak yang dipilih oleh pointer
Gambar 3.13 Pencarian nilai masukan di dalam array
Gambar 3.13 menjelaskan pencarian nilai masukan untuk kotak jawaban di
dalam array. Pencarian dilakukan berdasarkan nilai yang telah ditentukan yaitu
nilai 1 hingga 9. Penentuan pencarian nilai dilakukan dengan cara random.
Setelah nilai dipilih maka nilai pada array akan di masukan kedalam kotak
jawaban. Berikut terjadinya proses pembentukan nilai soal dengan menentukan
nilai jawaban terlebih dahulu menggunakan algoritma backtracking pada tabel
3.3.
Tabel 3.3 Proses pembangkitan nilai soal
Proses Nilai kotak jawaban Nilai masukan array
1.
2.
3.
4.
5. -
Dari proses tabel 3.3 terdapat proses-proses yang menghasilkan nilai jawaban
hingga terjadinya pembangkitan nilai soal. Dari proses tersebut akan dijelaskan
kembali dengan alur kerja bagaimana terjadinya proses pembangkitan nilai soal
Tabel 3.4 Alur kerja pembangkitan nilai soal
Kotak jawaban pertama pada satu lajur
Cek lajur
1. Apabila lajur dalam keadaan terisi nilai semua, maka proses cek lajur
dilanjutkan ke lajur selanjutnya.
2. Apabila lajur dalam keadaan kosong, maka lakukan pencarian nilai
jawaban.
Random nilai Pencarian nilai jawaban yang dilakukan oleh sistem secara random didalam array, dengan ketentuan nilai dari 1 hingga 9.
Cetak nilai Nilai yang terpilih oleh sistem pada proses pencarian nilai akan dimasukan kedalam kotak jawaban.
Kotak jawaban kedua hingga terakhir pada satu lajur
Cek lajur, Random nilai
Cek duplikat
1. Apabila terdapat nilai yang sama pada lajur dalam proses pencarian
nilai, maka dilakukan pencarian nilai ulang oleh sistem dengan tidak
memilih kembali nilai yang sudah terpilih sebelumnya.
2. Apabila nilai yang terpilih tidak bernilai sama pada lajur, maka
proses pencarian nilai dilanjutkan ke kotak kosong sebelahnya.
Cetak nilai
Cetak soal
Lajur yang telah terisikan nilai jawaban akan diakumulasikan yang akan
menghasilkan nilai soal. Nilai jawaban yang sudah melalui tahap
akumulasi hingga menghasilkan nilai soal, akan dihapus baik dalam
kotak jawaban maupun pada sistem.
Dari alur kerja pembangkitan nilai soal tersebut, didapatlah nilai soal dari hasil
pencarian nilai jawaban yang sudah diakumulasikan. Alur kerja dalam
3.4.3 Analisis Algoritma Backtracking Penyelesaian Jawaban
Analisis algoritma backtracking dalam menyelesaikan jawaban terjadi
kedalam dua kondisi, yaitu kondisi disaat kotak jawaban kosong atau kondisi
disaat kotak jawaban terisi nilai.
3.4.3.1 Penyelesaian Jawaban Pada Kotak Kosong
Algoritma backtracking pada kondisi kotak jawaban kosong atau tidak
terisikan nilai, algoritma backtracking bekerja dengan mengecek nilai jawaban
dengan mengecek apakah terdapat nilai yang sama pada lajur serta mengecek
akumulasi total nilai jawaban dengan dengan nilai soal. Untuk menjelaskan
bagaimana algoritma backtracking bekerja, maka akan dijelaskan alur proses
aktivitas algoritma backtracking yang bekerja pada tabel 3.5.
Tabel 3.5 Proses terjadinya nilai jawaban
Proses Nilai kotak jawaban Nilai masukan array
1.
2.
3.
4.
5.
Dari proses tabel 3.5 terdapat proses-proses yang menghasilkan nilai jawaban dari
keadaan awal lajur yang sudah terisikan nilai soal. Dari proses tersebut akan
dijelaskan kembali dengan alur kerja bagaimana terjadinya proses terjadinya nilai
Tabel 3.6 Alur kerja terjadinya nilai jawaban
Kotak jawaban pertama pada satu lajur
Cek lajur
1. Apabila lajur dalam keadaan terisi nilai semua, maka proses cek lajur
dilanjutkan ke lajur selanjutnya.
2. Apabila lajur dalam keadaan kosong, maka lakukan pencarian nilai
jawaban.
Pencarian
nilai
Pencarian nilai jawaban yang dilakukan oleh sistem secara berurutan
didalam array, dengan ketentuan nilai dari 1 hingga 9.
Cek total
1. Apabila nilai jawaban yang terpilih oleh sistem bernilai kurang dari
nilai soal dan tidak berada pada kotak terakhir pada lajur, maka
proses pencarian nilai dilanjutkan ke kotak kosong sebelahnya.
2. Apabila nilai jawaban yang terpilih oleh sistem bernilai kurang dari
nilai soal dan berada pada kotak terakhir pada lajur, maka proses
pencarian nilai dilakukan ulang dengan melanjutkan nilai
sebelumnya yang terpilih hingga menghasilakn nilai yang sama
dengan nilai soal apabila diakumulasikan.
Cetak nilai Nilai yang terpilih oleh sistem pada proses pencarian nilai akan dimasukan kedalam kotak jawaban.
Kotak jawaban kedua hingga terakhir pada satu lajur
Cek lajur, Pencarian nilai
Cek duplikat
1. Apabila terdapat nilai yang sama pada lajur pada proses pencarian
nilai, maka dilakukan pencarian nilai ulang oleh sistem dengan tidak
memilih kembali nilai yang sudah terpilih sebelumnya.
2. Apabila nilai yang terpilih tidak bernilai sama pada lajur, maka
proses pencarian nilai dilanjutkan ke kotak kosong sebelahnya.
Dari alur kerja terjadinya nilai jawaban tersebut, didapatlah nilai jawaban dari
keadaan awal lajur yang sudah terisikan nilai soal. Alur kerja dalam terjadinya
nilai jawaban diatas akan digambarkan pada alur flowchart berikut :
Gambar 3.15 adalah proses penyelesaian jawaban pada kotak kosong yang
digambarkan kedalam flowchart, dimana pada prosesnya terdapat beberapa
pengecekan baik pengecekan nilaerri maupun lajur. Pengecekan nilai maupun
lajur akan menghasilkan solusi yang layak, apabila memenuhi fungsi kelayakan
dalam permainan puzzle kakuro. Solusi yang layak dalam permainan puzzle
kakuro adalah apabila nilai jawaban dalam satu lajur bernilai sama dengan nilai
soal serta nilai jawaban saling terkait dengan nilai jawaban lainnya pada lajur
yang berbeda. Berikut merupakan contoh kasus dari solusi layak dalam permainan
puzzle kakuro pada 3 lajur yang digambarkan kedalam pohon solusi pada gambar
Pada gambar 3.16 terjadi alur proses dalam menemukan solusi yang layak yang
digambarkan kedalam pohon solusi dengan menghasilkan kedalaman 8 untuk
mencapai solusi pada tiga lajur. Kedalaman pohon solusi pada permainan puzzle
kakuro ini didapat, apabila kotak jawaban pada satu lajur tidak saling terkait lagi
dengan kotak jawaban pada lajur lainnya. Dalam prosesnya, terjadi pemangkasan
(pruning) terhadap simpul-simpul yang tidak mengarah ke solusi. Simpul yang
menjadi simpul anak dan turunan tidak akan diproses kembali, karena telah terjadi
pemangkasan.
3.4.3.2 Penyelesaian Jawaban Pada Kotak Terisi Nilai
Algoritma backtracking pada kondisi kotak jawaban terisi nilai, alur proses
kerja algoritmanya sama dengan alur proses kerja algoritma backtracking
penyelesaian jawaban pada kotak kosong yang terjadi pada tabel 3.5. Alur kerja
sistem pada penyelesaian jawaban pada kotak terisikan nilai seperti pada gambar
3.8. Pada alur tersebut terjadi proses pencocokan nilai jawaban yang diisikan oleh
pemain dengan nilai jawaban yang dibangkitkan oleh sistem menggunakan
algoritma backtracking. Untuk menjelaskan bagaimana alur proses penyelesaian
jawaban pada kotak terisikan nilai tersebut, maka akan dijelaskan pada tabel 3.7.
Tabel 3.7 Proses pencocokan kedua nilai jawaban
Proses Nilai jawaban diisi pemain Nilai jawaban yang dibangkitkan pada Tabel 3.5
Dari proses tabel 3.7 terdapat proses-proses dalam pencocokan nilai jawaban dari
sistem menggunakan algoritma backtracking. Keadaan awal, nilai jawaban yang
telah diisikan pemain sudah terisikan nilai jawaban terlebih dahulu, baik dalam
satu lajur maupun pada seluruh kotak jawaban. Selanjutnya, mencari nilai
jawaban yang dibangkitkan oleh sistem menggunakan algoritma backtracking
sebagai nilai pembanding dengan nilai jawaban yang telah diisi oleh pemain.
Setelah kedua nilai jawaban didapat, maka proses selanjutnya adalah pencocokan
nilai jawaban yang akan dijelaskan pada alur kerja bagaimana terjadinya proses
pencocokan kedua nilai jawaban pada tabel tabel 3.8.
Tabel 3.8 Alur kerja pencocokan kedua nilai jawaban
Kotak jawaban pertama pada satu lajur
Cek nilai
1. Apabila nilai jawaban yang diisi oleh pemain bernilai sama dengan
nilai jawaban yang dibangkitkan oleh sistem didalam array
menggunakan algoritma backtracking, maka sistem tidak akan
menampilkan warna merah pada kotak jawaban karena sesuai dengan
nilai yang dibangkitkan sistem.
2. Apabila nilai jawaban yang diisi oleh pemain bernilai tidak sama
dengan nilai jawaban yang dibangkitkan oleh sistem didalam array
menggunakan algoritma backtracking, maka sistem akan
menampilkan warna merah pada kotak jawaban yang tidak sesuai
dengan nilai yang dibangkitkan sistem.
Kotak jawaban kedua hingga terakhir pada satu lajur
Cek nilai
Dari alur kerja pencocokan kedua nilai jawaban tersebut, didapatlah hasil dari
pencocokan kedua nilai jawaban. Dimana sistem akan menampilkan kotak
berwana merah pada kotak jawaban yang tidak bernilai sama dengan nilai
jawaban yang telah dibangkitkan oleh sistem. Alur kerja dalam pencocokan kedua
Gambar 3.17 Proses pencocokan nilai jawaban
3.5 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 puzzle kakuro pada tabel
3.9.
Tabel 3.9 Spesifikasi perangkat lunak
Spesifikasi Perangkat Lunak
3.5.1 Analisis Kebutuhan Perangkat Keras
Agar aplikasi dapat berjalan dengan baik, maka dibutuhkan perangkat
keras (hardware) yang sesuai dengan kebutuhan aplikasi. Tabel 3.10 adalah
spesifikasi minimum perangkat keras yang dibutuhkan agar dapat menjalankan
aplikasi permainan puzzle kakuro secara optimal.
Tabel 3.10 Spesifikasi perangkat keras
Komputer Spesifikasi Perangkat Keras
Prosesor Prosesor 1,6 Ghz
Resolusi Layar 800 x 600 pixel
Memori Memori 128 Mb
Hardisk Hardisk 20 Gb
Keyboard dan mouse Standar
Sound card Standar
3.5.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.5.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
3.5.3.1 Use case Diagram
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.11.
Tabel 3.11 Definisi use case
No Use Case Keterangan
1. Memainkan Permainan Proses untuk memulai memainkan permainan
2. Keluar Proses untuk keluar dari permainan
3.5.3.2 Use 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.12 Tabel memainkan permainan
Identifikasi
Nomor 1
Nama Memainkan Permainan
Deskripsi Proses untuk memainkan permainan
Aktor Pemain
Skenario Utama
Kondisi Awal Pemain berada di permainan
Aksi Aktor Reaksi Sistem
1. Mengatur blok permainan
2. Random jumlah kolom
3. Random jumlah baris
4. Mengatur nilai pada blok dengan
random
5. Mengecek nilai
6. Melakukan backtracking
7. Cek jumlah kolom
8. Jika blok pada kolom tidak
kosong maka lakukan pencarian
backtracking, jika kosong maka
nilai input dinyatakan salah
9. Cek jumlah baris
10. Jika blok pada baris tidak kosong
maka lakukan pencarian
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
1. Activity memainkan permainan
2. Activity keluar permainan
Gambar 3.20 Activity keluar permainan
3.5.3.4 Squence Diagram
Sequence diagram menggambarkan tindakan objek pada use case dengan
mendeskripsikan waktu hidup objek dan message yang dikirimkan dan diterima
1. Squence diagram memainkan permainan
Gambar 3.21 Squence diagram memainkan permainan
2. Squence diagram keluar permainan
3.5.3.5 Class Diagram
Class diagram merupakan gambaran sistem berupa relasi antar kelas-kelas
ataupun paket-paketnya. Class diagram dijelaskan melalui gambar berikut.
Gambar 3.23 Class diagram permainan puzzle kakuro
3.5.3.6 Perancangan Antarmuka
Perancangan antarmuka bertujuan untuk memberikan gambaran tentang
aplikasi yang akan dibangun, sehingga akan mempermudah dalam
mengimplementasikan aplikasi serta akan memudahkan pembuatan aplikasi.
Antarmuka permainan merupakan halaman yang muncul pertama kali pada saat
1. Perancangan antarmuka permainan.
Gambar 3.24 Antarmuka permainan
2. Pesan ketika permaianan terselesaikan.