Novita Nuralita Suprijatna, 2013
Penerapan Algoritma Backtrack Dalam Membangkitkan elemen Awal Permainan Sudoku Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu
PENERAPAN ALGORITMA BACKTRACK DALAM
MEMBANGKITKAN ELEMEN AWAL PERMAINAN SUDOKU
SKRIPSI
Diajukan sebagai Syarat untuk Memperoleh Gelar Sarjana Sains pada Program Studi Matematika
Oleh :
NOVITA NURALITA S.
0607176
JURUSAN PENDIDIKAN MATEMATIKA
FAKULTAS PENDIDIKAN MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS PENDIDIKAN INDONESIA
PENERAPAN ALGORITMA BACKTRACK DALAM
MEMBANGKITKAN ELEMEN AWAL PERMAINAN SUDOKU
Oleh Novita Nuralita S.
Sebuah skripsi yang diajukan untuk memenuhi salah satu syarat memperoleh gelar Sarjana pada Fakultas Pendidikan Matematika dan Ilmu Pengetahuan Alam
© Novita Nuralita 2013 Universitas Pendidikan Indonesia
Agustus 2013
Hak Cipta dilindungi undang-undang.
LEMBAR PENGESAHAN
PENERAPAN ALGORITMA BACKTRACK DALAM
MEMBANGKITKAN ELEMEN AWAL PERMAINAN SUDOKU
Oleh :
Novita Nuralita S.
0607176
DISETUJUI DAN DISAHKAN OLEH
Pembimbing I
Dra. Hj. Rini Marwati, M.Si NIP 196606251990012001
Pembimbing II
Khusnul Novianingsih, S.Si., M.Si.
NIP 197711282008122001
Mengetahui
Ketua Jurusan Pendidikan Matematika
Drs. Turmudi, M.Ed., M.Sc., Ph.D.
ABSTRAK
Sudoku adalah permainan teka-teki angka berbasis logika. Pada umumnya, permainan ini terdiri dari grid berukuran 9x9 yang terbagi menjadi grid berukuran 3x3 yang disebut dengan minigrid. Tujuan dari permainan ini adalah mengisikan sel-sel kotak yang kosong dengan angka dari 1 sampai dengan 9, dengan aturan dalam satu baris, satu kolom dan satu minigrid tidak ada angka yang berulang. Algoritma Backtrack merupakan algoritma perbaikan dari algoritma brute-force yang tidak menelusuri seluruh kemungkinan solusi tetapi hanya pencarian yang mengarah kepada solusi saja yang dipertimbangkan. Melalui pembahasan pada tulisan ini, algoritma Backtrack digunakan untuk membangkitkan solusi permainan Sudoku. Elemen-elemen dari solusi yang dihasilkan dieliminasi hingga hanya tersisa beberapa elemen dengan posisi yang acak, sehingga diperoleh elemen-elemen awal yang digunakan sebagai petunjuk awal bagi pemain untuk menyelesaikan permainan Sudoku. Banyaknya elemen awal yang ditampilkan tergantung dari level yang dipilih pemain pada awal permainan. Aplikasi permainan ini akan dikembangkan dengan menggunakan Adobe Flash CS5 dan actionscript 3.0 sebagai bahasa pemrograman.
ii
Novita Nuralita Suprijatna, 2013
Penerapan Algoritma Backtrack Dalam Membangkitkan elemen Awal Permainan Sudoku Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu
ABSTRACT
Sudoku is a number puzzle game based on logic. Generally, the game consists of a 9x9 sized grid divided into 3x3 sized called minigrid. The goal of this game is filling the empty cell boxes with a number between 1 to 9, with rules that there must be no repeated number on one row, column and minigrid. Backtrack algorithm is an improved algorithm from the brute-force algorithm that does not explore all possible solutions but only the one that leads to the solution are considered. Through the discussion on this paper, backtrack algorithm is used to generate solutions for Sudoku game. The generated solution elements eliminated so that there is only few elements left with random position, thus initial elements used for initial clue for player to finish the game acquired. The amount of initial element displayed depend on the level that is selected by player in the beginning of the game. This application will be developed using Adobe Flash CS5 and actionscript 3.0 as a programming language.
vi DAFTAR ISI
vii
Novita Nuralita Suprijatna, 2013
Penerapan Algoritma Backtrack Dalam Membangkitkan elemen Awal Permainan Sudoku Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu
2.1.4 Manfaat Sudoku ... Error! Bookmark not defined. 2.2 Algoritma ... Error! Bookmark not defined. 2.2.1 Sejarah Algoritma ... Error! Bookmark not defined. 2.2.2 Ciri Algoritma ... Error! Bookmark not defined. 2.3 Algoritma Backtrack ... Error! Bookmark not defined. 2.3.1 Pengertian ... Error! Bookmark not defined. 2.3.2 Teori Pendukung ... Error! Bookmark not defined. 2.3.3 Properti Umum Metode Backtrack ... Error! Bookmark not defined. 2.3.4 Cara Kerja ... Error! Bookmark not defined. 2.4 Adobe Flash dan Actionscript 3 ... Error! Bookmark not defined. 2.4.1 Sejarah dan Perkembangan ... Error! Bookmark not defined. 2.4.2 Struktur Dasar Algoritma pada Actionscript 3.0 .. Error! Bookmark not defined.
viii
ix
Novita Nuralita Suprijatna, 2013
Penerapan Algoritma Backtrack Dalam Membangkitkan elemen Awal Permainan Sudoku Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu
DAFTAR GAMBAR
Halaman Gambar 2.1 Contoh soal Sudoku ukuran 9x9. ... Error! Bookmark not defined. Gambar 2.2 Contoh Latin Square. ... Error! Bookmark not defined. Gambar 2.3 Carre Magique de a Compartiments Egaux. ... Error! Bookmark not defined.
Gambar 2.4 Carre Magique Diabolique pada Surat Kabar La France, 6 Juli 1895. ... Error! Bookmark not defined. Gambar 2.5 Sudoku pada surat kabar Pikiran Rakyat, 24 Februari 2013. ... Error! Bookmark not defined.
Gambar 2.6 Representasi Graf Algoritma Depth First Search (DFS) ... Error! Bookmark not defined.
x
x
Novita Nuralita Suprijatna, 2013
Penerapan Algoritma Backtrack Dalam Membangkitkan elemen Awal Permainan Sudoku Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu
DAFTAR TABEL
Halaman Tabel 3.1 Tabel banyaknya elemen awal yang ditampilkan pada setiap Level ... Error! Bookmark not defined.
Tabel 4.1 Hasil Pengujian Proses pada Tampilan Menu Utama Error! Bookmark not defined.
Tabel 4.2 Hasil Pengujian Proses pada Tampilan Menu Level . Error! Bookmark not defined.
Tabel 4.3 Hasil Pengujian Proses pada Tampilan Menu Permainan Error! Bookmark not defined.
Tabel 4.4 Hasil Pengujian Proses pada Tampilan Menu Help ... Error! Bookmark not defined.
Tabel 4.5 Hasil Pengujian Proses pada Tampilan Menu About Error! Bookmark not defined.
BAB I
PENDAHULUAN
1.1 Latar Belakang Masalah
Puzzle game merupakan permainan yang tidak hanya berfungsi sebagai hiburan, tetapi juga dapat melatih kemampuan otak. Salah satu puzzle game yang populer adalah Sudoku. Berdasarkan penelitian seorang ahli saraf bernama Ian Robertson, Sudoku dapat meningkatkan kemampuan mental. Selain itu, permainan ini juga dapat mencegah penyakit Alzheimer dan hilang ingatan (Baras, 2010).
Sudoku merupakan permainan teka-teki angka berbasis logika. Aturan permainannya cukup sederhana, akan tetapi untuk menyelesaikannya cukup rumit. Pada umumnya, permainan ini terdiri dari grid berukuran 9x9 yang terbagi menjadi grid berukuran 3x3 yang disebut dengan minigrid. Tujuan dari permainan ini adalah mengisikan sel-sel kotak yang kosong dengan angka dari 1 sampai dengan 9, dengan aturan dalam satu baris, satu kolom dan satu minigrid tidak ada angka yang berulang.
Permainan Sudoku diciptakan oleh seorang arsitek, Howard Garns. Pada tahun 1979, Sudoku pertama kali diterbitkan oleh majalah Dell, dengan nama Number Place. Pada tahun 1984, permainan ini diterbitkan oleh Nikoli, sebuah perusahaan penerbitan di Jepang. Masyarakat Jepang menamakannya dengan "Suuji wa dokushin ni kagiru" ( 数字は独身に限る), yang kemudian disingkat menjadi
2
Novita Nuralita Suprijatna, 2013
Penerapan Algoritma Backtrack Dalam Membangkitkan elemen Awal Permainan Sudoku Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu
lain di Inggris juga ikut mempublikasikan permainan Sudoku ini. Sejak saat itulah, Sudoku mulai populer di berbagai belahan dunia (Jussien, 2007).
Pada awal permainan Sudoku, pemain akan diberikan grid Sudoku berukuran 9x9, yang beberapa elemennya diketahui pada beberapa sel, dinamakan elemen awal. Elemen awal tersebut merupakan bilangan bantuan yang bernilai 1 sampai dengan 9. Pemain diharuskan mengisi sel-sel yang kosong dengan angka dari 1 sampai dengan 9 sedemikian sehingga setiap baris, kolom dan minigrid tidak terdapat angka yang berulang atau tepat satu kali. Pemain dinyatakan menang jika seluruh sel pada grid Sudoku terisi penuh dan memenuhi aturan Sudoku.
Untuk membangkitkan elemen awal permainan Sudoku, dibutuhkan suatu algoritma yang dapat menentukan solusi permainan Sudoku. Algoritma yang dapat digunakan dalam menentukan solusi permainan, antara lain adalah algoritma Brute Force, Branch and Bound, Backtrack, Dancing Links dan Genetika. Beberapa elemen dari solusi yang diperoleh kemudian dieliminasi sedemikian sehingga diperoleh grid Sudoku yang berisi beberapa elemen awal yang diketahui sesuai dengan level yang dipilih pemain dengan posisi yang acak. Pada Skripsi ini, hanya akan dibahas bagaimana membangkitkan elemen-elemen awal pada permainan sudoku dengan menggunakan algoritma Backtrack.
Algoritma Backtrack (Munir, 2004) adalah algoritma yang berbasis pada Depth First Search (DFS) untuk mencari solusi persoalan yang lebih efektif. Selain itu, algoritma ini merupakan perbaikan dari algoritma Brute Force, secara sistematis mencari solusi persoalan di antara semua kemungkinan solusi yang ada, namun hanya yang mengarah pada solusi saja yang dipertimbangkan. Dengan begitu, waktu pencarian dapat dihemat.
3
Backtrack. Aplikasi ini akan dikembangkan dengan menggunakan bahasa pemrograman Actionscript 3.0. pada framework Adobe Flash CS5 Professional.
1.2 Rumusan Masalah
Berdasarkan latar belakang masalah yang telah diuraikan sebelumnya, permasalahan yang akan dibahas dalam Skripsi ini adalah sebagai berikut:
1. Bagaimana penerapan algoritma Backtrack dalam menentukan elemen-elemen awal permainan Sudoku?
2. Bagaimana penerapan algoritma Backtrack dalam menentukan elemen-elemen awal permainan ke dalam bahasa pemrograman actionscript 3.0 pada Flash?
1.3 Tujuan
Adapun tujuan dari Skripsi ini antara lain adalah
1. Mengetahui penerapan algoritma Backtrack dalam menentukan elemen-elemen awal permainan Sudoku.
2. Mengetahui penerapan algoritma Backtrack dalam menentukan elemen-elemen awal permainan ke dalam bahasa pemrograman actionscript 3.0 pada Flash.
1.4 Manfaat Penelitian
4
Novita Nuralita Suprijatna, 2013
Penerapan Algoritma Backtrack Dalam Membangkitkan elemen Awal Permainan Sudoku Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu 1.5 Batasan Masalah
Ruang lingkup permasalahan dalam merancang aplikasi permainan Sudoku ini dibatasi sebagai berikut :
a. Grid Sudoku yang dibahas berukuran 9 x 9 dengan minigrid berukuran 3x3. b. Aplikasi ini akan dibangun dengan menggunakan bahasa pemrograman
Actionscript 3.0 pada framework Adobe Flash CS5 Professional.
c. Teknik yang digunakan dalam membangkitkan elemen awal pada permainan Sudoku adalah dengan membangkitkan solusi permainan Sudoku, kemudian satu persatu dieliminasi hingga pada grid Sudoku hanya ditampilkan beberapa elemen awal sesuai dengan level yang dipilih pemain dengan posisi yang acak.
d. Maksimal banyaknya elemen yang dibacktrack ketika nilai pada sel tidak mengarah pada solusi adalah lima elemen.
1.6 Sistematika Penulisan
Sistematika penulisan yang akan diuraikan dalam Skripsi ini terbagi menjadi 5 bab, yaitu:
BAB I PENDAHULUAN
Pada bab ini akan dibahas latar belakang, rumusan masalah, tujuan penelitian, manfaat penelitian, batasan masalah serta sistematika penulisan.
BAB II LANDASAN TEORI
5
BAB III ANALISIS DAN PERANCANGAN
Pada bab ini menguraikan cara pemecahan masalah dengan menggunakan algoritma Backtrack serta menganalisis algoritma tersebut dalam menyelesaikan masalah. Selain itu akan diuraikan bagaimana merancang prosedur yang digunakan algoritma Backtrack dalam memecahkan masalah.
BAB IV HASIL DAN PENGUJIAN
Pada bab ini berisi tentang implementasi setiap prosedur yang telah dirancang ke dalam bentuk aplikasi, kemudian akan dibahas mengenai hasil dan pengujian dari aplikasi yang dirancang.
BAB V KESIMPULAN DAN SARAN
29
Novita Nuralita Suprijatna, 2013
Penerapan Algoritma Backtrack Dalam Membangkitkan elemen Awal Permainan Sudoku Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu
BAB III
ANALISIS DAN PERANCANGAN
Pada bab ini akan dibahas mengenai analisis dan perancangan pada sistem yang dibangun, yaitu penerapan algoritma Backtrack dalam membangkitkan elemen awal permainan Sudoku.
3.1 Analisis
3.1.1 Analisis Arena Permainan
Pada sistem yang diberi nama Sudoku Break ini, diharapkan pemain dapat menyelesaikan permainan Sudoku yang beberapa elemen awalnya diketahui. Permainan sudoku ini hanya dapat dimainkan oleh satu pemain (single player). Papan permainan ini berupa grid berukuran 9x9 yang terdiri dari 81 sel, sembilan baris, sembilan kolom dan sembilan minigrid berukuran 3x3.
Gambar 3.1 Ilustrasi papan permainan Sudoku
minigrid baris ke-x sel(x,y)
kolom ke-y
30
3.1.2 Analisis Algoritma
Seperti yang sudah dipaparkan dalam bab-bab sebelumnya, algoritma yang akan digunakan dalam membangun aplikasi ini adalah algoritma Backtrack. Penerapan algoritma Backtrack dalam menentukan elemen awal permainan Sudoku adalah sebagai berikut:
1. Algoritma dimulai dari sel kosong di baris pertama (x=0) dan kolom pertama (y=0) pada matriks Sudoku berukuran 9x9.
2. Pilih nilai num secara acak, dengan num {1, 2, 3, 4, 5, 6, 7, 8, 9}.
3. Jika nilai num yang dipilih memenuhi aturan sudoku (valid), maka isilah sel kosong tersebut dengan nilai num, dan lanjutkan pemeriksaan ke sel kosong berikutnya.
4. Jika nilai num yang dipilih tidak memenuhi aturan sudoku, uji kembali dengan nilai num acak lainnya yang belum terpilih.
5. Jika seluruh nilai num telah teruji, dan tidak ada nilai num yang memenuhi aturan sudoku, maka lakukan backtrack ke sel sebelumnya.
6. Sel ini akan diuji kembali dengan nilai num baru berdasarkan aturan sudoku. 7. Lakukan cara yang sama dengan poin nomor 3.
8. Proses di atas akan dilakukan terus menerus secara rekursif hingga seluruh sel kosong pada matriks berisi nilai-nilai num yang valid.
9. Pilih posisi sel secara acak, kemudian hapus nilai num pada sel tersebut. 10.Lakukan poin nomor 9 secara terus menerus, hingga diperoleh matriks
31
Novita Nuralita Suprijatna, 2013
Penerapan Algoritma Backtrack Dalam Membangkitkan elemen Awal Permainan Sudoku Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu
berfungsi sebagai petunjuk awal bagi pemain untuk dapat menyelesaikan permainan Sudoku.
Tabel 3.1 Tabel banyaknya elemen awal yang ditampilkan pada setiap Level
Berikut ini merupakan pseudocode pembangkitan elemen awal permainan Sudoku, yaitu:
1. Deklarasi konstanta umum DEKLARASI (umum)
grid : array[0..NBaris-1] of array[0..NKolom-1] of integer
selGrid : array[0..Nbaris*Nkolom-1] of integer NBaris : integer = 9
NKolom : integer = 9
Bagian ini merupakan deklarasi variabel umum yang akan digunakan, yaitu:
a. grid merupakan array dua dimensi bertipe integer berupa matriks berukuran
NBaris x NKolom = 9x9. Indeks array pada grid dimulai dari 0.
b. selGrid merupakan array berukuran NBaris*NKolom = 9*9 = 81 buah
elemen yang bertipe integer. Indeks array pada selGrid dimulai dari 0.
c. NBaris menyatakan jumlah atau ukuran baris pada matriks Sudoku.
d. NKolom menyatakan jumlah atau ukuran kolom pada matriks Sudoku.
No.
Level
Jumlah Elemen Awal
1
Easy
35-40
2
Medium
29-34
32
2. Implementasi fungsi pembatas
Fungsi SesuaiAturanSudoku merupakan fungsi untuk memeriksa apakah nilai num yang diberikan sesuai dengan fungsi pembatas atau tidak. Fungsi pembatas ini berdasarkan batasan-batasan pada aturan permainan Sudoku, yaitu:
1. Tidak boleh ada angka yang berulang pada baris. 2. Tidak boleh ada angka yang berulang pada kolom. 3. Tidak boleh ada angka yang berulang pada minigrid.
FUNCTION sesuaiAturanSudoku(input baris, kolom, num : integer) → boolean
{fungsi untuk menentukan apakah nilai num yang dimasukkan pada sel memenuhi aturan Sudoku atau tidak. bernilai false jika tidak sesuai aturan, true jika sesuai aturan}
DEKLARASI (lokal)
x, y, i, j : integer
minigrid, startBarisMini, startKolomMini : integer
Bagian ini merupakan deklarasi lokal yang akan digunakan pada fungsi sesuaiAturanSudoku, yaitu:
a. minigrid merupakan bagian dari grid Sudoku dengan ukuran yang lebih kecil yaitu 3x3.
b. startBarisMini merupakan posisi awal baris minigrid di dalam grid.
c. startKolomMini merupakan posisi awal kolom minigrid di dalam grid.
ALGORITMA
1. {memeriksa baris}
2. for y ← 0 to (Nkolom-1) do 3. if grid[baris][y] = num then 4. return false
33
Novita Nuralita Suprijatna, 2013
Penerapan Algoritma Backtrack Dalam Membangkitkan elemen Awal Permainan Sudoku Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu
6. endfor
Pada baris 2-6, fungsi akan memeriksa apakah terdapat nilai num yang sama pada baris yang sama atau tidak. Jika ya, maka nilai num tersebut tidak memenuhi aturan Sudoku dan fungsi akan mengembalikan nilai false. Jika tidak, maka nilai num tersebut memenuhi aturan Sudoku dan fungsi akan
Pada baris 8-12, fungsi akan memeriksa apakah terdapat nilai num yang sama pada kolom yang sama atau tidak. Jika ya, maka nilai num tersebut tidak memenuhi aturan Sudoku dan fungsi akan mengembalikan nilai false. Jika tidak, maka nilai num tersebut memenuhi aturan Sudoku dan fungsi akan mengembalikan nilai true.
13. {cek posisi angka pada minigrid} 14. if (kolom < 3) then
35
Novita Nuralita Suprijatna, 2013
Penerapan Algoritma Backtrack Dalam Membangkitkan elemen Awal Permainan Sudoku Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu
56. minigrid ← 7
57. startBarisMini ← 0 58. startKolomMini ← 6 59. endif
60. else
61. if (baris >= 3 & baris < 6) then 62. minigrid ← 8
63. startBarisMini ← 3 64. startKolomMini ← 6 65. endif
66. else
67. if (baris >= 6) then 68. minigrid ← 9
69. startBarisMini ← 6 70. startKolomMini ← 6 71. endif
72. endif
36
Gambar 3.2 Posisi Minigrid pada Grid Sudoku
73. {memeriksa minigrid}
74. for i ← startBarisMini to startBarisMini+2 do 75. for j ← startKolomMini to startKolomMini+2 do 76. if grid[i][j] = num then
77. return false 78. endif
79. endfor 80. endfor
37
Novita Nuralita Suprijatna, 2013
Penerapan Algoritma Backtrack Dalam Membangkitkan elemen Awal Permainan Sudoku Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu
Jika semua batasan telah diperiksa dan ternyata nilai num tersebut memenuhi semua aturan Sudoku, maka fungsi akan mengembalikan nilai true.
3. Implementasi fungsi generator Sudoku
Fungsi generateSudoku merupakan fungsi untuk membangkitkan elemen-elemen awal permainan Sudoku.
FUNCTION generateSudoku()
{fungsi untuk membangkitkan elemen awal yang diketahui pada permainan Sudoku dengan menggunakan algoritma Backtrack} DEKLARASI
values : array [0..8] of integer index, i : integer
num : integer
z, zindex : integer
maxbacktrack, backtrack, backtracked : integer NElemenAwal : integer
level : String
fungsi sesuaiAturanSudoku(input baris, kolom, num : integer, output boolean)
Bagian ini merupakan deklarasi lokal yang akan digunakan pada fungsi generateSudoku, yaitu:
a. values merupakan variabel penampung berupa array berukuran 9.
b. num merupakan nilai elemen yang mungkin pada sel Sudoku.
c. NElemenAwal merupakan banyaknya elemen awal yang akan ditampilkan pada soal permainan Sudoku.
d. level merupakan tingkat kerumitan soal yang dipilih oleh pemain. e. fungsi sesuaiAturanSudoku merupakan fungsi yang telah
38
ALGORITMA
1. index ← 0 2.
3. while (index < Nbaris*NKolom) do 4. num ← 0
5. for i ← 0 to 8 do 6. values[i] ← i+1 7. i++
8. endfor
Pada baris 1-8, inisialisasi index dengan nilai 0. Selama index < 81, inisialisasi num dengan nilai 0. Pada baris 5-8, dilakukan pengisian nilai pada array values, sehingga diperoleh values = [1, 2, 3, 4, 5, 6,7, 8, 9].
9. while (num = 0 & values.length > 0) do 10. zindex ← random(0, values.length) 11. z ← values[zindex]
12. values[zindex] = “ ”
Pada baris 9-12, fungsi akan memilih angka secara acak antara 0 sampai dengan banyaknya angka pada values. Angka acak yang diperoleh akan dimasukkan ke dalam variabel penampung zindex dan nilai dari elemen
ke-zindex dari values dimasukkan ke dalam variabel penampung z. Untuk
menghindari terpilihnya nilai yang sama jika ternyata nilai z tidak memenuhi aturan Sudoku, maka nilai pada elemen ke-zindex pada values harus dihapus.
13. {cek apakah z pada selGrid[index] memenuhi aturan Sudoku atau tidak}
14. if (sesuaiAturanSudoku(z, selGrid[index]) = true) then
39
Novita Nuralita Suprijatna, 2013
Penerapan Algoritma Backtrack Dalam Membangkitkan elemen Awal Permainan Sudoku Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu
16. else
17. num ← 0 18. endif 19. endwhile
Pada baris 14-19, fungsi akan memeriksa apakah nilai z memenuhi aturan Sudoku atau tidak dengan menggunakan fungsi yang sebelumnya telah didefinisikan, yaitu fungsi sesuaiAturanSudoku(baris, kolom,
num). Jika fungsi sesuaiAturanSudoku bernilai true maka num = z
sehingga proses pada fungsi akan dilanjutkan ke baris 35-36. Tetapi jika fungsi sesuaiAturanSudoku bernilai false, maka num = 0. Selama num = 0
dan banyaknya angka pada values lebih dari 0, maka lakukan kembali algoritma pada baris 10-19.
20. if num = 0 then
40
maxbacktrack = 5, sedangkan jika index ≤ 5 maka maxbacktrack = index. Kemudian, pilih secara acak antara 1 sampai dengan maxbacktrack untuk memperoleh banyaknya elemen pada selGrid yang akan dibacktrack. Nilai-nilai pada selGrid ke-index yang dibacktrack kemudian dikembalikan nilainya menjadi nol.
34. else
35. selGrid[index] ← num 36. index++
37. endif 38. endwhile
Proses fungsi pada baris 35-36 dilakukan apabila num = z, sehingga diperoleh nilai pada elemen selGrid ke-index adalah num. Kemudian proses dimulai lagi dari algoritma baris ke-3 dengan index = index+1. Proses ini akan terus berulang selama index < 81.
39. {menampilkan elemen-elemen awal Sudoku} 40. read(level)
41. case level
42. „Easy‟: NElemenAwal = Acak(35, 40) 43. „Medium‟: NElemenAwal = Acak(29, 34) 44. „Hard‟: NElemenAwal = Acak(23, 28) 45. endcase
46.
47. while(NElemenAwal > 0) do
48. var baris = Random(0,Nbaris-1) 49. var kolom = Random(0,Nkolom-1) 50. write(grid[baris][kolom]) 51. NElemenAwal--
41
Novita Nuralita Suprijatna, 2013
Penerapan Algoritma Backtrack Dalam Membangkitkan elemen Awal Permainan Sudoku Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu
Pada baris 40-44, fungsi akan menerima input level yang dipilih pemain. level yang dipilih akan mempengaruhi banyaknya elemen awal yang ditampilkan, ketentuannya dapat dilihat pada tabel sebelumnya, yaitu tabel 3.1. Pada baris 47-52, fungsi akan mengeliminasi elemen-elemen pada solusi Sudoku hingga diperoleh sejumlah elemen awal yang harus ditampilkan sesuai dengan level yang dipilih, dengan posisi baris dan kolom bernilai acak antara 0 sampai dengan 8.
Gambar 3.3 Flowchart Solusi Sudoku
Proses yang terjadi pada aplikasi SudokuBreak ini dapat disederhanakan ke dalam bentuk flowchart seperti pada gambar 3.3 dan gambar 3.4. Gambar 3.3 menunjukkan proses diperolehnya solusi permainan Sudoku dengan menggunakan algoritma Backtrack. Solusi permainan Sudoku yang diperoleh, kemudian diproses kembali (lih. gambar 3.4) sehingga diperoleh elemen-elemen
42
awal yang merupakan petunjuk awal dalam permainan Sudoku. Banyaknya elemen awal yang ditampilkan tergantung dari level yang dipilih. Semakin sulit level yang dipilih, maka banyaknya elemen awal yang ditampilkan akan semakin sedikit, begitupun sebaliknya.
Gambar 3.4 Flowchart Elemen Awal Sudoku
3.2 Perancangan Sistem
Perancangan sistem yang akan dibahas meliputi perancangan aplikasi permainan dan perancangan antarmuka:
3.2.1 Perancangan Aplikasi Permainan
Perancangan aplikasi permainan merupakan perancangan interaksi yang dapat dilakukan pemain terhadap aplikasi yang dibangun. Aplikasi ini akan dimulai dengan menampilkan form Menu Utama, yang berisi menu pilihan yaitu Menu
Solusi Sudoku
Level
Easy Medium Hard
NElemen awal = 35-40
NElemen awal = 29-34
NElemen awal = 23-28
Eliminasi
43
Novita Nuralita Suprijatna, 2013
Penerapan Algoritma Backtrack Dalam Membangkitkan elemen Awal Permainan Sudoku Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu
Permainan, Menu Help dan Menu About. Pada setiap pilihan menu yang dipilih akan ditampilkan form-form yang ingin ditampilkan pemain.
Gambar 3.5 Flowchart Aplikasi
44
akan ditampilkan pada permainan Sudoku. Semakin banyak elemen awal yang ditampilkan, maka tingkat kerumitan soal permainan Sudoku akan semakin mudah.
Setelah pemain memilih Menu Level yang diinginkan, maka akan ditampilkan form menu permainan. Aplikasi ini akan berhenti jika pemain menekan tombol exit. Gambar 3.5 menunjukkan proses yang terjadi pada aplikasi yang dirancang.
3.2.2 Perancangan Antarmuka
Perancangan antarmuka merupakan salah satu tahapan yang penting, karena pemain akan melakukan interaksi dengan aplikasi. Antarmuka yang dibangun haruslah sederhana dan menarik, sehingga mudah dipahami oleh pemain. Antarmuka pada aplikasi permainan Sudoku Break ini terdiri dari beberapa form yaitu form menu utama, form menu permainan, form menu help, form menu about, dan form menu level.
1. Form Menu Utama
Form menu utama merupakan form yang ditampilkan pertama kali pada saat aplikasi dijalankan. Form ini terdiri dari beberapa menu yang dapat dipilih oleh pemain, yaitu menu play, help dan about. Form ini dapat dilihat pada gambar 3.6
.
Gambar 3.6 Form Menu Utama
Keterangan (Gambar 3.6):
45
Novita Nuralita Suprijatna, 2013
Penerapan Algoritma Backtrack Dalam Membangkitkan elemen Awal Permainan Sudoku Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu
1. Tombol ini merupakan tombol menu yang berfungsi untuk keluar dari aplikasi.
2. SUDOKU BREAK merupakan judul dari aplikasi.
3. Tombol Play merupakan tombol menu yang berfungsi untuk menampilkan form Menu Permainan.
4. Tombol Help merupakan tombol menu yang berfungsi untuk menampilkan form Menu Help yang berisi tentang panduan cara bermain Sudoku.
5. Tombol About merupakan tombol menu yang berfungsi untuk menampilkan form Menu About yang berisi tentang author aplikasi.
2. Form Menu Level
Form Menu Level merupakan form yang berisi beberapa pilihan Level yang diberikan kepada pemain. Apapun tombol level yang dipilih, nantinya akan sama-sama menampilkan form menu Permainan.
Gambar 3.7 Form Menu Level
Keterangan (Gambar 3.7):
Menu Level
SELECT LEVEL 1
Hard 4 Easy 2
46
1. SELECT LEVEL merupakan judul dari form menu Level. 2. Tombol Easy merupakan tombol level yang paling mudah. 3. Tombol Medium merupakan tombol level sedang.
4. Tombol Hard merupakan tombol level yang paling sulit.
3. Form Menu Permainan
Form menu permainan merupakan form yang digunakan dalam bermain permainan Sudoku. Form ini dapat dilihat pada gambar 3.8.
Gambar 3.8 Form Menu Permainan
Keterangan (Gambar 3.8):
1. Tombol ini merupakan tombol yang berfungsi untuk menampilkan form menu utama.
2. Papan permainan Sudoku berukuran 9x9.
3. Tombol New Game merupakan tombol yang berfungsi untuk menampilkan soal permainan yang berbeda.
-
x
New Game
Hint
Solve Menu Permainan
1
2
3
4
47
Novita Nuralita Suprijatna, 2013
Penerapan Algoritma Backtrack Dalam Membangkitkan elemen Awal Permainan Sudoku Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu
4. Tombol Hint merupakan tombol yang berfungsi untuk memberikan satu angka bantuan kepada pemain untuk dapat menyelesaikan permainan Sudoku.
5. Tombol Solve merupakan tombol yang berfungsi untuk menampilkan seluruh solusi permainan yang valid kepada pemain.
4. Form Menu Help
Form Menu Help merupakan form yang berisikan informasi mengenai aturan dan cara bermain Sudoku. Form ini dapat dilihat pada gambar 3.9.
Gambar 3.9 Form Menu Help
Keterangan (Gambar 3.9):
1. HOW TO PLAY merupakan judul dari form menu Help.
2. Textbox ini berisi informasi mengenai cara bermain SUDOKU BREAK. 3. Tombol OK berfungsi untuk menampilkan form menu utama.
-
x
Menu Help
HOW TO PLAY
12
48
5. Form Menu About
Form Menu About merupakan form yang berisikan informasi mengenai author aplikasi. Form ini dapat dilihat pada gambar 3.10.
Gambar 3.10 Form Menu About
Keterangan (Gambar 3.10):
1. ABOUT merupakan judul dari form menu About.
2. Textbox ini berisi informasi mengenai author aplikasi SUDOKU BREAK. 3. Tombol OK berfungsi untuk menampilkan form menu utama.
Menu About
ABOUT
12
60
Novita Nuralita Suprijatna, 2013
Penerapan Algoritma Backtrack Dalam Membangkitkan elemen Awal Permainan Sudoku Universitas Pendidikan Indonesia | repository.upi.edu | perpustakaan.upi.edu
BAB V
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Berdasarkan pembahasan dan penelitian yang telah dipaparkan pada bab-bab sebelumnya, maka dapat diperoleh kesimpulan bahwa:
1. Algoritma Backtrack cukup mangkus dalam membangkitkan elemen-elemen awal permainan Sudoku.
2. Algoritma Backtrack untuk menentukan elemen-elemen awal dari permainan Sudoku dapat diimplementasikan ke dalam bahasa pemrograman Actionscript 3.0.
5.2 Saran
Berikut ini merupakan beberapa saran yang perlu dipertimbangkan untuk menjadi penelitian selanjutnya, yaitu:
1. Menggunakan algoritma lain selain algoritma Backtrack, seperti algoritma Brute Force, Branch and Bound, Backtrack, Dancing Links dan Genetika. 2. Menggunakan variasi sudoku lainnya, dengan ukuran, isi elemen atau bentuk
minigrid yang berbeda. Ukurannya bisa lebih besar atau lebih kecil, misal 4x4 atau 16x16. Isi elemen bisa berupa gambar, huruf atau bisa juga suara. Bentuk minigrid bisa berupa pentomino atau heptomino.
3. Menambahkan aturan tambahan dengan tetap mempertahankan aturan dasar Sudoku. Misalnya, pada diagonal harus berisi angka dari 1 sampai dengan 9. 4. Menambahkan fitur-fitur lain yang lebih menarik, seperti fitur highscore yang
DAFTAR PUSTAKA
Anton, H. (2000). Dasar-Dasar Aljabar Linear Jilid 1. Edisi ke-7. Interaksara:Batam Bakri, A.H. (2010). Analisis dan Implementasi Algoritma Backtracking pada
Permainan Congklak. Medan: Universitas Sumatera Utara.
Baras, R. (2010). Sudoku. [Online]. Tersedia: http://www.ronitbaras.com/education-learning/sudoku/#.Ug7QCpLQmY0 [17 Agustus 2013]
Hariyanto, B. (2004). Rekayasa Sistem Berorientasi Objek. Bandung:Informatika Jussien, N. (2007). A-Z of Sudoku. London: ISTE.
Lee, Wei-Meng. (2006). Programming Sudoku. New York:Apress.
Lowry, B. (2009). Creating Sudoku in Flash [Online]. Tersedia: http://www.kongregate.com/games/5minutesoff/learn-how-to-create-sudoku-in-flash-as3 [14 Februari 2012]
Munir, R. (2004). Diktat Kuliah IF2251 Strategi Algoritmik. Bandung: Institut Teknologi Bandung.
Munir, R. (2007). Algoritma dan Pemrograman dalam Bahasa Pascal dan C. Edisi ke-3. Bandung:Informatika.
Radion, K. (2012). Easy Game Programming using Flash and ActionScript 3.0. Yogyakarta:Andi.
Rosenzwelg, G. (2011). Actionscript 3.0 Game Programming University Second Edition. Indianapolis: QUE.
Sutarno, H; Priatna, N dan Nurjanah. (2005). Matematika Diskrit. Malang:UM Press. Wikipedia. (2012). Sudoku [Online]. Tersedia: http://en.wikipedia.org/wiki/Sudoku