Analisis Dan Implementasi Algoritma Backtracking Pada Permainan Congklak
ANALISIS DAN IMPLEMENTASI ALGORITMA BACKTRACKING
PADA PERMAINAN CONGKLAK
SKRIPSI
ADHHAL HUDA BAKRI
061401067
PROGRAM STUDI SARJANA ILMU KOMPUTER
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SUMATERA UTARA
MEDAN
2010
(2)
ANALISIS DAN IMPLEMENTASI ALGORITMA BACKTRACKING PADA PERMAINAN CONGKLAK
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Sarjana Komputer
ADHHAL HUDA BAKRI 061401067
PROGRAM STUDI SARJANA ILMU KOMPUTER DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA
MEDAN 2010
(3)
PERSETUJUAN
Judul : ANALISIS DAN IMPLEMENTASI ALGORITMA
BACKTRACKING PADA PERMAINAN
CONGKLAK
Kategori : SKRIPSI
Nama : ADHHAL HUDA BAKRI
Nomor Induk Mahasiswa : 061401067
Program Studi : SARJANA (S1) ILMU KOMPUTER
Departemen : ILMU KOMPUTER
Fakultas : MATEMATIKA DAN ILMU PENGETAHUAN
ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA
Diluluskan di
Medan, 18 Desember 2010
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Dian Rachmawati, S.Si, M.Kom Drs. James P. Marbun, M.Kom
NIP 198307232009122004 NIP 195806111986031002
Diketahui/Disetujui oleh
Departemen Ilmu Komputer FMIPA USU Ketua,
Prof. Dr. Muhammad Zarlis NIP 195707011986011003
(4)
PERNYATAAN
ANALISIS DAN IMPLEMENTASI ALGORITMA BACKTRACKING PADA PERMAINAN CONGKLAK
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, 18 Desember 2010
ADHHAL HUDA BAKRI 061401067
(5)
PENGHARGAAN
Alhamdulillah penulis ucapkan kepada Sang Khaliq Allah SWT yang melimpahkan rahmat dan karunia-Nya sehingga penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer, Program Studi S1 Ilmu Komputer Departemen Ilmu Komputer Universitas Sumatera Utara.
Ucapan terima kasih penulis sampaikan kepada Drs. James P. Marbun, M.Kom selaku pembimbing pertama dan Dian Rachmawati, S.Si, M.Kom selaku pembimbing kedua yang telah banyak meluangkan waktunya dalam memberikan masukan-masukan kepada penulis. Ucapan terima kasih juga ditujukan kepada Drs. Marihat Situmorang, M.Kom dan M. Andri Budiman, ST, M.Comp.Sc, MEM yang telah bersedia menjadi dosen penguji. Ucapan terima kasih juga ditujukan kepada Ketua dan Sekretaris Departemen Ilmu Komputer, Prof. Dr. Muhammad Zarlis dan Syahriol Sitorus, S.Si, MIT, Dekan dan Pembantu Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara, semua dosen serta pegawai di Program Studi S1 Ilmu Komputer Departemen Ilmu Komputer FMIPA USU.
Tidak lupa juga penulis ucapkan terima kasih kepada Ayahanda Drs. Zulbakri dan Ibunda Netty Juwita yang memberikan dukungan, doa, dan semangat tanpa henti. Untuk adik penulis, M Aziz Bakri yang selalu memberikan dorongan kepada penulis serta Mirnawati yang selalu memberi perhatian dan dorongan kepada penulis selama menyelesaikan skripsi ini. Terima kasih penulis ucapkan kepada teman-teman yang selalu memberikan dukungan, Sonavia Tanius, Nurjannah, Hadianto, M Anggi Rivai Nst, Mhd Makmur Rasyid Lbs, Denis Afriawanto dan Edwin Prawiro Hakim serta teman-teman satu angkatan yang sama-sama berjuang dalam penyusunan skripsi. Sekali lagi penulis mengucapkan terima kasih kepada semua pihak yang membantu dalam penyelesaian tugas akhir ini yang tidak dapat disebutkan satu persatu, terima kasih atas ide, saran dan motivasi yang diberikan. Semoga Tuhan Yang Maha Esa memberikan limpahan karunia kepada semua pihak yang telah memberikan bantuan, perhatian, serta dukungan kepada penulis dalam menyelesaikan skripsi ini.
(6)
ABSTRAK
Permainan congklak merupakan salah satu permainan tradisional yang berasal dari Indonesia. Permainan ini dimainkan oleh dua pemain dengan menggunakan sebuah papan congklak dan biji congklak yang berjumlah 14 x 7 buah. Pada permainan ini, diterapkan sebuah agen cerdas sebagai salah satu pemain. Agen cerdas adalah sesuatu yang dapat mengamati dan merasakan lingkungannya melalui sensor dan memberikan tindakan terhadap lingkungan tersebut melalui actuator. Agen cerdas akan menjadi salah satu pemain dengan menggunakan algoritma Backtraking. Algoritma
backtracking merupakan perbaikan dari algoritma brute force yang tidak menelusuri
seluruh kemungkinan solusi tetapi hanya pencarian yang mengarah ke solusi saja yang dipertimbangkan. Melalui pembahasan dalam tulisan ini, algoritma backtracking digunakan untuk memilih langkah optimal yang akan diambil agen dari lubang-lubang pada arena milik agen untuk mengumpulkan biji sebanyak-banyaknya ke dalam lumbung. Pada tulisan ini, permainan ini dibangun dengan menggunakan Delphi 7.0. Melalui pengujian secara kuisoner, kehandalan agen cerdas ini tergolong handal dengan persentase kemenangan dengan pemain bermain terlebih dahulu sebesar 75% dan agen bermain terlebih dahulu sebesar 100%.
(7)
ANALYSIS AND IMPLEMENTATION BACKTRACKING ALGORITHM ON CONGKLAK GAME
ABSTRACT
Congklak game is one of the traditional game which is originated from Indonesia. The game is played by two players using a congklak’s board and congklak’s seeds, amounting to 14 x 7 pieces. In this game, an intelligent agent is applied as one of the players. Intelligent agent is something that can observe and experience their environment via sensors and provides action to the environment via actuators. Intelligent agent will be one of the players with Backtraking Algorithm. Backtracking algorithm is a refinement of brute-force algorithm that do not search all possible solutions but the only search that leads to the solution are considered. Through the discussion in this paper, backtracking algorithm is used to select the optimal step to be taken by agent from the holes in the arena of agents to collect as many seeds into the barn. In this paper, the game is developed by using Delphi 7.0. Through testing the questionnaire, the reliability of intelligent agents is quite reliable with victory percentage with the first is player’s turn by 75% and the first is agent’s turn by 100%.
(8)
DAFTAR ISI
Halaman
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak v
Abstract vi
Daftar Isi vii
Daftar Tabel ix
Daftar Gambar x
Bab 1 Pendahuluan 1
1.1 Latar Belakang 1
1.2 Rumusan Masalah 2
1.3 Batasan Masalah 2
1.4 Tujuan Penelitian 3
1.5 Manfaat Penelitian 3
1.6 Metode Penelitian 3
1.7 Sistematika Penulisan 4
Bab 2 Tinjauan Teoretis 6
2.1 Kecerdasan Buatan 6
2.1.1 Intelligent Agent (Agen Cerdas) 7
2.1.2 Penggunaan Kecerdasan Buatan di berbagai Bidang 8
2.2 Game 9
2.2.1 Sejarah Game 10
2.2.2 Klasifikasi Game 11
2.3 Permainan Congklak 12
2.3.1 Sejarah Permainan Congklak 12
2.3.2 Peraturan Permainan Congklak 13
2.4 Searching (Pencarian) 17
2.5 Depth-First Search (DFS) 17
2.6 Algoritma Runut-Balik (Backtracking Algorithm) 18
2.6.1 Properti Umum Metode Runut-Balik 19
2.6.2 Prinsip Pencarian Solusi dengan Metode Runut-Balik 19
Bab 3 Analisis dan Perancangan Sistem 23
3.1 Analisis Kebutuhan Sistem 23
3.1.1 Analisis Arena Permainan 23
3.1.2 Analisis Algoritma 24
3.2 Perancangan Sistem 29
3.2.1 Perancangan Alur Permainan 29
3.2.1.1 Flowchart Abacktracking() 32
(9)
3.2.1.3 Flowchart Tembak() 34
3.2.1.4 Flowchart CekbijiArena() 35
3.2.1.5 Flowchart Hitungskor() 36
3.2.2 Perancangan Aplikasi Permainan 37
3.2.3 Perancangan Antarmuka 38
Bab 4 Implementasi dan Pengujian 44
4.1 Implementasi Sistem 44
4.2 Spesifikasi Perangkat Lunak 44
4.3 Spesifikasi Perangkat Keras 44
4.4 Tampilan Aplikasi 45
4.4.1 Tampilan Utama 45
4.4.2 Tampilan Arena Permainan 46
4.4.3 Tampilan Undi Giliran 46
4.4.4 Tampilan Permainan 47
4.4.5 Tampilan History Permainan 48
4.4.6 Tampilan Panduan Permainan 49
4.4.7 Tampilan Tentang Permainan 50
4.5 Pengujian Aplikasi 51
4.5.1 Pengujian Integrasi Aplikasi 51
4.5.1.1 Proses pada Tampilan Utama 52
4.5.1.2 Proses pada Tampilan Panduan Permainan 52
4.5.1.2 Proses pada Tampilan Tentang Permainan 53
4.5.1.2 Proses pada Tampilan Undi Giliran 53
4.5.1.2 Proses pada Tampilan History Permainan 54
4.5.1.2 Proses pada Tampilan Arena Permainan 55
4.5.2 Pengujian Aspek Antarmuka Aplikasi 56
4.5.3 Pengujian Aspek Penggunaan Aplikasi 58
4.5.4 Pengujian Penilaian Aplikasi 60
4.5.5 Pengujian Aspek Kehandalan Aplikasi 61
Bab 5 Kesimpulan dan Saran 63
5.1 Kesimpulan 63
5.2 Saran 64
Daftar Pustaka 65
(10)
DAFTAR TABEL
Halaman
Tabel 4.1 Hasil Evaluasi Proses pada Tampilan Utama pada Windows 52
Tabel 4.2 Hasil Evaluasi Proses pada Tampilan Panduan Permainan pada Windows 53 Tabel 4.3 Hasil Evaluasi Proses pada Tampilan Tentang Permainan pada Windows 53
Tabel 4.4 Hasil Evaluasi proses pada Tampilan Undi Giliran pada Windows 54
Tabel 4.5 Hasil Evaluasi proses pada Tampilan History Permainan pada Windows 54 Tabel 4.6 Hasil Evaluasi proses pada Tampilan Arena Permainan pada Windows 55
Tabel 4.7 Hasil Kuisioner Aspek Antarmuka 57
Tabel 4.8 Hasil Kuisioner Aspek Penggunaan 59
Tabel 4.9 Hasil Kuisioner Penilaian Aplikasi 60
(11)
DAFTAR GAMBAR
Halaman
Gambar 2.1 Ilustrasi dari Agent 8
Gambar 2.2 Peralatan Permainan Congklak 13
Gambar 2.3 Proses terjadinya kondisi 4a 14
Gambar 2.4 Proses terjadinya kondisi 4b 15
Gambar 2.5 Proses giliran permainan berakhir 16
Gambar 2.6 DFS untuk mencari simpul j 17
Gambar 2.7 Pohon ruang kemungkinan solusi persoalan 4-Ratu 21
Gambar 2.8 Penelusuran Solusi Backtraking 4-Ratu pada papan catur 22
Gambar 2.9 Pohon pencarian solusi dengan Backtraking pada persoalan 4-Ratu 22
Gambar 3.1 Papan permainan congklak 23
Gambar 3.2 Keadaan papan permainan congklak untuk strategi a 27
Gambar 3.3 Pohon penelusuran backtracking untuk hasil C7 28
Gambar 3.4 Keadaan papan permainan congklak untuk strategi b 28
Gambar 3.5 Pohon penelusuran backtracking untuk hasil C2 29
Gambar 3.6 Flowchart Alur Permainan 30
Gambar 3.7 Flowchart Abacktracking() 32
Gambar 3.8 Flowchart Bermain() 33
Gambar 3.9 Flowchart tembak() 34
Gambar 3.10 Flowchart CekbijiArena() 35
Gambar 3.11 Flowchart HitungSkor() 36
Gambar 3.12 Flowchart Aplikasi 37
Gambar 3.13 Form Utama 38
Gambar 3.14 Form Undi Giliran 39
Gambar 3.15 Form Panduan Permainan 40
Gambar 3.16 Form Tentang Permainan 41
Gambar 3.17 Form History Permainan 42
Gambar 3.18 Form Arena Permainan 43
Gambar 4.1 Tampilan Utama 45
Gambar 4.2 Arena Permainan 46
Gambar 4.3 Tampilan Undi Giliran 47
Gambar 4.4 Kondisi saat permainan berlangsung 47
Gambar 4.5 Message Dialog 48
Gambar 4.6 Tampilan History Permainan 49
Gambar 4.7 Tampilan Panduan Permainan 50
(12)
ABSTRAK
Permainan congklak merupakan salah satu permainan tradisional yang berasal dari Indonesia. Permainan ini dimainkan oleh dua pemain dengan menggunakan sebuah papan congklak dan biji congklak yang berjumlah 14 x 7 buah. Pada permainan ini, diterapkan sebuah agen cerdas sebagai salah satu pemain. Agen cerdas adalah sesuatu yang dapat mengamati dan merasakan lingkungannya melalui sensor dan memberikan tindakan terhadap lingkungan tersebut melalui actuator. Agen cerdas akan menjadi salah satu pemain dengan menggunakan algoritma Backtraking. Algoritma
backtracking merupakan perbaikan dari algoritma brute force yang tidak menelusuri
seluruh kemungkinan solusi tetapi hanya pencarian yang mengarah ke solusi saja yang dipertimbangkan. Melalui pembahasan dalam tulisan ini, algoritma backtracking digunakan untuk memilih langkah optimal yang akan diambil agen dari lubang-lubang pada arena milik agen untuk mengumpulkan biji sebanyak-banyaknya ke dalam lumbung. Pada tulisan ini, permainan ini dibangun dengan menggunakan Delphi 7.0. Melalui pengujian secara kuisoner, kehandalan agen cerdas ini tergolong handal dengan persentase kemenangan dengan pemain bermain terlebih dahulu sebesar 75% dan agen bermain terlebih dahulu sebesar 100%.
(13)
ANALYSIS AND IMPLEMENTATION BACKTRACKING ALGORITHM ON CONGKLAK GAME
ABSTRACT
Congklak game is one of the traditional game which is originated from Indonesia. The game is played by two players using a congklak’s board and congklak’s seeds, amounting to 14 x 7 pieces. In this game, an intelligent agent is applied as one of the players. Intelligent agent is something that can observe and experience their environment via sensors and provides action to the environment via actuators. Intelligent agent will be one of the players with Backtraking Algorithm. Backtracking algorithm is a refinement of brute-force algorithm that do not search all possible solutions but the only search that leads to the solution are considered. Through the discussion in this paper, backtracking algorithm is used to select the optimal step to be taken by agent from the holes in the arena of agents to collect as many seeds into the barn. In this paper, the game is developed by using Delphi 7.0. Through testing the questionnaire, the reliability of intelligent agents is quite reliable with victory percentage with the first is player’s turn by 75% and the first is agent’s turn by 100%.
(14)
BAB 1
PENDAHULUAN
1.1 Latar Belakang
Permainan atau sering disebut dengan game merupakan suatu sarana hiburan yang diminati dan dimainkan oleh banyak orang baik dari kalangan anak-anak, remaja maupun orang dewasa. Game ini terdiri dari game tradisional dan game modern.
Game tradisional merupakan segala bentuk permainan yang telah ada sejak
zaman dahulu dan diwariskan secara turun-menurun dari generasi ke generasi. Pada umumnya, game tradisional sangat susah untuk dicari dari mana asal muasalnya, maupun mengenai siapa penciptanya. Biasanya game tradisional yang tumbuh dan berkembang dalam suatu masyarakat mencerminkan warna kebudayaan setempat. Jenis game tradisional ini yaitu layangan, kasti, petak umpet, congklak, bentengan dan sebagainya. Sedangkan game modern merupakan game yang disajikan pada suatu piranti atau perangkat teknologi dan dimainkan secara virtual. Media teknologi yang digunakan, yaitu console, komputer, handphone dan elektronik lainnya. Seiring perkembangan teknologi, game tradisional ini sudah jarang dimainkan dan kalah bersaing dari game modern.
Kecerdasan buatan (Artificial Intelligence) merupakan bagian bidang ilmu yang dapat menirukan tingkah laku dan fungsi otak manusia. Hal ini menyebabkan lahirnya berbagai teknologi yang dapat dikatakan bersifat cerdas, khususnya pada perkembangan game modern ini. Dengan adanya game berbasis AI ini, membuat para pemain terlibat untuk mengasah dan mengatur strategi untuk mengalahkan AI tersebut.
(15)
Untuk itu, penulis tertarik untuk merancang dan membangun aplikasi dari salah satu game tradisional yaitu game congklak berbasis kecerdasan buatan di komputer. Game congklak merupakan permainan yang menggunakan papan congkak yang terdapat 16 buah lubang yang terdiri atas 14 lubang kecil yang saling berhadapan dan 2 lubang besar di kedua sisinya. Setiap 7 lubang kecil di sisi pemain dan lubang besar di sisi kananya dianggap sebagai milik sang pemain. Game ini dimainkan oleh dua pemain yang salah satu pemain adalah intelligent agent (agen cerdas) akan menggunakan algoritma runut balik (backtracking). Algoritma ini merupakan perbaikan dari algoritma bruteforce, yang secara sistematis mencari solusi persoalan diantara semua kemungkinan solusi yang ada. Dengan metode ini, tidak perlu memeriksa semua kemungkinan solusi yang ada. Hanya pencarian yang mengarah ke solusi saja yang selalu dipertimbangkan. Akibatnya, waktu pencarian dapat dihemat.
Oleh karena itu, penulis mengangkat judul “Analisis dan Implementasi
Algoritma Backtracking pada Permainan Congklak” sebagai salah satu syarat
kelulusan jenjang strata satu Ilmu Komputer – Universitas Sumatera Utara (USU).
1.2 Rumusan Masalah
Permasalahan yang akan diteliti dan diuraikan disini adalah:
Bagaimana mengimplementasikan algoritma backtracking sebagai kecerdasan buatan pada permainan congklak.
1.3 Batasan Masalah
Batasan masalah pada tugas akhir ini adalah:
1. Pada aplikasi yang akan dibangun, permainan congklak ini akan dimainkan oleh dua pemain, yaitu: seorang pengguna dan sebuah agen kecerdasan buatan.
2. Arena permainan berjumlah 16 lubang yang terdiri dari 2 lubang besar, 14
lubang kecil yang masing-masing pemain memiliki 8 lubang 1 lubang besar dan 7 lubang kecil.
3. Permainan dimulai dengan menggunakan pengacakan (random) angka dari 1
(16)
4. Batas maksimum penelusuran kedalaman pohon adalah 10.
5. Pada penelitian ini, tidak dibahas masalah kompleksitas algoritma backtracking.
6. Implementasi permainan congklak ini menggunakan bahasa pemrograman
Delphi 7.0.
1.4 Tujuan Penelitian
Tujuan penelitian ini adalah sebagai berikut:
1. Menerapkan algoritma Backtracking untuk menghasilkan suatu kecerdasan
buatan pada permainan congklak.
2. Untuk mengimplementasikan permainan congklak ini dalam bentuk permainan
komputer.
1.5 Manfaat Penelitian
Manfaat dari tugas akhir ini adalah sebagai berikut.
1. Mengasah kemampuan pemain dalam mengasah intuisi bermain, khususnya
pada permainan congklak.
2. Memperkenalkan permainan tradisional congklak ini kepada masyarakat.
3. Melestarikan permainan kebudayaan Indonesia, khususnya permainan congklak ini pada permainan komputer.
1.6 Metode Penelitian
Metode penelitian yang akan digunakan adalah:
1. Studi Literatur
Pada tahap ini dilakukan dengan membaca dan mempelajari buku-buku referensi atau sumber-sumber yang berkaitan dengan skripsi ini, baik berasal dari buku maupun dari internet.
(17)
2. Analisis dan Merancang Desain Sistem
Pada tahap ini akan dilakukan analisis permainan dan algoritma backtracking serta perancangan aplikasi mengenai skripsi ini, seperti: menggambar flowchart, perancangan aplikasi, dan perancangan antarmuka (interface).
3. Implementasi Sistem
Pada tahap ini akan dilakukan pengkodean dan menerapkan perancangan aplikasi tersebut ke dalam bahasa pemrograman Delphi.
4. Pengujian Sistem
Pada tahap ini akan dilakukan pengujian terhadap aplikasi apakah telah memenuhi kriteria atau tidak.
5. Dokumentasi Sistem
Pada tahap ini akan dilakukan penulisan laporan mengenai aplikasi tersebut yang bertujuan untuk menunjukkan hasil penelitian ini.
1.7 Sistematika Penulisan
Sistematika penulisan dari skripsi ini terdiri dari beberapa bagian utama sebagai berikut:
BAB 1: PENDAHULUAN
Bab ini akan menjelaskan mengenai latar belakang pemilihan judul skripsi “Analisis dan Implementasi Algoritma Backtracking pada permainan congklak”, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian, dan sistematika penulisan.
BAB 2: LANDASAN TEORI
Bab ini akan membahas mengenai teori-teori yang berkaitan dengan kecerdasan buatan, agent, games, permainan congklak, depth-first search, dan algoritma
(18)
BAB 3: Analisis dan Perancangan Sistem
Bab ini akan membahas mengenai analisis kebutuhan sistem yang meliputi analisis arena permainan dan analisis algoritma. Selain itu, dibahas mengenai perancangan sistem baik perancangan alur permainan, perancangan aplikasi, dan perancangan antarmuka.
BAB 4: Implementasi dan Pengujian
Bab ini akan membahas mengenai bagaimana hasil implementasi aplikasi permainan congklak ini beserta pengujian terhadap aplikasi baik secara metode black box maupun kuisoner.
BAB 5: KESIMPULAN dan SARAN
Bab ini akan memuat kesimpulan isi dari keseluruhan uraian bab-bab sebelumnya dan saran-saran dari hasil yang diperoleh yang diharapkan dapat bermanfaat untuk pengembangan selanjutnya.
(19)
BAB 2
TINJAUAN TEORETIS
2.1 Kecerdasan Buatan
Kecerdasan buatan atau Artificial Intelligence merupakan bagian dari ilmu pengetahuan komputer yang khusus ditujukan dalam perancangan otomatisasi tingkah laku cerdas dalam sistem kecerdasan komputer. Sistem memperlihatkan sifat-sifat khas yang dihubungkan dengan kecerdasan dalam kelakukan atau tindak-tanduk yang sepenuhnya bisa menirukan beberapa fungsi otak manusia, seperti pengertian bahasa, pengetahuan, pemikiran, pemecahan masalah dan lain sebagainya (Kristanto, 2004).
Adapun defenisi kecerdasan buatan menurut Paul Y. Gloess dalam Kristanto, adalah ilmu yang mempelajari bagaimana membuat suatu mesin seolah-olah memiliki kecerdasan dalam memecahkan suatu masalah yang diberikan kepadanya.
Ada 2 bagian utama yg dibutuhkan untuk aplikasi kecerdasan buatan, yaitu: 1. Basis pengetahuan (knowledge base) : berisi fakta-fakta, teori, pemikiran dan
hubungan antara satu dengan lainnya.
2. Motor inferensi (inference engine) : kemampuan menarik kesimpulan
berdasarkan pengetahuan
Kecerdasan alami dalam hal ini kecerdasan manusia berbeda dengan kecerdasan buatan. Berikut beberapa kelebihan kecerdasan buatan dan kecerdasan alami.
1. Kecerdasan buatan lebih tahan lama dan konsisten, bahkan dapat dikatakan permanen sejauh program dan sistemnya tidak diubah.
(20)
2. Kecerdasan buatan lebih mudah diduplikasi dan disebarluaskan, berbeda dengan kecerdasan alami yang membutuhkan proses belajar mengajar untuk mentransfer kecerdasan.
3. Kecerdasan buatan dapat didokumentasi.
4. Kecerdasan buatan cenderung dapat mengerjakan perkerjaan lebih baik dan
lebih cepat dibanding dengan kecerdasan alami.
Kelebihan kecerdasan alami antara lain:
1. Kecerdasan alami bersifat kreatif. Kecerdasan alami dapat berkembang dengan mudah dan dapat menciptakan kreasi baru.
2. Kecerdasan alami memungkinkan manusia untuk menggunakan pengalaman
secara langsung. Sedangkan pada kecerdasan buatan harus bekerja dengan input-output simbolik.
3. Manusia dapat memanfaatkan kecerdasannya secara luas, tanpa batas.
Sedangkan kecerdasan buatan memiliki batasan.
2.1.1 Intelligent Agent (Agen Cerdas)
Intelligent Agent atau agen cerdas adalah sesuatu yang dapat mengamati dan
merasakan lingkungannya melalui sensor dan memberikan tindakan terhadap lingkungan tersebut melalui actuator.
Sebuah agen yang dibuat menyerupai manusia (human agent) memiliki sensor berupa mata, telinga, dan organ lain serta actuator yang berupa kaki, mulut dan lainnya. Berbeda dengan agen robot yang menggunakan kamera dan sinar infrared dalam jangkauan tertentu sebagai sensor dan berbagai mesin (motor) sebagai actuator. Gambar 2.1 adalah ilustrasi dari agen.
(21)
Gambar 2.1 Ilustrasi dari Agent
Sebuah agen dikatakan rasional jika untuk setiap deretan persepsi yang
mungkin, sebuah agen rasional hendaklah dapat memilih satu tindakan yang diharapkan memaksimalkan ukuran performance-nya, dengan adanya bukti yang diberikan oleh deretan presepsi dan apapun pengetahuan terpasang yang dimiliki agen itu.
Sebuah agen dapat dikatakan otonom (autonomous) apabila perilakunya ditentukan oleh pengalamannya sendiri (dengan kemampuan belajar dan beradaptasi).
2.1.2 Penggunaan Kecerdasan Buatan di berbagai Bidang
Kecerdasan buatan merupakan suatu hal yang dikembangkan pada sebuah sistem oleh para ahli untuk masa depan. Beberapa bidang perkembangan kecerdasan buatan ini adalah sebagai berikut, yaitu:
1. Natural Languange
Suatu teknologi yang memberikan kemampuan kepada komputer untuk memahami bahasa manusia sehingga pengguna komputer dapat berkomunikasi dengan komputer dengan menggunakan bahasa sehari-hari. Bahasa computer yang khusus pada bidang ini adalah LISP, INTERLISP, SAIL, PLANNER, KRL , PROLOG.
(22)
2. Robotik dan Sistem Sensor
Sistem sensor, seperti sistem vision, sistem tactile, dan sistem pemrosesan sinyal jika dikombinasikan dengan AI, dapat dikategorikan kedalam suatu sistem yang luas yang disebut sistem robotik.
3. Expert System (Sistem Pakar)
Sistem pakar (Expert System) adalah program penasehat berbasis komputer yang mencoba meniru proses berpikir dan pengetahuan dari seorang pakar dalam menyelesaikan masalah-masalah spesifik. Contohnya adalah sistem pakar menentukan suatu jenis penyakit, sistem pakar untuk bisnis dan sebagainya.
4. Games (Permainan)
Game playing (permainan game) merupakan bidang AI yang sangat populer berupa permainan antara manusia melawan mesin yang memiliki intelektual untuk berpikir. Bermain dengan komputer memang menarik bahkan sampai melupakan tugas utama yang lebih penting. Komputer dapat bereaksi dan menjawab tindakan-tindakan yang diberikan oleh lawan mainnya. Banyak permainan komputer telah dibuat dan dikembangkan. Sebagai contohnya adalah permainan catur.
2.2 Game
Game merupakan sesuatu hal yang dimainkan dengan suatu aturan tertentu yang biasa
digunakan untuk tujuan kesenangan dan kadang-kadang digunakan untuk tujuan pendidikan. Komponen utama dari game adalah tujuan, aturan, tantangan, dan interaksi. Game umumnya melibatkan stimulasi mental atau fisik, dan terkadang kedua-duanya. Banyak game membantu mengembangkan keterampilan praktis, berfungsi sebagai bentuk latihan, atau melakukan peran pendidikan, simulational, atau psikologis.
(23)
2.2.1 Sejarah Game
Pada tahun 1952, seorang mahasiswa Universitas Cambridge bernama A.S Gouglas membuat game OXO (tic tac toe) dalam versi grafik. Game ini ia kembangkan ketika hendak mendemonstrasikantesisnya tentang interaksi antara manusia dan komputer.
Memasuki era modern, pada tahun 1966 game digital pertama kali dibuat oleh Ralph Baer bersama timnya yang berjumlah 500 orang yang terdiri dari insinyur dan teknisi dan didanai oleh Pentagon. Game ini hanya dapat dimainkan dengan komputer seharga US$40.000. Unsur edukasi menjadi tujuan utama dalam game ini. Game dalam bentuk game antara papan dan bola tersebut diperuntukkan untuk membantu pasukan belajar strategi dan melatih kemampuan refleks pemainnya.
Pada tahun 1972, muncul game baru yang disebut Game Arcade, yang dipelopori oleh Nolan Brushnel dengan gamenya berjudul Pong. Mesin untuk memainkan game ini disebut mesin Arcade. Pemain yang ingin bermain diharuskan untuk memasukkan koin kedalam mesin. Pada hari kedua mesin ini diletakkan pada suatu bar, orang-orang mengantri untuk memainkan game Pong.
Tidak mau tertinggal dengan sistem Arcade, sistem konsol seperti Magnavox Odyssey, Atari 2006, Mattel Intelvision, Calleco Vision dan Nintendo Entertaiment System menciptakan game yang dapat dimainkan di rumah. Game yang paling menghebohkan orang-orang dengan tampilan grafik dan gameplay yang luar biasa pada sistem konsol tersebut adalah Super Mario Brothers yang diciptakan oleh Nintendo.
Pada perkembangannya, game komputer berkembang dengan pesatnya seiring perkembangan perangkat keras yang mendukung. Hal ini dibuktikan dengan program
(24)
2.2.2 Klasifikasi Game
Gameplay merupakan alat dan aturan-aturan yang mendefinisikan konteks
keseluruhan permainan sehingga pada saat gilirannya, menghasilkan keterampilan, strategi, dan kesempatan.
Berdasarkan media permainannya, game dapat dikelompokkan menjadi beberapa bagian, yaitu:
1. Board Games
Board games merupakan permainan yang menggunakan sebuah media papan
sebagai alat atau tempat untuk berinteraksi dan melakukan sebuah permainan . Biasanya permainan ini dilakukan dengan menggunakan strategi untuk memenangi permainan tersebut. Contohnya: Catur, Congklak.
2. Card Games
Card games merupakan permainan yang menggunakan satu set kartu sebagai
alat utama permainan. Permainan ini biasanya diawali dengan pengacakan kartu sehingga membutuhkan kesempatan dan keberuntungan untuk memenangi permainan ini. Contohnya: permainan kartu Uno, permainan Poker, permainan Spider Solitare dan sebagainya.
3. Dice Games
Dice games merupakan permainan dadu sebagai elemen utama permainan.
Permainan dilakukan dengan cara mengacak angka dadu kemudian angka dadu inilah yang menjadi dampak kemungkinan besar kemenangan permainan ini. Contohnya: Ludo, dadu Poker dan sebagainya.
4. Domino and Tile Games
Domino and tile games merupakan permainan yang menggunakan kartu
berbentuk ubin sebagai alat permainannya. Permainan ini mirip dengan permainan kartu. Contohnya: Domino dan Mahjong.
(25)
5. Pencil and Paper Games
Pencil and paper games merupakan suatu permainan yang memerlukan media kertas untuk menggambar arena permainan dan pensil untuk menulis langkah permainan tersebut. Contohnya, Scrabble, Tic-tac-toe, Sudoku dan sebagainya.
2.3 Permainan Congklak
Congklak merupakan suatu permainan tradisional dari Indonesia. Permainan ini dimainkan dengan menggunakan sebuah papan yang disebut papan congkak dan 98 (14 x 7) buah biji yang dinamakan biji congkak atau buah congkak. Di Indonesia, sebutan untuk permainan ini ada bermacam-macam seperti Congkak di Sumatera dengan kebudayaan Melayu, Congkak, Dakon, Dhakon atau Dhakonan untuk di Jawa dan Mokaotan, Maggaleceng, Aggalacang dan Nogarata di Sulawesi.
2.3.1 Sejarah Permainan Congklak
Permainan congklak merupakan permainan yang diadaptasi dari permainan tradisional Afrika yang disebut dengan Mancala. Nama Mancala diadaptasi dari bahasa Arab yaitu naqala yang artinya ”bergerak”. Di Afrika, Mancala ini dimainkan di berbagai macam media seperti sepetak tanah yang digali lubangnya sebagai papan dengan batu kerikil sebagai biji permainan atau sebuah papan kayu yang telah dilubangi dengan bebijian sebagai biji permainan. Mancala ini dapat ditemukan di atas atap kuil di daerah Memphis, Thebes, dan Luxor. Setelah diidentifikasi, permainan ini telah dimainkan oleh penduduk setempat semenjak 1400 SM, atau sekitar 3400 tahun yang lalu (Hakim,2007).
Menurut sejarah, permainan ini tersebar di Asia dan masuk ke Indonesia melalui para pedagang Arab. Pada saat itu, permainan ini digunakan para pedangang untuk melakukan dakwah kepada kalangan ningrat.
Pada umumnya di Indonesia, permainan congklak ini menggunakan papan congkak terbuat dari kayu dan plastik, sedangkan bijinya terbuat dari cangkang kerang, biji-bijian, batu-batuan, kelereng atau plastik . Pada papan congkak terdapat
(26)
16 buah lubang yang terdiri `atas 14 lubang kecil yang saling berhadapan dan 2 lubang besar di kedua sisinya. Setiap 7 lubang kecil di sisi pemain dan lubang besar di sisi kananya dianggap sebagai milik sang pemain. Gambar peralatan permainan congklak ini dapat dilihat pada Gambar 2.1.
(a)
(b)
Gambar 2.2 Peralatan Permainan Congklak
Gambar (a) merupakan gambar biji congklak dan gambar (b) merupakan gambar papan congklak.
2.3.2 Peraturan Permainan Congklak
Prinsip permainan Mancala adalah dengan memindahkan sejumlah batu-batu dari salah satu lubang ke dalam lubang lainnya. Proses arah pergerakan ini selalu dilakukan berlawanan arah jarum jam. Terdapat dua lubang utama di tepi papan yang diberi nama sama dengan permainannya: lubang Mancala. Pemain yang berhasil memasukkan paling banyak batu ke dalam Mancala menjadi pemenangnya.
(27)
Permainan congklak juga mengadopsi prinsip permainan Mancala ini tetapi memiliki beberapa perbedaan. Pada permainan congklak, arah pergerakan permainan dilakukan mengikuti arah jarum jam. Selain itu, apabila biji yang ditangan telah habis dan jatuh pada lubang kecil yang berisi biji lainnya, maka giliran pemain tersebut dilanjutkan. Untuk lebih jelasnya, peraturan permainan congklak adalah sebagai berikut:
1. Pada awal permainan, setiap lubang kecil diisi dengan tujuh buah biji
congkak.
2. Permainan dimulai dengan suit untuk menentukan giliran pertama.
3. Pemain yang mendapat giliran pertama, dapat memilih lubang yang akan
dijalankan dengan mengambil biji lubang tersebut dan memasukkan satu buah biji congkak ke dalam masing-masing lubang sesuai dengan arah putaran jarum jam.
4. Giliran pemain akan tetap berlanjut jika memenuhi kondisi berikut:
a. Apabila biji congkak ditangan habis dilubang besar miliknya maka ia dapat melanjutkan dengan memilih lubang kecil disisinya. Proses ini dapat dilihat pada Gambar 2.2.
Lubang yang dipilih
Gambar 2.3 Proses terjadinya kondisi 4a
Dari gambar dapat dilihat, apabila pemain yang memiliki arena bagian atas menjalankan langkah tersebut, maka dia dapat memilih lubang kecil lain disisinya.
(28)
b. Apabila biji congkak ditangan habis dilubang kecil yang berisi biji lainnya, ia dapat melanjutkan permainan. Proses ini dapat dilihat pada Gambar 2.4.
Lubang yang dipilih Tempat biji akhir berhenti
Gambar 2.4 Proses terjadinya kondisi 4b
Dari gambar dapat dilihat, apabila pemain yang memiliki arena bagian bawah memilih lubang tersebut, maka ia berhenti pada lubang yang ditunjuk oleh panah gambar di atas. Ia dapat melanjutkan gilirannya karena lubang tersebut terdapat biji congklak.
5. Giliran pemain akan berakhir apabila biji habis di lubang kecil yang kosong pada daerah permainan sendiri atau lawan. Jika jatuh di daerah permainan sendiri, maka ia dapat mengambil seluruh biji di sisi yang berhadapan dengan lubang tersebut (biji sisi lawan) , proses ini dinamakan tembak. Untuk lebih jelasnya dapat dilihat pada Gambar 2.5. Gambar (a) memperlihatkan permainan berhenti di daerah sendiri dan gambar (b) memperlihatkan permainan berhenti di daerah lawan. Pada gambar (a), pemain dapat melakukan tembak karena lubang di hadapannya berisi biji.
(29)
Lubang yang dipilih Tempat biji terakhir
berhenti
(a) tempat biji terakhir
berhenti
Lubang yang dipilih
(b)
Gambar 2.5 Proses giliran permainan berakhir
6. Permainan selesai apabila sudah tidak ada biji lagi yang dapat diambil
(seluruh biji di lubang besar kedua pemain) atau salah satu arena pada lubang kecil tidak berisi biji lagi.
7. Pemain yang memiliki banyak biji pada lubang besar, maka dialah pemenang permainan ini.
Permainan congklak ini akan dibuat menjadi permainan yang berbasis
komputer dengan pemain permainan adalah seorang pengguna dan sebuah kecerdasan buatan.
(30)
2.4 Searching (Pencarian)
Searching atau Pencarian merupakan suatu proses mencari solusi dari suatu permasalahan melalui sekumpulan kemungkinan ruang keadaan (state space). Ruang keadaan merupakan suatu ruang yang berisi semua keadaan yang mungkin.
Di dalam kecerdasan buatan, metode pencarian sangat menentukan tingkat keberhasilan sistem cerdas tersebut. Teknik pencarian ini terbagi atas 2, yaitu pencarian buta (blind search) dan pencarian heuristic (heuristic search). Pencarian buta merupakan pencarian yang penelusurannya dimulai dengan tidak ada informasi awal yang digunakan dalam proses pencarian. Contohnya Breath-First Search (BFS) dan Depth-First Search (DFS). Sedangkan Pencarian heuristik merupakan pencarian yang penelusurannya dimulai dengan adanya informasi awal yang digunakan dalam proses pencarian. Contohnya hill climbing, tabu search, algoritma genetika, algoritma semut dan simulated annealing (Kusumadewi,2005).
2.5 Depth-First Search (DFS)
Depth-First Search atau DFS merupakan pencarian yang dilakukan pada satu node
dalam setiap level dari yang paling kiri. Jika pada level yang paling dalam, solusi belum ditemukan, maka pencarian dilanjutkan pada node sebelah kanan. Node yang kiri dapat dihapus dari memori. Jika pada level yang paling dalam tidak ditemukan solusi, maka pencarian dilanjutkan pada level sebelumnya. Demikian seterusnya sampai ditemukan solusi. Jika solusi ditemukan maka tidak diperlukan proses
backtracking (penelusuran balik untuk mendapatkan jalur yang dinginkan). Gambar
2.6 adalah contoh DFS untuk mencari simpul j.
a
d c
b
e f h
j
g i
(31)
Kelebihan DFS adalah:
1. Pemakaian memori hanya sedikit, berbeda jauh dengan BFS yang harus
menyimpan semua node yang pernah dibangkitkan.
2. Jika solusi yang dicari berada pada level yang dalam dan paling kiri, maka DFS akan menemukannya secara cepat.
Kelemahan DFS adalah:
1. Jika pohon yang dibangkitkan mempunyai level yang dalam (tak terhingga), maka tidak ada jaminan untuk menemukan solusi (Tidak Complete).
2. Jika terdapat lebih dari satu solusi yang sama tetapi berada pada level yang berbeda, maka pada DFS tidak ada jaminan untuk menemukan solusi yang paling baik (Tidak Optimal).
2.6 Algoritma Runut-Balik (Backtracking Algorithm)
Istilah runut balik pertama kali diperkenalkan oleh D.H. Lehmer pada tahun 1950. Selanjutnya di tahun 1960, R. J. Walker, Golomb, dan Baumert menyajikan uraian umum tentang runut balik dan penerapannya pada berbagai persoalan.
Teknik runut balik (backtracking) merupakan salah satu teknik dalam penyelesaian masalah secara umum (General Problem Solving). Adapun dasar dari teknik ini adalah suatu teknik pencarian (Teknik Searching). Teknik pencarian ini digunakan dalam rangka mendapatkan himpunan penyelesaian yang mungkin. Dari himpunan penyelesaian yang mungkin ini akan diperoleh solusi optimal atau memuaskan. Runut-balik (backtracking) adalah algoritma yang berbasis pada Depth
First Search (DFS) untuk mencari solusi persoalan secara lebih mangkus.
Runut-balik, yang merupakan perbaikan dari algoritma brute-force, secara sistematis mencari solusi persoalan di antara semua kemungkinan solusi yang ada. Dengan metode runut balik, tidak perlu memeriksa semua kemungkinan solusi yang ada. Hanya pencarian yang mengarah ke solusi saja yang selalu dipertimbangkan. Akibatnya, waktu pencarian dapat dihemat. Saat ini algoritma runut-balik banyak diterapkan untuk program games (seperti game tic-tac-toe, menemukan jalan keluar
(32)
dalam sebuah labirin, catur, dll) dan masalah-masalah pada bidang kecerdasan buatan (artificial intelligence).(Munir, 2004).
2.6.1 Properti Umum Metode Runut-Balik
Untuk menerapkan metode runut-balik, properti berikut didefinisikan: 1. Solusi persoalan.
Solusi dinyatakan sebagai vektor n-tuple: Contoh: Si = {0,1}
Si = 0 atau 1
2. Fungsi pembangkit nilai xk Dinyatakan sebagai: T(k)
T(k) membangkitkan nilai untuk xk, yang merupakan komponen vektor solusi
3. Fungsi pembatas (fungsi kriteria) Dinyatakan sebagai:
B(x1, x2, ..., xk)
Fungsi pembatas menentukan apakah (x1, x2, ..., xk) mengarah ke solusi. Jika ya, maka pembangkitan nilai untuk xk+1 dilanjutkan, tetapi jika tidak, maka (x1, x2, ..., xk) dibuang dan tidak dipertimbangkan lagi dalam pencarian solusi.
2.6.2 Prinsip Pencarian Solusi dengan Metode Runut-Balik
Di sini penulis hanya akan meninjau pencarian solusi pada pohon ruang status yang dibangun secara dinamis. Langkah-langkah pencarian solusi adalah sebagai berikut:
1. Solusi dicari dengan membentuk lintasan dari akar ke daun. Aturan pembentukan yang dipakai adalah mengikuti aturan pencarian mendalam (DFS). Simpul-simpul yang sudah dilahirkan dinamakan simpul hidup (live node). Simpul hidup yang
sedang diperluas dinamakan simpul-E (Expand-node).
(33)
2. Tiap kali simpul-E diperluas, lintasan yang dibangun olehnya bertambah panjang. Jika lintasan yang sedang dibentuk tidak mengarah ke solusi, maka simpul-E tersebut “dibunuh” sehingga menjadi simpul mati (dead node). Fungsi yang digunakan untuk membunuh simpul-E adalah dengan menerapkan fungsi pembatas (bounding function). Simpul yang sudah mati tidak akan pernah diperluas lagi.
3. Jika pembentukan lintasan berakhir dengan simpul mati, maka proses pencarian diteruskan dengan membangkitkan simpul anak yang lainnya. Bila tidak ada lagi simpul anak yang dapat dibangkitkan, maka pencarian solusi dilanjutkan dengan melakukan runut-balik ke simpul hidup terdekat (simpul orangtua). Selanjutnya simpul ini menjadi simpul-E yang baru.
4. Pencarian dihentikan bila kita telah menemukan solusi atau tidak ada lagi simpul hidup untuk runut-balik.
Berikut ini adalah contoh penerapan algoritma Backtracking pada persoalan N-Ratu (The N-Queens Problem).
Persoalan: Diberikan sebuah papan catur yang berukuran NxN dan empat buah ratu. Bagaimanakah menempatkan N buah ratu (Q) itu pada petak-petak papan catur sedemikian sehingga tidak ada dua ratu atau lebih yang terletak pada satu baris yang sama, atau pada satu kolom yang sama atau pada satu diagonal yang sama.
Berdasarkan pada “Bahan Kuliah ke- 10 : Algoritma Runut-Balik
(Backtracking) Lanjutan” karangan Rinaldi Munir, solusi dari permasalahan tersebut
adalah sebagai berikut:
X = (x1,x2,x3,x4), dimana X merupakan vektor untuk peletakkan posisi ratu pada
papan dan xi ∈ Si
(34)
Dari hal ini, dapat dibentuk pohon ruang solusi persoalan 4-Ratu yang terlihat pada Gambar 2.7 sebagai berikut:
Gambar 2.7 Pohon ruang kemungkinan solusi persoalan 4-Ratu
Dari gambar, dapat dilihat ruang seluruh solusi yang mungkin diterapkan pada persoalan 4-Ratu pada papan catur tersebut. Langkah-langkah solusi dengan menggunakan backtracking adalah berikut :
1. Menelusuri node dari akar sampai ke daun yang membentuk ruang solusi
secara DFS. Penelusuran dilakukan dengan mempertimbangkan setiap batasan atau kriteria yang telah ditetapkan.
2. Apabila node yang dikunjungi memenuhi kriteria, maka akan dilakukan
penulusuran menuju node berikutnya. Sebaliknya, apabila node yang dikunjungi tidak memenuhi kriteria, maka akan dilakukan backtracking menuju node yang berada di atas dan node tersebut sampai ke bawahnya tidak dipertimbangkan lagi.
3. Pencarian berhenti apabila ditemukan solusi atau tidak ada node hidup pada pohon tersebut.
Dari langkah-langkah tersebut, dapat dilihat contoh solusi pada Gambar 2.8 dan pohon solusi persoalan 4-Ratu pada papan catur pada Gambar2.9.
1
5 7 10 12 15 17 21 23 26 28 31 33 37 39 42 44 47 49 53 55 58 60 63 65 4 6 9 11 14 16 20 22 25 27 30 32 36 38 41 43 46 48 52 54 57 59 62 64
3 8 13 19 24 29 35 40 45 51 56 61
2 18 34 50
x1=1 x1=2 x1=3 x1=4
x2=2
x2=3 x2=4 x2=1
x2=4
x1=1
x2=1 x2=2 x2=4 x2=1 x2=2 x2=3
x3=3 x3=4 x3=2 x3=4
x3=2 x3=3
x3=3 x3=4
x3=3 x3=4
x3=1 x3=3
x3=2 x3=4
x3=1 x3=4
x3=1 x3=2
x3=2 x3=3
x3=1 x3=3
x3=1 x3=2
x4=4
x4=3
x4=4
x4=2
x4=3
x4=2
x4=4
x4=3
x4=4
x4=3
x4=3
x4=1
x4=4
x4=2
x4=4
x4=1
x4=2
x4=1
x4=3
x4=2
x4=3
x4=1
x4=2
(35)
1 (a) 1 2 1 2 1 3 2 1 3 2 1 1 2 1 3 2 4
(b) (c) (d)
(e) (f) (g) (h)
Gambar 2.8 Penelusuran Solusi Backtraking 4-Ratu pada papan catur
1
15 31
9 11 14 16 30
3 8 13 19 24 29
2 18
x1=1
x2=4 x2=2
x2=3 x2=4
x1=2
x2=1
x2=3
x3=2 x3=4
x3=2 x3=3
x3=1
x4=3 x
4=3 B B B B B B B
(36)
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis Kebutuhan Sistem
Pada analisis kebutuhan sistem ini, akan dilakukan analisis terhadap arena permainan dan analisis algoritma.
3.1.1 Analisis Arena Permainan
Pada aplikasi yang akan dibangun, permainan congklak ini akan dimainkan oleh dua pihak, yaitu seorang pengguna yang dinamakan dengan pemain dan sebuah kecerdasan buatan yang pada aplikasi ini dinamakan dengan Btrack.
Arena permainan pada papan congklak ini akan terbagi atas 3 daerah, yaitu: daerah permainan yang terdiri dari daerah permainan pemain dan daerah permainan Btrack serta daerah target yaitu lumbung pemain dan lumbung Btrack. Hal ini dapat dilihat pada Gambar 3.1.
Apemain[1..7] Acomp[1..7]
Lpemain Lcomp
(37)
Keterangan :
1. Apemain[1..7] : merupakan daerah permainan pemain yang terdiri dari 7 buah lubang. Setiap lubang akan terisi 7 buah biji pada saat awal permainan. Daerah ini digunakan pemain untuk pemilihan langkah permainan dan melakukan tembak.
2. Acomp[1..7] : merupakan daerah permainan Btrack yang terdiri dari 7 buah lubang. Setiap lubang akan terisi 7 buah biji pada saat awal permainan. Daerah ini digunakan Btrack untuk pemilihan langkah permainan dan melakukan tembak. Proses ini nantinya akan menggunakan algoritma
backtracking untuk melakukan pemilihan tersebut.
3. Lpemain : merupakan daerah lumbung atau target pemain. Lubang ini
hanya dapat diisi oleh pemain tersebut. Banyaknya isi pada Lpemain akan menjadi skor untuk si pemain tersebut.
4. Lcomp : merupakan daerah lumbung atau target Btrack. Lubang ini hanya dapat diisi oleh Btrack tersebut. Banyaknya isi pada Lcomputer akan menjadi skor untuk Btrack tersebut.
3.1.2 Analisis Algoritma
Seperti yang telah dipaparkan pada bab sebelumnya, algoritma yang digunakan untuk membangun aplikasi ini adalah algoritma Runut-balik (Backtraking). Algoritma ini nantinya, akan digunakan oleh agen kecerdesan buatan yaitu Btrack untuk memilih langkah permainan.
Pada algoritma Backtracking, ada beberapa properti yang perlu dipertimbangkan yaitu properti solusi persoalan, properti komponen vektor solusi dan properti kriteria pembatas. Berikut ini adalah penjabaran properti-properti tersebut.
(38)
1. Properti solusi persoalan
Properti solusi persoalan merupakan properti yang berisikan simpul-simpul solusi dari persoalan. Pada permainan congklak ini, simpul-simpul persoalan merupakan lubang permainan yang tersedia pada papan congklak. Lubang-lubang tersebut diberi simbol C1 – C7 untuk Lubang-lubang daerah permainan Btrack dan simbol P1 – P7 untuk lubang daerah permainan pemain. Untuk lubang besar atau lumbung diberi simbol L.
S = {C1,C2,C3,C4,C5,C6,C7,P1,P2,P3,P4,P5,P6,P7,L}
2. Properti komponen vektor solusi.
Properti komponen vektor sulusi merupakan parameter yang digunakan untuk mengarahkan penelusuran simpul menuju ke arah solusi. Parameter ini terdiri atas dua, yaitu x dan y. x untuk menyatakan jumlah biji yang diperoleh untuk dimasukkan ke lumbung dan y menyatakan jumlah biji simpul sebelumnya.
3. Properti kriteria pembatas
Properti kriteria pembatas merupakan properti yang berupa fungsi untuk menentukan apakah simpul-simpul mengarah ke solusi. Kriteria pembatas yang diterapkan pada algoritma backtracking ini, mengacu pada strategi yang akan dipakai pada kecerdasan buatan pada permainan congklak. Strategi tersebut, yaitu :
a) Langkah langsung menuju lumbung. Pemilihan langkah ini diambil
berdasarkan jumlah biji pada arena Btrack yang langsung berhenti pada lubang besar. Langkah ini diambil membuat giliran permainan berlanjut dengan memilih lubang yang lain pada arena sendiri dan membuat biji pada lumbung bertambah.
(39)
b) Langkah melakukan tembak. Pemilihan langkah ini terjadi apabila biji permainan habis dan jatuh di daerah sendiri dan diseberang lubang tersebut terdapat biji (biji > 0) atau melakukan pemilihan lubang yang dapat melakukan tembak pada arena sendiri. Langkah ini diambil membuat biji yang akan dimasukkan ke lumbung pada setiap giliran menjadi lebih besar.
Pada kriteria pembatas ini, strategi a) menjadi prioritas utama untuk kriteria pembatas ini. Sedangkan strategi b) dilakukan jika strategi a) tidak diperoleh pada saat penelusuran simpul.
Berikut ini adalah pseudocode penerapan algoritma Backtracking pada permainan congklak.
Stop ← false
nodeComp ← 1
While (nodeComp ≤ 7) and (not stop) do
begin
biji ← isi[nodeComp]
if biji = 0 then
nodeComp ← nodeComp+1
else begin
cek ← false
while not cek do
begin
nextNode ← deepNode(biji,nodeComp)
if nextNode = L then begin
stop ← true
step ← nextNode
end
else if deep ≤ 10 then
begin
stop ← false
nodeComp ← nextNode
biji ← isi[nextNode]
cek ← false
pointdeep ← isiL
end else begin
cek ← true
nodeComp ← nodeComp+1
stop ← false
end end
(40)
end end
if not found L then max(pointdeep)
Pada pseudocode diatas, dapat dilihat bahwa penelusuran simpul dimulai dari lubang milik Btrack (C1 s.d C7) yaitu nodeComp. Jika isi nodeComp sama dengan nol maka akan dilakukan backtracking menuju nodeComp berikutnya. Jika berisi, maka akan dilakukan penelusuran simpul berikutnya sampai deepNode() ditemukan simpul yang berbiji kosong atau sampai kedalaman 10. Jika ditemukan nextNode sama dengan L, maka penelusuran dihentikan dan simpul tersebut menjadi langkah yang akan diambil Btrack untuk melakukan permainan. Jika tidak, maka langkah yang diambil adalah nodeComp yang memiliki max(pointdeep) yang terbesar.
Berikut ini adalah contoh kasus penelusuran algoritma Backtracking pada permainan congklak.
1. Contoh kasus untuk pemilihan strategi a.
Berikut ini adalah gambar keadaan papan permainan congklak yang dapat dilihat pada Gambar 3.2.
C7 C6 C5 C4 C3 C2 C1
P1 P2 P3 P4 P5 P6 P7
Gambar 3.2 Keadaan papan permainan congklak untuk strategi a
Pada gambar di atas, hasil dari penelusuran algoritma backtracking
adalah memilih lubang C7 karena langkah lubang tersebut langsung menuju lumbung. Hasil penelusurannya dapat dilihat pada Gambar 3.3.
(41)
C1 C2 C3 C4 C5 C6 C7
P2
C1
P3
C2
P4
C3 P5
C4 P6
C5 P7
C6 L
B B B B B B
(1,7) (1,7) (1,7) (1,7) (1,7) (1,7)
(9,8)
(1,7)
(9,8) (9,8) (9,8) (9,8) (9,8)
Gambar 3.3 Pohon penelusuran backtracking untuk hasil C7
2. Contoh kasus untuk pemilihan strategi b.
Berikut ini adalah gambar keadaan papan permainan congklak yang dapat dilihat pada Gambar 3.4.
C7 C6 C5 C4 C3 C2 C1
P1 P2 P3 P4 P5
3 P6 2
P7 1\
Gambar 3.4 Keadaan papan permainan congklak untuk strategi b
Pada gambar di atas, hasil dari penelusuran algoritma backtracking adalah memilih lubang C2 karena langkah lubang tersebut memiliki jumlah poin yang lebih besar dari lubang lainnya. Hasil penelusurannya dapat dilihat pada Gambar 3.5.
(42)
C1 C2 C3 C4 C5 C6 C7 P5 P1 C7 B B (1,8) (1,15) P6 C7 (1,3) C6 C4 C2 P3 P3 P5 P1 C5 P4 C5 (15,6) P6 C7 C6 C4 C2 P2 C2 (3,7) B B B B B P1 (0,6) (1,16) (0,2) (0,2) (1,7) (1,15) (1,5) (0,4) (0,3) (1,9) (1,5) (0,6) (1,16) (0,2) (0,2) (1,8) (0,4) (14,3)
Gambar 3.5 Pohon penelusuran backtracking untuk hasil C2
3.2 Perancangan Sistem
Perancangan sistem yang akan dibahas meliputi perancangan alur permainan pada permainan congklak, perancangan aplikasi permainan dan perancangan antarmuka.
3.2.1 Perancangan Alur Permainan
Pada perancangan alur permainan ini, akan dirancang langkah – langkah bermain pada permainan congklak dengan flowchart berdasarkan peraturan permainan congklak tersebut. Peraturan congklak ini telah dibahas pada bab sebelumnya. Gambar 3.6 berikut adalah gambar flowchart permainan congklak.
(43)
Start
X,Y,i,j,Biji,BijiApemain,BijiAcomp, Langkah,Apemain[],Acomp[],
Amilik[],Alawan[]
Randomize X = Random(99)+1 Y = Random(99)+1
X > Y ?
Langkah = i Biji = Apemain[i]
Amilik[i] = 0 OR Alawan[j] = 0
biji = Amilik[i] j = step Langkah = j Biji = Acomp[j] Amilik[] = Apemain []
Alawan[] = Acomp []
Amilik[] = Acomp[] Alawan[] = Apemain[]
Arena = Amilik ?
biji = lawan[j]
ya tidak
ya
tidak
ya
tidak Bermain()
Tembak()
Abacktracking()
A
(44)
BijiApemain = 0 OR BijiAcomp = 0 ?
SkorPemain > SkorComp
“Pemain Menang”
“Computer Menang”
Giliran = Pemain?
End ya
ya
ya
tidak tidak
tidak HitungSkor()
A
B C
cekbijiArena()
Gambar 3.6 Flowchart Alur Permainan
Keterangan:
X : nilai acak untuk pemain
Y : nilai acak untuk Btrack
i : urutan lubang daerah pemain
j : urutan lubang daerah Btrack
Biji : variabel untuk jumlah biji yang dijalankan.
BijiApemain : jumlah biji pada seluruh lubang pemain BijiAcomp : jumlah biji pada seluruh lubang Btrack
Langkah : variabel untuk langkah yang dijalankan pada permainan
Apemain[] : daerah pemain
Acomp[] : daerah Btrack
Amilik[] : daerah sendiri
(45)
3.2.1.1 Flowchart Abacktracking()
Flowchart ini menggambarkan bagaimana algoritma backtracking dilakukan untuk
mendapatkan langkah yang paling optimal untuk dijalan oleh kecerdasan buatan yaitu Btrack . Gambar 3.7 merupakan flowchart fungsi Abacktracking().
Start
(nodeComp ≤ 7) and (not stop) ?
Stop = false nodeComp = 1
Biji = isi[nodeComp] Stop, nodeComp,isi[],biji,
cek, nextNode, deep,pointdeep
Biji = 0? nodeComp = nodeComp+1
Cek = false
not cek?
nextNode = deepNode(biji,nodeComp)
nextNode = L
Stop = true Cek = true Step = nextNode
Deep ≤ 10 ?
Stop = false nodeComp = nextNode
Biji = isi[nextNode] cek = false Pointdeep = isiL Cek = true
nodeComp = nodeComp + 1 Stop = false Not found L?
Step = Max(pointdeep)
end ya ya ya ya ya tidak tidak tidak tidak tidak tidak ya
Gambar 3.7 Flowchart Abacktracking()
Keterangan:
stop,cek : tipe boolean untuk berhenti
(46)
biji,isi[] : jumlah biji pada lubang
nextNode : simpul selanjutnya
step : langkah yang dipilih
deep : kedalaman penelusuran
L : menyatakan lubang lumbung
3.2.1.2 Flowchart Bermain()
Flowchart ini menggambarkan bagaimana biji congklak didistribusikan dari satu
lubang ke lubang lainnya sesuai banyak biji yang diperoleh. Apabila biji diperoleh habis, maka pendistribusian biji selesai. Gambar 3.8 merupakan flowchart fungsi bermain().
Start
i, j, n, biji
Amilik[i]=Amilik[i]+1 i=i-1 n = biji
i > 0 ?
i = 0 ? Lmilik=Lmilik+1 i=i-1
j=8+I i=i-1
j > 0 ? Alawan[j]=Alawan[j]+1
j = 0 ?
i=7
Alawan[i]=Alawan[i]+1 i=i-1 n=n-1
n = 0 ? end
ya
ya
ya
ya
ya tidak
tidak tidak tidak
tidak
(47)
Keterangan:
N : menyatakan jumlah biji yang dimainkan
Lmilik : menyatakan lumbung yang diisi pada saat bermain
3.2.1.3 Flowchart Tembak()
Flowchart ini menggambarkan proses tembak terjadi pada permainan congklak.
Apabila biji yang dimainkan berakhir pada daerah sendiri dan poinTembak tidak sama dengan nol, maka proses tembak dapat dilakukan. Jika tidak, maka isi biji lumbung tetap. Gambar 3.9 merupakan flowchart untuk proses tembak().
Start
j = 8 – I poinTembak = Alawan[j]
n, dLawan, i, j
n=0 AND NOT dLawan ?
Giliran = pemain?
Lumbung = Lpemain Lumbun= Lcomp
Lumbung = Lumbung + poinTembak + Amilik[i] poinTembak>0?
Lumbung = Lumbung
end
ya
ya
ya
tidak tidak
tidak
(48)
Keterangan:
Lpemain : menyatakan lumbung pemain
Lcomp : menyatakan lumbung Btrack
poinTembak : menyatakan jumlah biji tembak yang terdapat pada arena lawan
3.2.1.4 Flowchart CekbijiArena()
Gambar 3.10 merupakan flowchart untuk proses cekbijiArena(). Proses ini merupakan pengecekan seluruh biji yang terdapat pada lubang kecil baik pada arena pemain maupun arena Btrack. cekbijiArena() berguna untuk menentukan apakah permainan masih berlanjut atau telah berakhir.
Start
Lubang,Apemain[], Acomp[]
BijiApemain = BijiApemain+Apemain[lubang] BjiAcomp = BijiAcomp+Acomp[lubang]
Lubang=1
BijiApemain=0 BijiAcomp=0
Lubang=lubang+1
Lubang ≤ 7?
End ya tidak
(49)
3.2.1.5 Flowchart Hitungskor()
Hitungskor() merupakan fungsi yang berguna untuk menghitung seluruh biji yang dimiliki oleh pemain dan Btrack. Penjumlahan pada fungsi ini meliputi jumlah biji yang terdapat padan masing-masing lumbung dengan jumlah biji yang terdapat pada lubang kecil pada masing-masing arena permainan. Total dari jumlah biji ini akan menjadi skor untuk pemain dan skor untuk Btrack. Gambar 3.11 merupakan flowchart untuk proses Hitungskor().
Start
l,Lpemain,Lcomp
SkorPemain=Lpemain+Apemain[l] l=1
l<=7?
Apemain[l] ≠ 0? l=l+1
SkorComp=Lcomp+Acomp[l] Acomp[l] ≠ 0?
end ya
tidak tidak
tidak
ya ya
(50)
3.2.2 Perancangan Aplikasi Permainan
Perancangan aplikasi permainan merupakan perancangan interaksi apa yang dapat dilakukan pengguna terhadap aplikasi permainan yang dibangun. Aplikasi ini dimulai dengan menampilkan form Utama yang berisikan menu pilihan Mulai Baru, Menu Panduan, Tentang Permainan dan Keluar. Pada setiap pilihan ini, akan memberikan tampilan form-form berikutnya. Aplikasi akan berhenti jika pengguna memilih tombol Keluar. Berikut ini adalah proses yang terjadi pada aplikasi permainan congklak yang dapat dilihat pada Gambar 3.12.
Tampilkan Form Menu
Start
Pilih Menu Mulai Baru ? Tampilkan Form Permainan Congklak Pilih Tombol Main ? Tampilkan Form Undi Giliran Tekan Tombol Acak Tampilkan Pesan Pemenang giliran Bermain Congklak Permainan berakhir Munculkan pesan pemenang Pilih Menu Panduan Permainan ? Pilih Menu Tentang Permainan ? Tampilkan Form Panduan Permainan Tampilkan Form Tentang Permainan Kembali? End Keluar Kembali? Kembali? ya ya ya ya ya tidak tidak tidak tidak tidak tidak tidak ya ya Pilih Tombol History Permainan ? Tampilkan Form History Permainan Kembali? ya tidak tidak ya
(51)
3.2.3 Perancangan Antarmuka
Perancangan antarmuka aplikasi permainan congklak ini terdiri dari beberapa form, yaitu form Utama, form Undi Giliran, form Panduan Permainan, form Tentang Permainan, form History Permainan dan form Arena Permainan. Berikut ini adalah rancangan antarmuka form-form tersebut.
1. Form Utama
Form Utama merupakan form yang pertama kali ditampilkan pada saat aplikasi
dijalankan. Form ini berisikan menu yang dapat dipilih oleh penggunan yaitu Mulai Baru, Panduan Permainan, Tentang Permainan dan Keluar. Rancangan antarmuka form ini dapat dilihat pada Gambar 3.13.
CONGKLAK GAME
Tentang Permainan Panduan Permainan
Keluar Mulai Baru Utama
1
2
3
4
5
Gambar 3.13 Form Utama
Keterangan :
1. Congklak Game merupakan judul aplikasi yang dirancang dengan
menggunakan komponen Tlabel.
2. Mulai baru merupakan tombol menu yang berfungsi untuk menampilkan
form Arena Permainan yang dirancang dengan menggunakan komponen Tbutton.
(52)
3. Panduan permainan merupakan tombol menu yang berfungsi untuk menampilkan form Panduan Permainan yang dirancang dengan menggunakan komponen Tbutton.
4. Tentang permainan merupakan tombol menu yang berfungsi untuk
menampilkan form Tentang Permainan yang dirancang dengan menggunakan komponen Tbutton.
5. Keluar merupakan tombol menu yang berfungsi untuk keluar dari aplikasi yang dirancang dengan menggunakan komponen Tbutton.
2. Form Undi Giliran
Form undi giliran merupakan form yang digunakan untuk melakukan dan
menampilkan pengundian giliran awal permainan. Rancangan antarmuka form ini dapat dilihat pada Gambar 3.14.
Undi Giliran
Acak
Pemain 1 Computer
3 4
5 Btrack2
Gambar 3.14 Form Undi Giliran
Keterangan :
1. Pemain merupakan nama untuk panel bagian pemain yang dirancang
dengan menggunakan komponen Tlabel.
2. Btrack merupakan nama untuk panel bagian Btrack yang dirancang
(53)
3. Komponen Tpanel yang berfungsi untuk menampilkan hasil pengacakan angka pemain.
4. Komponen Tpanel yang berfungsi untuk menampilkan hasil pengacakan
angka Btrack.
5. Acak merupakan tombol yang berfungsi untuk mengacak angka.
Dirancang dengan menggunakan komponen Tbutton.
3. Form Panduan Permainan
Form panduan permainan merupakan form yang berisikan peraturan dan cara
bermain sehingga dapat memberikan informasi kepada pengguna tentang permainan congklak. Rancangan antarmuka form ini dapat dilihat pada Gambar 3.15.
Panduan Permainan
Kembali Main
Peraturan dan Cara Bermain 1
2
3 4
Gambar 3.15 Form Panduan Permainan Keterangan :
1. Peraturan dan Cara Bermain merupakan judul dari form yang dirancang
dengan komponen Tlabel.
2. Komponen Tmemo yang berguna untuk menampilkan informasi peraturan
dan cara bermain.
3. Kembali merupakan tombol yang berguna untuk menampilkan form
(54)
4. Main merupakan tombol yang berguna untuk menampilkan form Arena Permainan dirancang menggunakan komponen Tbutton.
4. Form Tentang Permainan
Form tentang permainan merupakan form yang berisikan informasi mengenai author aplikasi. Rancangan antarmuka form ini dapat dilihat pada Gambar
3.16.
Tentang Permainan
Kembali
1
2
Gambar 3.16 Form Tentang Permainan
Keterangan :
1. Komponen Tmemo yang digunakan untuk menampilkan author aplikasi.
2. Kembali merupakan tombol yang berguna untuk menampilkan form
Utama dirancang menggunakan komponen Tbutton.
5. Form History Permainan
Form history permainan merupakan form yang berisikan informasi mengenai
penelusuran simpul oleh Btrack, langkah yang dipilih oleh pemain dan langkah yang dipilih oleh Btrack. Rancangan antarmuka form ini dapat dilihat pada Gambar 3.17.
(55)
History Permainan
Kembali
Penelusuran langkah 1 Langkah Pemain Langkah computer 2
4 5
6
7
Langkah Btrack3
Gambar 3.17 Form History Permainan Keterangan :
1. Penelusuran langkah merupakan nama untuk komponen Tmemo dibawah
yang dirancang dengan menggunakan komponen Tlabel.
2. Langkah pemain merupakan nama untuk komponen Tmemo dibawah yang
dirancang dengan menggunakan komponen Tlabel.
3. Langkah Btrack merupakan nama untuk komponen Tmemo dibawah yang
dirancang dengan menggunakan komponen Tlabel.
4. Komponen Tmemo yang digunakan untuk menampilkan hasil penelusuran
langkah dengan algoritma backtracking.
5. Komponen Tmemo yang digunakan untuk menampilkan hasil pemilihan
langkah oleh pemain.
6. Komponen Tmemo yang digunakan untuk menampilkan hasil pemilihan
langkah oleh Btrack.
7. Kembali merupakan tombol untuk menampilkan form Arena Permainan.
Dirancang dengan menggunakan komponen Tbutton.
6. Form Arena Permainan
Form arena permainan merupakan form yang digunakan untuk bermain
permainan congklak. Rancangan antarmuka form ini dapat dilihat pada Gambar 3.18.
(56)
Arena Permainan
computer
Pemain Kembali Mulai
2
3
4 5
6 7
History 8 Btrack1
Gambar 3.18 Form Arena Permainan
Keterangan :
1. Btrack merupakan nama untuk panel bagian Btrack yang dirancang
dengan menggunakan komponen Tlabel.
2. Komponen Tpanel yang digunakan untuk menampilkan jumlah biji yang
diambil pada arena Btrack.
3. Papan congklak yang dirancang dengan menggunakan komponen Timage.
4. Komponen Tpanel yang digunakan untuk menampilkan jumlah biji yang
diambil pada arena pemain.
5. Pemain merupakan nama untuk panel bagian pemain yang dirancang
dengan menggunakan komponen Tlabel.
6. Kembali merupakan tombol untuk menampilkan form Arena Permainan.
Dirancang dengan menggunakan komponen Tbutton.
7. Mulai merupakan tombol yang berfungsi menampilkan form Undi Giliran. Dirancang dengan menggunakan komponen Tbutton.
(57)
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis Kebutuhan Sistem
Pada analisis kebutuhan sistem ini, akan dilakukan analisis terhadap arena permainan dan analisis algoritma.
3.1.1 Analisis Arena Permainan
Pada aplikasi yang akan dibangun, permainan congklak ini akan dimainkan oleh dua pihak, yaitu seorang pengguna yang dinamakan dengan pemain dan sebuah kecerdasan buatan yang pada aplikasi ini dinamakan dengan Btrack.
Arena permainan pada papan congklak ini akan terbagi atas 3 daerah, yaitu: daerah permainan yang terdiri dari daerah permainan pemain dan daerah permainan Btrack serta daerah target yaitu lumbung pemain dan lumbung Btrack. Hal ini dapat dilihat pada Gambar 3.1.
Apemain[1..7] Acomp[1..7]
Lpemain Lcomp
(58)
Keterangan :
1. Apemain[1..7] : merupakan daerah permainan pemain yang terdiri dari 7 buah lubang. Setiap lubang akan terisi 7 buah biji pada saat awal permainan. Daerah ini digunakan pemain untuk pemilihan langkah permainan dan melakukan tembak.
2. Acomp[1..7] : merupakan daerah permainan Btrack yang terdiri dari 7 buah lubang. Setiap lubang akan terisi 7 buah biji pada saat awal permainan. Daerah ini digunakan Btrack untuk pemilihan langkah permainan dan melakukan tembak. Proses ini nantinya akan menggunakan algoritma
backtracking untuk melakukan pemilihan tersebut.
3. Lpemain : merupakan daerah lumbung atau target pemain. Lubang ini
hanya dapat diisi oleh pemain tersebut. Banyaknya isi pada Lpemain akan menjadi skor untuk si pemain tersebut.
4. Lcomp : merupakan daerah lumbung atau target Btrack. Lubang ini hanya dapat diisi oleh Btrack tersebut. Banyaknya isi pada Lcomputer akan menjadi skor untuk Btrack tersebut.
3.1.2 Analisis Algoritma
Seperti yang telah dipaparkan pada bab sebelumnya, algoritma yang digunakan untuk membangun aplikasi ini adalah algoritma Runut-balik (Backtraking). Algoritma ini nantinya, akan digunakan oleh agen kecerdesan buatan yaitu Btrack untuk memilih langkah permainan.
Pada algoritma Backtracking, ada beberapa properti yang perlu dipertimbangkan yaitu properti solusi persoalan, properti komponen vektor solusi dan properti kriteria pembatas. Berikut ini adalah penjabaran properti-properti tersebut.
(59)
1. Properti solusi persoalan
Properti solusi persoalan merupakan properti yang berisikan simpul-simpul solusi dari persoalan. Pada permainan congklak ini, simpul-simpul persoalan merupakan lubang permainan yang tersedia pada papan congklak. Lubang-lubang tersebut diberi simbol C1 – C7 untuk Lubang-lubang daerah permainan Btrack dan simbol P1 – P7 untuk lubang daerah permainan pemain. Untuk lubang besar atau lumbung diberi simbol L.
S = {C1,C2,C3,C4,C5,C6,C7,P1,P2,P3,P4,P5,P6,P7,L}
2. Properti komponen vektor solusi.
Properti komponen vektor sulusi merupakan parameter yang digunakan untuk mengarahkan penelusuran simpul menuju ke arah solusi. Parameter ini terdiri atas dua, yaitu x dan y. x untuk menyatakan jumlah biji yang diperoleh untuk dimasukkan ke lumbung dan y menyatakan jumlah biji simpul sebelumnya.
3. Properti kriteria pembatas
Properti kriteria pembatas merupakan properti yang berupa fungsi untuk menentukan apakah simpul-simpul mengarah ke solusi. Kriteria pembatas yang diterapkan pada algoritma backtracking ini, mengacu pada strategi yang akan dipakai pada kecerdasan buatan pada permainan congklak. Strategi tersebut, yaitu :
a) Langkah langsung menuju lumbung. Pemilihan langkah ini diambil
berdasarkan jumlah biji pada arena Btrack yang langsung berhenti pada lubang besar. Langkah ini diambil membuat giliran permainan berlanjut dengan memilih lubang yang lain pada arena sendiri dan membuat biji pada lumbung bertambah.
(60)
b) Langkah melakukan tembak. Pemilihan langkah ini terjadi apabila biji permainan habis dan jatuh di daerah sendiri dan diseberang lubang tersebut terdapat biji (biji > 0) atau melakukan pemilihan lubang yang dapat melakukan tembak pada arena sendiri. Langkah ini diambil membuat biji yang akan dimasukkan ke lumbung pada setiap giliran menjadi lebih besar.
Pada kriteria pembatas ini, strategi a) menjadi prioritas utama untuk kriteria pembatas ini. Sedangkan strategi b) dilakukan jika strategi a) tidak diperoleh pada saat penelusuran simpul.
Berikut ini adalah pseudocode penerapan algoritma Backtracking pada permainan congklak.
Stop ← false
nodeComp ← 1
While (nodeComp ≤ 7) and (not stop) do
begin
biji ← isi[nodeComp]
if biji = 0 then
nodeComp ← nodeComp+1
else begin
cek ← false
while not cek do
begin
nextNode ← deepNode(biji,nodeComp)
if nextNode = L then begin
stop ← true
step ← nextNode
end
else if deep ≤ 10 then
begin
stop ← false
nodeComp ← nextNode
biji ← isi[nextNode]
cek ← false
pointdeep ← isiL
end else begin
cek ← true
nodeComp ← nodeComp+1
stop ← false
end end
(61)
end end
if not found L then max(pointdeep)
Pada pseudocode diatas, dapat dilihat bahwa penelusuran simpul dimulai dari lubang milik Btrack (C1 s.d C7) yaitu nodeComp. Jika isi nodeComp sama dengan nol maka akan dilakukan backtracking menuju nodeComp berikutnya. Jika berisi, maka akan dilakukan penelusuran simpul berikutnya sampai deepNode() ditemukan simpul yang berbiji kosong atau sampai kedalaman 10. Jika ditemukan nextNode sama dengan L, maka penelusuran dihentikan dan simpul tersebut menjadi langkah yang akan diambil Btrack untuk melakukan permainan. Jika tidak, maka langkah yang diambil adalah nodeComp yang memiliki max(pointdeep) yang terbesar.
Berikut ini adalah contoh kasus penelusuran algoritma Backtracking pada permainan congklak.
1. Contoh kasus untuk pemilihan strategi a.
Berikut ini adalah gambar keadaan papan permainan congklak yang dapat dilihat pada Gambar 3.2.
C7 C6 C5 C4 C3 C2 C1
P1 P2 P3 P4 P5 P6 P7
Gambar 3.2 Keadaan papan permainan congklak untuk strategi a
Pada gambar di atas, hasil dari penelusuran algoritma backtracking
adalah memilih lubang C7 karena langkah lubang tersebut langsung menuju lumbung. Hasil penelusurannya dapat dilihat pada Gambar 3.3.
(62)
C1 C2 C3 C4 C5 C6 C7
P2
C1
P3
C2
P4
C3 P5
C4 P6
C5 P7
C6 L
B B B B B B
(1,7) (1,7) (1,7) (1,7) (1,7) (1,7)
(9,8)
(1,7)
(9,8) (9,8) (9,8) (9,8) (9,8)
Gambar 3.3 Pohon penelusuran backtracking untuk hasil C7
2. Contoh kasus untuk pemilihan strategi b.
Berikut ini adalah gambar keadaan papan permainan congklak yang dapat dilihat pada Gambar 3.4.
C7 C6 C5 C4 C3 C2 C1
P1 P2 P3 P4 P5
3 P6 2
P7 1\
Gambar 3.4 Keadaan papan permainan congklak untuk strategi b
Pada gambar di atas, hasil dari penelusuran algoritma backtracking adalah memilih lubang C2 karena langkah lubang tersebut memiliki jumlah poin yang lebih besar dari lubang lainnya. Hasil penelusurannya dapat dilihat pada Gambar 3.5.
(63)
C1 C2 C3 C4 C5 C6 C7 P5 P1 C7 B B (1,8) (1,15) P6 C7 (1,3) C6 C4 C2 P3 P3 P5 P1 C5 P4 C5 (15,6) P6 C7 C6 C4 C2 P2 C2 (3,7) B B B B B P1 (0,6) (1,16) (0,2) (0,2) (1,7) (1,15) (1,5) (0,4) (0,3) (1,9) (1,5) (0,6) (1,16) (0,2) (0,2) (1,8) (0,4) (14,3)
Gambar 3.5 Pohon penelusuran backtracking untuk hasil C2
3.2 Perancangan Sistem
Perancangan sistem yang akan dibahas meliputi perancangan alur permainan pada permainan congklak, perancangan aplikasi permainan dan perancangan antarmuka.
3.2.1 Perancangan Alur Permainan
Pada perancangan alur permainan ini, akan dirancang langkah – langkah bermain pada permainan congklak dengan flowchart berdasarkan peraturan permainan congklak tersebut. Peraturan congklak ini telah dibahas pada bab sebelumnya. Gambar 3.6 berikut adalah gambar flowchart permainan congklak.
(64)
Start
X,Y,i,j,Biji,BijiApemain,BijiAcomp, Langkah,Apemain[],Acomp[],
Amilik[],Alawan[]
Randomize X = Random(99)+1 Y = Random(99)+1
X > Y ?
Langkah = i Biji = Apemain[i]
Amilik[i] = 0 OR Alawan[j] = 0
biji = Amilik[i] j = step Langkah = j Biji = Acomp[j] Amilik[] = Apemain []
Alawan[] = Acomp []
Amilik[] = Acomp[] Alawan[] = Apemain[]
Arena = Amilik ?
biji = lawan[j]
ya tidak
ya
tidak
ya
tidak Bermain()
Tembak()
Abacktracking()
A
(65)
BijiApemain = 0 OR BijiAcomp = 0 ?
SkorPemain > SkorComp
“Pemain Menang”
“Computer Menang”
Giliran = Pemain?
End ya
ya
ya
tidak tidak
tidak HitungSkor()
A
B C
cekbijiArena()
Gambar 3.6 Flowchart Alur Permainan
Keterangan:
X : nilai acak untuk pemain
Y : nilai acak untuk Btrack
i : urutan lubang daerah pemain
j : urutan lubang daerah Btrack
Biji : variabel untuk jumlah biji yang dijalankan.
BijiApemain : jumlah biji pada seluruh lubang pemain BijiAcomp : jumlah biji pada seluruh lubang Btrack
Langkah : variabel untuk langkah yang dijalankan pada permainan
Apemain[] : daerah pemain
Acomp[] : daerah Btrack
Amilik[] : daerah sendiri
(66)
3.2.1.1 Flowchart Abacktracking()
Flowchart ini menggambarkan bagaimana algoritma backtracking dilakukan untuk
mendapatkan langkah yang paling optimal untuk dijalan oleh kecerdasan buatan yaitu Btrack . Gambar 3.7 merupakan flowchart fungsi Abacktracking().
Start
(nodeComp ≤ 7) and (not stop) ?
Stop = false nodeComp = 1
Biji = isi[nodeComp] Stop, nodeComp,isi[],biji,
cek, nextNode, deep,pointdeep
Biji = 0? nodeComp = nodeComp+1
Cek = false
not cek?
nextNode = deepNode(biji,nodeComp)
nextNode = L
Stop = true Cek = true Step = nextNode
Deep ≤ 10 ?
Stop = false nodeComp = nextNode
Biji = isi[nextNode] cek = false Pointdeep = isiL Cek = true
nodeComp = nodeComp + 1 Stop = false Not found L?
Step = Max(pointdeep)
end ya ya ya ya ya tidak tidak tidak tidak tidak tidak ya
Gambar 3.7 Flowchart Abacktracking()
Keterangan:
stop,cek : tipe boolean untuk berhenti
(67)
biji,isi[] : jumlah biji pada lubang
nextNode : simpul selanjutnya
step : langkah yang dipilih
deep : kedalaman penelusuran
L : menyatakan lubang lumbung
3.2.1.2 Flowchart Bermain()
Flowchart ini menggambarkan bagaimana biji congklak didistribusikan dari satu
lubang ke lubang lainnya sesuai banyak biji yang diperoleh. Apabila biji diperoleh habis, maka pendistribusian biji selesai. Gambar 3.8 merupakan flowchart fungsi bermain().
Start
i, j, n, biji
Amilik[i]=Amilik[i]+1 i=i-1 n = biji
i > 0 ?
i = 0 ? Lmilik=Lmilik+1 i=i-1
j=8+I i=i-1
j > 0 ? Alawan[j]=Alawan[j]+1
j = 0 ?
i=7
Alawan[i]=Alawan[i]+1 i=i-1 n=n-1
n = 0 ? end
ya
ya
ya
ya
ya tidak
tidak tidak tidak
tidak
(68)
Keterangan:
N : menyatakan jumlah biji yang dimainkan
Lmilik : menyatakan lumbung yang diisi pada saat bermain
3.2.1.3 Flowchart Tembak()
Flowchart ini menggambarkan proses tembak terjadi pada permainan congklak.
Apabila biji yang dimainkan berakhir pada daerah sendiri dan poinTembak tidak sama dengan nol, maka proses tembak dapat dilakukan. Jika tidak, maka isi biji lumbung tetap. Gambar 3.9 merupakan flowchart untuk proses tembak().
Start
j = 8 – I poinTembak = Alawan[j]
n, dLawan, i, j
n=0 AND NOT dLawan ?
Giliran = pemain?
Lumbung = Lpemain Lumbun= Lcomp
Lumbung = Lumbung + poinTembak + Amilik[i] poinTembak>0?
Lumbung = Lumbung
end
ya
ya
ya
tidak tidak
tidak
(69)
Keterangan:
Lpemain : menyatakan lumbung pemain
Lcomp : menyatakan lumbung Btrack
poinTembak : menyatakan jumlah biji tembak yang terdapat pada arena lawan
3.2.1.4 Flowchart CekbijiArena()
Gambar 3.10 merupakan flowchart untuk proses cekbijiArena(). Proses ini merupakan pengecekan seluruh biji yang terdapat pada lubang kecil baik pada arena pemain maupun arena Btrack. cekbijiArena() berguna untuk menentukan apakah permainan masih berlanjut atau telah berakhir.
Start
Lubang,Apemain[], Acomp[]
BijiApemain = BijiApemain+Apemain[lubang] BjiAcomp = BijiAcomp+Acomp[lubang]
Lubang=1
BijiApemain=0 BijiAcomp=0
Lubang=lubang+1
Lubang ≤ 7?
End ya tidak
(70)
3.2.1.5 Flowchart Hitungskor()
Hitungskor() merupakan fungsi yang berguna untuk menghitung seluruh biji yang dimiliki oleh pemain dan Btrack. Penjumlahan pada fungsi ini meliputi jumlah biji yang terdapat padan masing-masing lumbung dengan jumlah biji yang terdapat pada lubang kecil pada masing-masing arena permainan. Total dari jumlah biji ini akan menjadi skor untuk pemain dan skor untuk Btrack. Gambar 3.11 merupakan flowchart untuk proses Hitungskor().
Start
l,Lpemain,Lcomp
SkorPemain=Lpemain+Apemain[l] l=1
l<=7?
Apemain[l] ≠ 0? l=l+1
SkorComp=Lcomp+Acomp[l] Acomp[l] ≠ 0?
end ya
tidak tidak
tidak
ya ya
(71)
3.2.2 Perancangan Aplikasi Permainan
Perancangan aplikasi permainan merupakan perancangan interaksi apa yang dapat dilakukan pengguna terhadap aplikasi permainan yang dibangun. Aplikasi ini dimulai dengan menampilkan form Utama yang berisikan menu pilihan Mulai Baru, Menu Panduan, Tentang Permainan dan Keluar. Pada setiap pilihan ini, akan memberikan tampilan form-form berikutnya. Aplikasi akan berhenti jika pengguna memilih tombol Keluar. Berikut ini adalah proses yang terjadi pada aplikasi permainan congklak yang dapat dilihat pada Gambar 3.12.
Tampilkan Form Menu
Start
Pilih Menu Mulai Baru ? Tampilkan Form Permainan Congklak Pilih Tombol Main ? Tampilkan Form Undi Giliran Tekan Tombol Acak Tampilkan Pesan Pemenang giliran Bermain Congklak Permainan berakhir Munculkan pesan pemenang Pilih Menu Panduan Permainan ? Pilih Menu Tentang Permainan ? Tampilkan Form Panduan Permainan Tampilkan Form Tentang Permainan Kembali? End Keluar Kembali? Kembali? ya ya ya ya ya tidak tidak tidak tidak tidak tidak tidak ya ya Pilih Tombol History Permainan ? Tampilkan Form History Permainan Kembali? ya tidak tidak ya
(72)
3.2.3 Perancangan Antarmuka
Perancangan antarmuka aplikasi permainan congklak ini terdiri dari beberapa form, yaitu form Utama, form Undi Giliran, form Panduan Permainan, form Tentang Permainan, form History Permainan dan form Arena Permainan. Berikut ini adalah rancangan antarmuka form-form tersebut.
1. Form Utama
Form Utama merupakan form yang pertama kali ditampilkan pada saat aplikasi
dijalankan. Form ini berisikan menu yang dapat dipilih oleh penggunan yaitu Mulai Baru, Panduan Permainan, Tentang Permainan dan Keluar. Rancangan antarmuka form ini dapat dilihat pada Gambar 3.13.
CONGKLAK GAME
Tentang Permainan Panduan Permainan
Keluar Mulai Baru Utama
1
2
3
4
5
Gambar 3.13 Form Utama
Keterangan :
1. Congklak Game merupakan judul aplikasi yang dirancang dengan
menggunakan komponen Tlabel.
2. Mulai baru merupakan tombol menu yang berfungsi untuk menampilkan
form Arena Permainan yang dirancang dengan menggunakan komponen Tbutton.
(1)
5.2 Saran
Berikut ini adalah saran-saran untuk pengembangan lebih lanjut terhadap penelitian skripsi ini:
1. Melakukan pengujian kompleksitas algoritma backtracking sebagai agen kecerdasan buatan yang diterapkan pada permainan congklak.
2. Menggabungkan algoritma backtracking dengan algoritma heuristik lainnya agar diperoleh agen kecerdasan buatan yang lebih baik.
3. Membandingkan algoritma backtracking dengan algoritma lainnya untuk mengetahui optimasi algoritma ini sebagai kecerdasan buatan pada permainan congklak.
4. Aplikasi permainan congklak ini memiliki kekurangan dalam hal animasi yang mendapatkan persentase 60%. Untuk itu, aplikasi ini perlu dikembangkan dengan bahasa pemrograman yang berbasis multimedia seperti Macromedia Flash untuk menerapkan animasi dan suara sehingga permainan congklak menjadi lebih menarik.
5. Aplikasi permainan congklak perlu dikembangkan fitur yang mendukung multiplayer yang personal maupun berbasis client server.
6. Aplikasi permainan congklak perlu dikembangkan pada media lain seperti handphone agar pengenalan terhadap permainan ini menjadi lebih luas.
(2)
DAFTAR PUSTAKA
Desiani, Anita dan Arhami, Muhammad. 2006. Konsep Kecerdasan Buatan. Yogyakarta: Penerbit Andi.
Hakim, Zulfikar. 2007. Penyelesaian Permainan Bantumi dengan Algoritma Expand, Mark and Select: 1 Mei 2010.
Hariyanto, Bambang. 2004. Rekayasa Sistem Berorientasi Objek. Bandung: Penerbit Informatika.
Hayati, A. K. 2007. Beberapa Implementasi Algoritma Greedy dalam Permainan Congklak : http://www.informatika.org /~rinaldi /Stmik / 2006-2007 / Makalah_2007/ MakalahSTMIK2007-049.pdf
Jantra Jurnal Sejarah dan Budaya.
diakses pada tanggal 1 Mei 2010.
Kristanto, Andri. 2004. Kecerdasan Buatan. Yogyakarta: Graha Ilmu.
Kusumadewi, Sri dan Purnomo, Hari. 2005. Penyelesaian Masalah Optimasi dengan Teknik – Teknik Heuristik.Yogyakarta: Graha Ilmu.
Modul Pengenalan Game.
Munir, Rinaldi. 2004. Bahan Kuliah ke- 9 : Algoritma Runut – Balik (Backtracking): kur2003.if.itb.ac.id/file/trans-Bahan%20Kuliah%20ke-9.DOC
Munir, Rinaldi. 2004. Bahan Kuliah ke- 10 : Algoritma Runut – Balik (Backtracking) Lanjutan:
diakses pada tanggal 1 Mei 2010.
kur2003.if.itb.ac.id/file/trans-Bahan%20Kuliah%20ke-10.DOC
(3)
LAMPIRAN. PERTANYAAN DAN HASIL KUISONER
Pertanyaan Kuisoner
Aspek Antarmuka
No. Sasaran Pertanyaan Hasil Penilaian Amat
Baik
Baik Cukup Tidak Baik 1. Desain tampilan aplikasi
2. Warna papan dan biji permainan 3. Tampilan papan dan biji
permainan.
4. Ketepatan warna dan ukuran tulisan
5. Tampilan animasi pada game
6. Tampilan message dialog.
Aspek Penggunaan Aplikasi
No. Sasaran Pertanyaan Hasil Penilaian Amat
Baik
Baik Cukup Tidak Baik 1. Kemudahan menjalankan
(4)
Aspek Penilaian terhadap Aplikasi
No. Sasaran penilaian Hasil Penilaian Amat
Baik
Baik Cukup Tidak Baik 1. Ukuran papan permainan.
2. Waktu yang dibutuhkan Btrack untuk melangkah. 3. Tingkat kesulitan langkah
yang diambil oleh Btrack. 4. Ketertarikan terhadap
aplikasi.
Aspek Kehandalan Aplikasi
No. Posisi Awal Permainan Menang Kalah Seri 1. Pemain bermain terlebih dahulu
(5)
(6)