BAB 3 METODOLOGI 3.1. Analisis Kebutuhan dan Masalah Analisis Kebutuhan

dokumen-dokumen yang mirip
BAB 1 PENDAHULUAN 1.1. Latar Belakang

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN CONGKLAK

Pencarian Solusi Optimal dalam Permainan Congklak dengan Program Dinamis

BAB I PENDAHULUAN Latar Belakang Masalah

PERANCANGAN PENERAPAN ALGORITMA NEGAMAX ALPHA BETA PRUNING PADA PERMAINAN OTHELLO NASKAH PUBLIKASI. diajukan oleh Bayu Trisna Pratama

Combinatorial Game Theory, Game Tree, dan Intelegensia Buatan

UKDW BAB 1 PENDAHULUAN Latar Belakang

BAB I PENDAHULUAN. sangat diandalkan selama kurang lebih 70 tahun lamanya (Mahfudz, 2013:18).

BAB III ANALISA DAN PERANCANGAN

Perbandingan Penerapan Algoritma Minimax Dengan Algoritma Alpha-Beta Pruning Pada Permainan Othello

BAB 3 ANALISIS ALGORITMA

APLIKASI GAME TIC TAC TOE 6X6 BERBASIS ANDROID MENGGUNAKAN ALGORITMA MINIMAX DAN HEURISTIC EVALUATION

BAB III METODE PENELITIAN. Metode penelitian yang digunakan adalah dengan cara mencoba

Rancangan Permainan Othello Berbasis Android Menggunakan Algoritma Depth-First Search

Algoritma Backtracking Pada Permainan Peg Solitaire

KI Kecerdasan Buatan Materi 6: Pencarian dgn. Lihat Status Lawan (Adversarial Search)

Penerapan Algoritma Greedy dalam Permainan Tradisional Congklak

UKDW. Bab 1 PENDAHULUAN. 1.1 Latar Belakang Masalah

Implementasi Algoritma Negascout Untuk Permainan Checkers

BAB III METODE PENELITIAN. Berikut langkah-langkah yang dilakukan dalam penelitian ini :

ALGORITMA GREEDY DALAM PERMAINAN DOTS AND BOXES

BAB IV HASIL DAN PENGUJIAN. Perangkat lunak terdiri dari 2 bagian utama, yaitu game tree untuk

BAB I PENDAHULUAN. 1.1 Latar Belakang

BAB 2 LANDASAN TEORI

Implementasi Algoritma Alpha-Beta Pruning pada Permainan Bantumi dengan Berbasis Mobile Android

IMPLEMENTASI ALGORITMA GREEDY BEST FIRST SEARCH PADA APLIKASI PERMAINAN CONGKLAK UNTUK OPTIMASI PEMILIHAN LUBANG DENGAN POLA BERFIKIR DINAMIS

Algoritma Greedy dalam Artificial Intelligence Permainan Tic Tac Toe

BAB III ANALISIS DAN PERANCANGAN

BAB I PENDAHULUAN. Permainan antara manusia melawan komputer menjadi sangat populer

BAB IV IMPLEMENTASI DAN PENGUJIAN. Perangkat Keras Yang Digunakan Dalam Pembuatan

UKDW BAB 1 PENDAHULUAN Latar Belakang

ALGORITMA MINIMAX DALAM PERMAINAN CHECKERS

BAB III ANALISIS MASALAH DAN RANCANGAN PROGRAM

BAB 2 TINJAUAN PUSTAKA

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

Penerapan Algoritma Greedy dalam Permainan Bantumi

ALGORITMA GENETIK SEBAGAI FUNGSI PRUNING ALGORITMA MINIMAX PADA PERMAINAN TRIPLE TRIAD CARD.

BAB I PENDAHULUAN. pada saat ini, maka dari itu banyak fitur-fitur dalam. handphone yang mengandung hiburan. Seperti halnya

IMPLEMENTASI ALGORITMA MINIMAX PADA PERMAINAN CATUR

ALGORITMA MINIMAX PADA GAME ANDROID

Strategi Perancangan Bot Player pada Permainan Tradisional Congklak dengan Algoritma Greedy

BAB I PENDAHULUAN. Dalam beberapa tahun terakhir Artificial Intelligence (AI) atau kecerdasan

BAB I PENDAHULUAN 1.1 Latar Belakang

Analisis Efisiensi Algoritma Alpha Beta Pruning dan MTD(f) pada Connect4

MODIFIKASI METODE BACKTRACKING UNTUK MEMBANTU MENCARI PENYELESAIAN PERMAINAN PEG SOLITAIRE

Algoritma Exhaustive Search Dalam Permainan Congklak

Perancangan dan Pembuatan Kecerdasan Buatan dengan Metode Alpha Beta Pruning pada Aplikasi Permainan Kartu Capsa

Penggunaan Algoritma Greedy untuk menyelesaikan Permainan Othello

Untuk dapat memainkan game Ultang Dynasty, pemain harus menginstall flash player terlebih dahulu.

BAB I PENDAHULUAN. O, yang bergiliran menandai ruang dalam kotak berukuran 3 3. Pemain yang

BAB IV IMPLEMENTASI DAN PENGUJIAN

PEMBUATAN APLIKASI PERMAINAN OTHELLO 16X16 BERBASIS DESKTOP DENGAN ALGORITMA ALPHA BETA PRUNNING

Permainan Papan Strategi Menggunakan Algoritma Minimax

BAB 2 LANDASAN TEORI

PEMBUATAN GAME CONGKLAK DENGAN ALGORITMA ALPHA BETA PRUNNING BERBASIS ANDROID NASKAH PUBLIKASI. diajukan oleh Nofarianto Sihite

Berikut merupakan langkah langkah instalasi game Di sini ada Hantu. 1. Copyfile Di sini ada Hantu.xap ke dalam folder aplikasi Windows Phone

BAB 3 PERANCANGAN PROGRAM APLIKASI

BAB 3 ANALISIS DAN PERANCANGAN PROGRAM

BAB III ANALISIS DAN PERANCANGAN SISTEM

Penerapan Algoritma Greedy untuk Permainan Flood It

BAB 2 LANDASAN TEORI 2.1. Artificial Intelligence

BAB IV IMPLEMENTASI DAN PENGUJIAN

Penentuan Keputusan dalam Permainan Gomoku dengan Program Dinamis dan Algoritma Greedy

BAB I PENDAHULUAN. Permainan papan atau biasa disebut dengan Board Games hampir tidak

SOLUSI ALGORITMA BACKTRACKING DALAM PERMAINAN KSATRIA MENYEBRANG KASTIL

OLIMPIADE SAINS NASIONAL VII

ANALISIS ALGORITMA MINIMAX DENGAN OPTIMASI ALPHA BETA PRUNIGN PADA PERMAINAN FIVE IN ROW

Penggunaan Algoritma Greedy untuk Mencari Solusi Optimal dalam Permainan Brick Breaker

BAB 4 IMPLEMENTASI DAN PENGUJIAN

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

Aplikasi Algoritma Greedy untuk Pergerakan Musuh pada Permainan Pac-Man

BAB III ANALISIS MASALAH DAN RANCANGAN PROGRAM

UKDW BAB 1 PENDAHULUAN. 1.1 Latar Belakang Masalah

Penerapan Algoritma Greedy dalam Permainan Othello

TEKNIK PENYELESAIAN MASALAH BERDASARKAN AI

Penerapan Algoritma Greedy untuk Permainan Halma

Oleh Lukman Hariadi

BAB III PERANCANGAN GAME

BAB III METODE PENELITIAN

Penyelesaian Permainan Bantumi dengan Algoritma Expand, Mark and Select

Penggunaan Algoritma Greedy untuk Menyelesaikan Permainan UNO Kartu (Klasik)

Implementasi Permainan Reversi menggunakan Penelusuran BFS dengan Konsep Algoritma MinMax

Penerapan Algoritma Negamax Dengan Alpha-Beta Pruning pada Permainan Connect Four

BAB 1 PENDAHULUAN. Hal 1. 1 Dan W. Patterson, Introduction to Artificial Intelligence and Expert System, Prentice Hall, 1990,

Penyelesaian Permainan 3 missionaries and 3 cannibals Dengan Algoritma Runut-Balik

Penggunaan Graf dalam Pemodelan Matematis Permainan Delapan Jari

ISSN: X 39 SIRKUIT HAMILTON DALAM PERMAINAN CONGKLAK

Penerapan Algoritma Greedy Pada Game Tower Defense: Tower of Greece

BAB III ANALISIS DAN PERANCANGAN SISTEM

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

IKI30320 Kuliah 8 26 Sep Ruli Manurung. Game playing. Strategi optimal. Bekerja cepat Cutoff Tree pruning. State of the art.

ABSTRAK. Kata kunci: Kartu, Domino, Poin, Smartphone, Android

Penggunaan Algoritma DFS dalam Pencarian Strategi Permainan Catur

BAB 3 PERANCANGAN PROGRAM. dari OOP (Object Oriented Programming) di mana dalam prosesnya, hal-hal

PEMBUATAN PERMAINAN DAKON VIRTUAL

BAB 1 PENDAHULUAN. 1.1 Latar Belakang

BAB III ANALISA PERANCANGAN DAN PEMODELAN SISTEM

Masalah, Ruang Masalah dan Pencarian

ALGORITMA MINIMAX SEBAGAI PENGAMBIL KEPUTUSAN DALAM GAME TIC-TAC-TOE

BAB I. PERSYARATAN PRODUK

Transkripsi:

BAB 3 METODOLOGI 3.1. Analisis Kebutuhan dan Masalah 3.1.1. Analisis Kebutuhan Saat ini banyak permainan yang seharusnya dimainkan oleh dua orang atau lebih yang sudah dilengkapi dengan sistem komputer cerdas. Maksud dari komputer cerdas adalah komputer yang sudah dilengkapi dengan Artificial Intelligence yang dapat berpikir dan mengambil keputusan. Untuk dapat menghasilkan mesin atau komputer yang demikian, maka diterapkan sebuah algoritma. Algoritma dapat digunakan untuk memecahkan masalah komputasi (Cormen, Leiserson, Rivest dan Stein, 2009: 5). Terdapat banyak jenis algoritma dalam Artificial Intelligence, salah satunya yaitu algoritma pencarian. Melalui algoritma pencarian ini akan ditemukan suatu teknik pemecahan masalah yang terbaik. Dari beberapa algoritma yang ada, tentu terdapat kelebihan dan kelemahan. Untuk mengetahui kelebihan dan kelemahan itu harus dilakukan perbandingan antara algoritma yang satu dengan yang lain. Pada kasus ini perbandingan akan dilakukan pada algoritma greedy dan minimax. Perbandingan algoritma ini akan dilihat dari segi waktu dan hasil yang diperoleh. Perbandingan kedua algoritma tersebut membutuhkan sebuah media. Media yang dipilih untuk penerapan kedua algoritma tersebut adalah permainan Congklak. Sebenarnya penerapan algoritma pencarian sudah dilakukan sejak abad ke-18 yaitu pada permainan catur (Buchanan, 2005: 54). Namun karena permainan catur sudah terlalu umum dalam penerapan Artificial Intelligence, maka untuk kali ini permainan Congklak yang dipilih sebagai media penerapan tersebut. Hal ini juga karena Congklak merupakan permainan tradisional yang perlu diteruskan 38

39 kepada generasi muda untuk dijaga eksistensinya (Koran Republika, 2013). 3.1.2. Analisis Masalah Penerapan algoritma dalam sebuah aplikasi sudah sangat banyak. Namun perbandingan algoritma yang berbeda dalam sebuah aplikasi yang sama masih jarang dijumpai. Beberapa contoh penerapan algoritma dalam sebuah aplikasi diantaranya adalah : penerapan random, algoritma greedy, algoritma minimax, dan algoritma alpha-beta pada permainan Dots-and-Boxes penerapan algoritma greedy pada permainan Mancala penerapan algoritma alpha-beta pruning pada permainan Othello penerapan algoritma minimax dan alpha-beta pada permainan Tic-Tac-Toe penerapan algoritma greedy pada permainan Congklak. Hasil yang diperoleh dari tiap penerapan tersebut tentunya berbedabeda dan contohnya adalah hasil dari penerapan random, algoritma greedy, algoritma minimax, dan algoritma alpha-beta pada permainan Dots-and-Boxes yang dibuat oleh O Flaherty dan Wu (2012) serta penerapan algoritma greedy pada permainan Congklak yang dibuat oleh Hermawan (2012). Dari penerapan algoritma pada permainan Dots-and-Boxes ditunjukkan bahwa algoritma minimax lebih baik dibandingkan greedy. Namun, hasil tersebut diperoleh berdasarkan hasil akhir yang dicapai tanpa melihat dari aspek lainnya. Serta hasil dari penerapan algoritma greedy pada permainan Congklak yang dikatakan oleh Hermawan (2012) bahwa algoritma greedy merupakan algoritma yang cukup baik untuk diterapkan dalam permainan Congklak. Dengan kata lain, dapat disimpulkan bahwa masih terdapat algoritma lain yang lebih baik dibandingkan dengan algoritma greedy. Oleh karena itu, untuk membuktikan penelitian yang telah dilakukan oleh O Flaherty dan Wu (2012) tentang minimax lebih baik daripada

40 greedy pada permainan Dots-and-Boxes, serta untuk mengetahui algoritma yang lebih baik daripada greedy pada Congklak, maka dilakukan penelitian lebih lanjut mengenai algoritma terbaik yang diterapkan umumnya pada permainan dua player. Algoritma terbaik ini ditentukan dari segi hasil yang diperoleh dan waktu berpikir. Aplikasi permainan dua player yang akan diterapkan kedua algoritma tersebut yaitu Congklak. 3.2. Kerangka Berpikir Sebelum diterapkannya algoritma greedy dan minimax, yang pertama dilakukan adalah membuat aplikasi permainan Congklak. User Interface untuk Congklak dibuat dengan menggunakan HTML, Javascript dan CSS. Setelah User Interface selesai dibuat, selanjutnya diterapkan menggunakan algoritma greedy dan minimax tersebut. Pada aplikasi ini terdapat tiga menu, yaitu AI melawan AI, single player dan multi player. Dalam AI melawan AI terdapat submenu greedy melawan greedy, minimax melawan minimax dan minimax melawan greedy. Dalam single player, pemain dapat memilih ingin bermain melawan greedy maupun minimax. Sedangkan pada menu multi player, pemain dapat bermain dengan pemain lainnya. Perbedaan jalannya algoritma greedy dan minimax pada permainan Congklak yaitu greedy tidak melakukan pengecekan untuk langkah selanjutnya, jadi hanya untuk langkah sekarang yang akan diambil. Sedangkan minimax melakukan pengecekan untuk tiap langkah yang mungkin diambil termasuk langkah musuh. Untuk memperjelas perbedaan tersebut digambarkan pada flowchart di bawah ini :

41 3.2.1. Greedy 9. Selesai Salah 1. M ulai 2. Cek ketersediaan lubang Benar 3. Cek lubang kosong Salah 4. M enjalankan perm ainan Benar Salah 8. M em bandingkan hasil Salah 6. Cek tem bak lubang Benar 5. Langkah terakhir jatuh pada lubang kosong Benar 7. Lakukan tem bak lubang Gambar 3.1. Flowchart Greedy 41

42 3.2.2. Minimax 13. Selesai Salah Salah 1. M ulai 2. Cek ketersediaan lubang Benar 3. Cek lubang kosong Salah 4. M enjalankan Perm ainan 5. Cek langkah terakhir jatuh pada lubang kosong Benar Benar 12. M em bandingkan hasil 7. M enjalankan giliran baru Benar 6.Cek langkah terakhir jatuh pada lubang besar Benar Salah 11. M enjalankan giliran m usuh Salah 10. Cek lubang m usuh kosong Salah 8. Cek tem bak lubang 9. Lakukan tem bak lubang Benar Gambar 3.2. Flowchart Minimax 42

43 3.3. Metodologi 3.3.1. Greedy Dilihat dari gambar 3.1., berikut penjelasan urutan jalan algoritma greedy yang diterapkan dalam permainan Congklak dimulai dari proses awal permainan pada langkah pertama, proses berpikir pada langkah kedua sampai ketujuh, proses membandingkan hasil pada langkah kedelapan, hingga pengambilan langkah pada langkah sembilan. 1. Mulai Fungsi Greedy Artificial Intelligence dipanggil dan dijalankan oleh script. Pemanggilan ini dilakukan ketika Greedy Artificial Intelligence melakukan giliran jalan. 2. Cek ketersediaan lubang Proses ini merupakan pengecekan yang dilakukan untuk melihat apakah lubang yang berada pada posisi Greedy Artificial Intelligence masih dapat dipilih untuk ditelusuri. Apabila lubang yang dicek ada pada posisi Greedy Artificial Intelligence, proses dilanjutkan ke langkah berikutnya, jika sebaliknya maka proses akan selesai. 3. Cek lubang kosong Proses pengecekan dilanjutkan dengan melihat apakah lubang yang sedang ditelusuri dalam kondisi kosong atau tidak. Jika kosong, maka proses akan berhenti dan kembali ke langkah kedua (cek ketersediaan lubang) untuk penelusuran lubang selanjutnya. Apabila tidak kosong, maka proses akan dilanjutkan. 4. Menjalankan permainan Pada proses ini permainan dijalankan secara virtual tanpa menyebabkan perubahan kondisi pada papan permainan. Permainan dilakukan dengan mengambil biji yang ada pada lubang kecil yang sedang ditelusuri. Biji diambil kemudian dijalankan searah jarum jam. Biji diletakkan satu per satu pada tiap lubang hingga biji habis.

44 5. Cek langkah terakhir jatuh pada lubang kosong Proses ini melihat apakah biji terakhir pada langkah pemain berada di dalam lubang kecil dan kosong. Jika kedua syarat terpenuhi, maka akan dilakukan pengecekan untuk tembak lubang. Jika tidak, maka permainan akan dijalankan kembali. 6. Cek tembak lubang Proses ini mengecek apakah pemain bisa melakukan tembak lubang atau tidak. Syarat dari tembak lubang adalah: a. telah melakukan putaran minimal sebanyak satu kali b. berhenti di lubang yang kosong c. berada di sisi pemain d. lubang di depan tidak kosong Jika semua syarat terpenuhi, maka pemain dapat melakukan tembak lubang. Jika tidak, hasil akan disimpan dan dilakukan pembandingan terhadap hasil yang telah ditelusuri sebelumnya. 7. Lakukan tembak lubang Proses ini akan mengambil semua biji pada lubang lawan yang terletak di seberang lubang dimana biji terakhir diletakkan, kemudian menaruhnya ke dalam lubang besar. 8. Membandingkan hasil Proses ini akan membandingkan hasil yang telah didapat dari hasil permainan yang telah dijalankan dengan hasil terbaik. Hasil terbaik didapat dari banyak biji yang masuk ke lubang besar. Jika hasil terbaik masih kosong, maka hasil permainan akan dipindahkan ke dalam hasil terbaik. Jika tidak kosong, maka akan membandingkan hasil yang mana yang lebih menguntungkan bagi pemain dengan cara menghitung selisih jumlah lubang besar pada pemain dan pada musuh. Jika selisihnya lebih besar daripada selisih hasil terbaik, maka hasil permainan akan digantikan dengan hasil terbaik yang baru. Jika selisihnya sama, maka dilakukan proses menghitung jumlah biji pada lubang kecil musuh. Kemudian, akan diambil jumlah biji yang paling sedikit. Jika selisihnya lebih kecil, maka hasil permainan tidak diambil atau diabaikan.

45 9. Selesai Proses secara virtual selesai dan didapatkan lubang dengan hasil terbaik yang dipilih untuk dijalankan. 3.3.2. Minimax Dilihat dari gambar 3.2., berikut penjelasan urutan jalan algoritma minimax yang diterapkan dalam permainan Congklak dimulai dari proses awal permainan pada langkah pertama, proses berpikir langkah sendiri pada langkah kedua sampai kesembilan, proses berpikir langkah musuh pada langkah sepuluh dan sebelas, proses membandingkan hasil pada langkah dua belas, hingga pengambilan langkah pada langkah tiga belas. 1. Mulai Fungsi Minimax Artificial Intelligence dipanggil dan dijalankan oleh script. Pemanggilan ini dilakukan ketika Minimax Artificial Intelligence melakukan giliran jalan. 2. Cek ketersediaan lubang Proses ini merupakan pengecekan yang dilakukan untuk melihat apakah lubang yang berada pada posisi Minimax Artificial Intelligence masih dapat dipilih untuk ditelusuri. Apabila lubang yang dicek ada pada posisi Minimax Artificial Intelligence, proses dilanjutkan ke langkah berikutnya, jika sebaliknya maka proses akan selesai. 3. Cek lubang kosong Proses pengecekan dilanjutkan dengan melihat apakah lubang yang sedang ditelusuri dalam kondisi kosong atau tidak. Jika kosong, maka proses akan berhenti dan kembali ke langkah kedua (cek ketersediaan lubang) untuk penelusuran lubang selanjutnya. Apabila tidak kosong, maka proses akan dilanjutkan. 4. Menjalankan permainan Pada proses ini permainan dijalankan secara virtual tanpa menyebabkan perubahan kondisi pada papan permainan. Permainan

46 dilakukan dengan mengambil biji yang ada pada lubang kecil yang sedang ditelusuri. Biji diambil kemudian dijalankan searah jarum jam. Biji diletakkan satu per satu pada tiap lubang hingga biji habis. 5. Cek langkah terakhir jatuh pada lubang kosong Proses ini melihat apakah biji terakhir pada langkah pemain berada di dalam lubang kecil dan kosong. Jika kedua syarat terpenuhi, maka akan dilakukan pengecekan untuk tembak lubang. Jika tidak, maka permainan akan dijalankan kembali. 6. Cek langkah terakhir jatuh pada lubang besar Proses ini melihat apakah biji terakhir yang diletakan oleh pemain berada di dalam lubang besar. Jika ya, maka pemain akan mendapatkan giliran yang baru untuk mengambil biji. Jika tidak, maka proses akan berlanjut ke langkah delapan (tembak lubang). 7. Menjalankan giliran baru Proses ini akan menjalankan giliran pemain kembali dan mengambil hasil yang terbaik. Lalu hasil terbaik tersebut akan disimpan dan dibandingkan untuk proses selanjutnya. 8. Cek tembak lubang Proses ini mengecek apakah pemain bisa melakukan tembak lubang atau tidak. Syarat dari tembak lubang adalah: a. telah melakukan putaran minimal sebanyak satu kali b. berhenti di lubang yang kosong c. berada di sisi pemain d. lubang di depan tidak kosong Jika semua syarat terpenuhi, maka pemain dapat melakukan tembak lubang. Jika tidak, hasil akan disimpan dan dilakukan pembandingan terhadap hasil yang telah ditelusuri sebelumnya. 9. Lakukan tembak lubang Proses ini akan mengambil semua biji pada lubang lawan yang terletak di seberang lubang dimana biji terakhir diletakkan, kemudian menaruhnya ke dalam lubang besar. 10. Cek lubang musuh kosong

47 Proses ini akan mengecek apakah lubang kecil pada sisi musuh kosong atau tidak. Jika tidak kosong, maka proses selanjutnya akan menjalankan giliran musuh. Jika kosong, maka akan menjalankan giliran baru. 11. Menjalankan giliran musuh Proses ini akan menjalankan giliran musuh secara virtual dan mencari hasil terbaik bagi musuh. Hasil terbaik didapat dari banyak biji yang masuk ke lubang besar. Lalu hasil terbaik tersebut akan disimpan dan dibandingkan untuk proses selanjutnya. 12. Membandingkan hasil Proses ini akan membandingkan hasil yang telah didapat dari hasil permainan yang telah dijalankan dengan hasil terbaik. Hasil terbaik didapat dari banyak biji yang masuk ke lubang besar. Jika hasil terbaik masih kosong, maka hasil permainan akan dipindahkan ke dalam hasil terbaik. Jika tidak kosong, maka akan membandingkan hasil yang mana yang lebih menguntungkan bagi pemain dengan cara menghitung selisih jumlah lubang besar pada pemain dan pada musuh. Jika selisihnya lebih besar daripada selisih hasil terbaik, maka hasil permainan akan digantikan dengan hasil terbaik yang baru. Jika selisihnya sama, maka dilakukan proses menghitung jumlah biji pada lubang kecil musuh. Kemudian, akan diambil jumlah biji yang paling sedikit. Jika selisihnya lebih kecil, maka hasil permainan tidak diambil atau diabaikan. 13. Selesai Proses secara virtual selesai dan didapatkan lubang dengan hasil terbaik yang dipilih untuk dijalankan. 3.3.3. Tree Minimax pada Permainan Congklak Gambar 3.3. menunjukkan tree minimax yang digambarkan mulai dari level nol sampai dengan level dua. Walaupun untuk pengujiannya dilakukan sampai dengan minimax level tiga, tetapi untuk gambaran dalam tree hanya dibuat sampai dengan level dua.

48

49 Maksud dari minimax level 2 dan 3 adalah pencarian minimax dengan membatasi level pada tree tersebut, jadi tree yang dibuat tidak sampai akhir permainan. Level MAX adalah jalannya pemain AI, sedangkan level MIN adalah jalannya musuh. Hal ini disebabkan banyaknya kemungkinan yang diambil dan tidak dapat dijabarkan satu per satu. Kotak yang berwarna biru di sebelah kanan merupakan lubang milik pemain satu, kotak yang berwarna kuning merupakan lubang milik pemain dua. Lubang kecil merupakan lubang dimana biji dapat dijalankan selama permainan berlangsung, sedangkan lubang besar merupakan tempat pengumpulan biji Congklak sebagai perhitungan nilai di akhir permainan. Angka-angka yang terdapat dalam kotak merepresentasikan jumlah biji yang ada dalam lubang Congklak. Awalnya dapat dilihat bahwa pada level nol, permainan dijalankan pertama kali oleh pemain pertama atau kotak berwarna biru. Setiap kemungkinan yang dapat diambil oleh pemain pertama akan ditelusuri satu per satu, mulai dari mengambil biji pada lubang pertama sampai dengan lubang ketujuh. Selanjutnya pada level satu digambarkan seluruh kemungkinan yang akan terjadi jika pemain pertama telah mengambil biji pada lubang pertama, kedua, ketiga dan seterusnya sampai lubang ketujuh. Pada saat pemain pertama mengambil lubang pertama, maka kondisi yang terjadi adalah lubang terakhir jatuh pada lubang besar pemain pertama dan berarti pemain pertama melanjutkan permainan kembali. Sedangkan jika pemain pertama mengambil biji pada lubang kedua maka pemain pertama dapat melakukan tembak lubang karena telah melakukan putaran sebanyak satu kali dan biji terakhir jatuh pada lubang yang kosong berada di sisi pemain pertama dan lubang pada sisi lawan tidak kosong, begitu pula pada lubang ketiga sampai ketujuh. Setelah melakukan tembak lubang, maka langkah selanjutnya menjadi milik pemain kedua. Pada tree level dua terdapat enam node yang merupakan lanjutan dari langkah pemain pertama dan masing-masing lima node awal langkah dari pemain kedua.

50 3.4. Rancangan Layar Rancangan layar yang terdapat pada aplikasi ini terdiri dari lima bagian utama yaitu : a. Rancangan layar utama b. Rancangan layar menu AI vs AI c. Rancangan layar menu Single Player d. Rancangan layar menu Multi Player e. Rancangan layar setelah permainan berakhir 3.4.1. Rancangan Layar Utama Gambar 3.4. Layar Utama Gambar 3.4. merupakan layar utama pada aplikasi Congklak. Warna background yang akan digunakan yaitu warna cream. Pada bagian ini terdapat logo dengan tulisan Congklak yang menggunakan jenis huruf Adobe Casion Pro ukuran 72px. Di bawahnya terdapat tiga tombol menu, yaitu :

51 a. AI vs AI, berfungsi untuk menuju ke layar selanjutnya yang berisi sub menu AI vs AI. b. Single Player, berfungsi untuk menuju ke layar selanjutnya yang berisi sub menu Single Player. c. Multi Player, berfungsi untuk menuju ke layar selanjutnya yang langsung menuju pada papan permainan Congklak untuk dimainkan secara multi player. Ketiga tombol menu tersebut menggunakan jenis tulisan Adobe Casion Pro ukuran 30px. 3.4.2. Rancangan Layar Menu AI vs AI Gambar 3.5. Layar Menu AI vs AI Gambar 3.5. merupakan layar yang terhubung dari menu AI vs AI pada halaman utama. Warna background yang digunakan yaitu warna cream. Pada layar ini terdapat logo dengan tulisan Congklak menggunakan jenis huruf Adobe Casion Pro ukuran 72px. Di bawahnya terdapat empat menu, yaitu :

52 a. Greedy vs Greedy, berfungsi untuk menuju ke layar selanjutnya yang langsung menuju pada papan permainan Congklak untuk melakukan testing antara algoritma greedy melawan algoritma greedy. b. Minimax vs Minimax, berfungsi untuk menuju ke layar selanjutnya yang langsung menuju pada papan permainan Congklak untuk melakukan testing antara algoritma minimax melawan algoritma minimax. c. Minimax vs Greedy, berfungsi untuk menuju ke layar selanjutnya yang langsung menuju pada papan permainan Congklak untuk melakukan testing antara algoritma minimax melawan algoritma greedy. d. Back, berfungsi untuk kembali ke menu sebelumnya. Keempat menu tersebut menggunakan jenis huruf Adobe Casion Pro ukuran 30px. 3.4.3. Rancangan Layar Menu Single Player Gambar 3.6. Layar Menu Single Player Gambar 3.6. merupakan tampilan layar yang terhubung dengan menu Single Player pada halaman utama. Warna background yang digunakan yaitu warna cream. Pada layar ini terdapat logo dengan tulisan Congklak yang

53 menggunakan jenis huruf Adobe Casion Pro ukuran 72px. Di bawahnya terdapat tiga menu, yaitu : a. vs Greedy, berfungsi untuk menuju ke papan permainan Congklak jika player ingin bermain melawan algoritma greedy. b. vs Minimax, berfungsi untuk menuju ke papan permainan Congklak jika player ingin bermain melawan algoritma minimax. c. Back, berfungsi untuk kembali ke menu sebelumnya. Ketiga menu tersebut menggunakan jenis huruf Adobe Casion Pro ukuran 30px. 3.4.4. Rancangan Layar Permainan Congklak Gambar 3.7. Layar Permainan Congklak Gambar 3.7. merupakan tampilan layar permainan Congklak. Warna background yang digunakan adalah cream. Pada layar ini terdapat beberapa komponen, yaitu : a. Papan Congklak, terdiri dari dua lubang besar yang disebut sebagai home base. Home base yang berada di kanan adalah milik pemain yang berada

54 di atas, atau seperti gambar di atas berarti milik Greedy AI. Home base di sebelah kiri adalah milik pemain yang berada di bawah, atau Minimax AI. Lubang-lubang kecil yang berada di tengahnya merupakan hole yang berisi masing-masing tujuh biji Congklak. Nantinya warna lubang dari tiap-tiap pemain akan dibedakan dengan dua warna, yaitu coklat tua untuk bagian bawah beserta home base-nya, dan coklat muda untuk bagian atas beserta home base-nya. Kotak kecil yang berada pada masing-masing lubang untuk menunjukkan jumlah biji yang berada dalam hole maupun home base. Biji Congklak diberi warna putih. b. Kotak bertuliskan nama atau jenis pemain, jika menu yang dipilih sebelumnya adalah minimax vs greedy, maka secara otomatis nama pemain akan mengikuti menu yang dipilih. Jika yang dipilih adalah single player dan vs Greedy, maka yang muncul yaitu Player 1 dan Greedy AI. Jika multi player, maka Player 1 dan Player 2. Begitu seterusnya sama untuk pilihan yang lain. Jenis huruf yang digunakan yaitu Calibri ukuran 22px. Di sampingnya terdapat lubang sebagai tempat menampung biji yang akan dimainkan. Warna lubang sama seperti yang dijelaskan di atas. c. Back, berfungsi untuk kembali ke menu sebelumnya. Jenis huruf yang digunakan yaitu Adobe Casion Pro ukuran 16px.

55 3.4.5. Rancangan Layar Setelah Permainan Berakhir Gambar 3.8. Layar Setelah Permainan Berakhir Gambar 3.8. merupakan layar yang menunjukkan pemenang dalam permainan. Warna background yang digunakan yaitu cream. Pada layar permainan Congklak akan muncul pop-up yang bertuliskan pemain yang memenangkan permainan. Pada gambar 3.8. bertuliskan Minimax AI Win! berarti pada permainan tersebut Minimax AI menang. Di bawahnya terdapat dua tombol, yaitu : a. Back, berfungsi untuk kembali ke menu sebelumnya. b. Play Again, berfungsi untuk mengulang permainan. Jenis huruf yang digunakan yaitu Calibri ukuran 30px.

56 3.5. Pseudocode FUNCTION MinimaxThinking(level) // membatasi level / kedalaman pada minimax menjadi 2 SET maximum_level TO 2 // Jika level yang ditelusuri lebih kecil sama dengan batas level, maka jalankan // Jika tidak, maka tidak perlu melakukan penelusuran IF level IS SMALLER THAN AND EQUAL maximum_level THEN // Pengulangan untuk menelusuri lubang kecil pada papan sisi AI // lubang 1 hingga lubang 7 adalah lubang kecil AI // sedangkan lubang 9 hingga lubang 15 adalah lubang kecil musuh // lubang 8 adalah lubang besar AI, lubang 16 adalah lubang besar musuh FOR i := 1 TO 7 DO // Yang dilakukan adalah mengambil biji yang ada pada lubang kecil yang sedang ditelusuri // lubang yang ditunjuk adalah angka dari pengulangan SET SeedOnHand TO SeedOnHole[i] // Pengecekan, jika ternyata biji yang diambil di lubang kecil itu kosong // maka pengecekan pada lubang tersebut dilewati IF SeedOnHand IS EMPTY THEN SKIP LOOP // (continue;)

57 END IF // Play Turn // Lakukan penginisialisasian posisi tangan berada pada awal lubang SET HandPosition TO i // Ketika biji yang diambil tidak kosong, maka yang dilakukan adalah // menelusuri biji tersebut hingga tangan kosong. REPEAT UNTIL SeedOnHand IS EMPTY // Sebelum biji ditambahkan kedalam lubang, dilakukan pengecekan // Pengecekan jika posisi tangan sekarang (biji yang akan ditaruh) // berada pada lubang besar musuh (16). Maka yang dilakukan // adalah mengubah posisi tangan menjadi posisi lubang kecil pertama (1) IF HandPosition IS at enemy Big Hole THEN SET HandPosition TO FirstPlayerSmallHole END IF // Penambahan biji pada lubang yang ditunjuk pada saat penelusuran SET SeedOnHandPosition ADD 1 // Pengurangan biji pada tangan, karena sudah ditaruh di lubang

58 SET SeedOnHand SUBSTRACT 1 // Pengecekan jika biji yang ada ditangan sudah habis // dan lubang yang terakhir diletakan memiliki biji lebih dari 1 // dan lubang terakhir bukan lubang besar pemain // maka yang dilakukan adalah mengambil biji yang ada pada lubang ke tangan. IF SeedOnHand IS EMPTY AND SeedOnHandPosition IS BIGGER THAN 1 AND HandPosition NOT PlayerBigHole SET SeedOnHand TO SeedOnHandPosition // ambil biji ke tangan SET SeedOnHandPosition TO 0 // lubang dikosongkan END IF // Penambahan posisi tangan pada papan permainan SET HandPosition ADD 1 END REPEAT // Turn not ended or Enemy has no Possible Turn? // Pengecekan dilakukan, apakah AI dapat jalan kembali? // Jika biji terakhir yang diletakkan berada pada

59 lubang besar // Atau lubang kecil pada papan musuh tidak memiliki biji sama sekali (9-15) // maka AI dapat jalan kembali. IF HandPosition IS PlayerBigHole OR EnemySmallHole IS EMPTY THEN // Penambahan level pada minimax untuk membatasi SET level ADD 1 // Pemanggilan fungsi (rekursif) untuk menjalankan permainan kembali // Nantinya, hasil terbesar akan disimpan oleh AI. secara terus menerus. CALL MinimaxThinking(level) END IF // Possible to Capture Seed? // Pengecekan kembali dilakukan, apakah AI dapat menembak lubang lawan // Dengan kondisi, jika tangan sudah kosong, lubang terakhir hanya ada 1 biji // dan lubang di depannya (musuh) memiliki 1 atau lebih biji // Jika bisa, maka yang dilakukan adalah mengambil biji yang ada pada lubang terakhir // dan mengambil biji yang ada di depannya (musuh) // lalu menaruhnya ke dalam lubang besar AI IF CanCaptureEnemySeed IS TRUE THEN SET PlayerBigHole ADD SeedOnHandPosition SET PlayerBigHole ADD

60 SeedOnAcrossHandPosition SET SeedOnHandPosition TO 0 SET SeedOnAcrossHandPosition TO 0 END IF // Enemy Turn? // Penelusuran jalan pemain sudah selesai, yang dilakukan adalah pengecekan jalan musuh // Jika musuh dapat jalan, maka wajib harus menelusuri jalan musuh. // Penelusuran ini masih menggunakan rekursif. // Kemudian membandingkannya jalan manakah yang lebih menguntungkan untuk AI. IF EnemySmallHole IS NOT EMPTY THEN FLIP EnemyHole INTO PlayerHole FLIP PlayerHole INTO EnemyHole SET level ADD 1 CALL MinimaxThinking(level) END IF // Pengecekan jumlah keuntungan yang didapatkan // Dengan cara menghitung lubang besar AI dikurang lubang besar musuh SET CurrentMaximum TO (PlayerBigHole SUBSTRACT EnemyBigHole) SET CurrentMaximumNum TO i // Pengecekan manakah yang lebih menguntungkan dari pengulangan lubang kecil (1-7) // Jika lubang sebelumnya lebih

61 menguntungkan, maka penelusuran yang telah dilakukan diabaikan. // Jika lubang sekarang lebih banyak, maka jumlah dan posisi disimpan untuk dibandingkan ke lubang selanjutnya // dan kemudian ditampilkan nantinya jika sudah selesai semua. IF GlobalMaximum < CurrentMaximum THEN SET GlobalMaximum TO CurrentMaximum SET GlobalMaximumNum TO CurrentMaximumNum END IF END FOR END IF // Mengembalikan posisi lubang mana yang lebih menguntungkan setelah ditelusuri RETURN GlobalMaximumNum END FUNCTION BEGIN END CALL MinimaxThinking(0) ================================================== FUNCTION GreedyThinking() // Pengulangan untuk menelusuri lubang kecil pada papan sisi AI // lubang 1 hingga lubang 7 adalah lubang kecil AI // sedangkan lubang 9 hingga lubang 15 adalah lubang kecil musuh

62 // lubang 8 adalah lubang besar AI, lubang 16 adalah lubang besar musuh FOR i := 1 TO 7 DO // Yang dilakukan adalah mengambil biji yang ada pada lubang kecil yang sedang ditelusuri // lubang yang ditunjuk adalah angka dari pengulangan SET SeedOnHand TO SeedOnHole[i] // Pengecekan, jika ternyata biji yang diambil di lubang kecil itu kosong // maka pengecekan pada lubang tersebut dilewati IF SeedOnHand IS EMPTY THEN SKIP LOOP // (continue;) END IF // Play Turn // Lakukan penginisialisasian posisi tangan berada pada awal lubang SET HandPosition TO i // Ketika biji yang diambil tidak kosong, maka yang dilakukan adalah // menelusuri biji tersebut hingga tangan kosong. REPEAT UNTIL SeedOnHand IS EMPTY // Sebelum biji ditambahkan kedalam lubang, dilakukan pengecekan // Pengecekan jika posisi tangan sekarang (biji yang akan ditaruh) // berada pada lubang besar musuh (16). Maka yang dilakukan // adalah mengubah posisi tangan menjadi

63 posisi lubang kecil pertama (1) IF HandPosition IS at enemy Big Hole then SET HandPosition TO FirstPlayerSmallHole END IF // Penambahan biji pada lubang yang ditunjuk pada saat penelitian SET SeedOnHandPosition ADD 1 // Pengurangan biji pada tangan, karena sudah ditaruh di lubang SET SeedOnHand SUBSTRACT 1 // Pengecekan jika biji yang ada ditangan sudah habis // dan lubang yang terakhir diletakan memiliki biji lebih dari 1 // dan lubang terakhir bukan lubang besar pemain // maka yang dilakukan adalah mengambil biji yang ada pada lubang ke tangan. IF SeedOnHand IS EMPTY AND SeedOnHandPosition IS BIGGER THAN 1 AND HandPosition NOT PlayerBigHole SET SeedOnHand TO SeedOnHandPosition // ambil biji ke tangan SET SeedOnHandPosition TO 0 // lubang dikosongkan END IF // Penambahan posisi tangan pada papan

64 permainan SET HandPosition ADD 1 END REPEAT // Possible to Capture Seed? // Pengecekan kembali dilakukan, apakah AI dapat menembak lubang lawan // Dengan kondisi, jika tangan sudah kosong, lubang terakhir hanya ada 1 biji // dan lubang di depannya (musuh) memiliki 1 atau lebih biji // Jika bisa, maka yang dilakukan adalah mengambil biji yang ada pada lubang terakhir // dan mengambil biji yang ada di depannya (musuh) // lalu menaruhnya ke dalam lubang besar AI IF CanCaptureEnemySeed IS TRUE THEN SET PlayerBigHole ADD SeedOnHandPosition SET PlayerBigHole ADD SeedOnAcrossHandPosition SET SeedOnHandPosition TO 0 SET SeedOnAcrossHandPosition TO 0 END IF // Pengecekan manakah yang lebih banyak memasukkan biji kedalam lubang besar, dari pengulangan lubang kecil (1-7) // Jika lubang sebelumnya lebih banyak, maka penelusuran yang telah dilakukan diabaikan. // Jika lubang sekarang lebih banyak, maka jumlah dan posisi disimpan untuk dibandingkan dengan lubang selanjutnya // dan kemudian ditampilkan nantinya jika sudah

65 selesai semua. IF GlobalMaximum < PlayerBigHole THEN SET GlobalMaximum TO PlayerBigHole SET GlobalMaximumNum TO i END IF END FOR // Mengembalikan posisi lubang mana yang lebih menguntungkan setelah ditelusuri RETURN GlobalMaximumNum END FUNCTION BEGIN END CALL GreedyThinking()