Analisis Algoritma Greedy pada Game Summy

himpunan kotak acuan pada tengah-tengah papan game : {‘=’} merupakan himpunan kandidat, sehingga himpunan kandidat: { ‘2’, ‘3’, ‘1’, ‘:’, ‘4’, ‘=’, ‘x’, ‘+’, ‘=’}. Selanjutnya anggota himpunan kandidat akan dipisahkan berdasarkan apakah termasuk angka, operator aritmetika, atau operator penugasan, sehingga diperoleh hasil seperti pada Tabel 3.2. Tabel 3.2 Pengelompokan Himpunan Kandidat Berdasarkan Tipe Himpunan Kandidat ‘2’, ‘3’, ‘1’, ‘:’, ‘4’, ‘=’, ‘x’, ‘=’ Tipe Numerik ‘2’, ‘3’, ‘1’, ‘4’ Operator ‘:’, ‘x’ Penugasan ‘=’, ‘=’ 2. Langkah 2 dimulai dengan melakukan permutasi anggota himpunan numerik berturut-turut dari permutasi 3 dari n anggota sampai permutasi 1 dari n anggota numerik. Namun sebelum itu anggota numerik akan diurutkan terlebih dahulu dari yang terbesar ke yang terkecil. N={ ‘2’, ‘3’, ‘1’, ‘4’} akan diurutkan menjadi N={ ‘4’, ‘3’, ‘2’, ‘1’}. Hasil permutasinya dapat dilihat pada Tabel 3.3. Tabel 3.3 Hasil Permutasi Himpunan Numerik Menjadi Himpunan A Permutasi Hasil dari Permutasi N= {‘4’, ‘3’,’2’,’1’} Banyak 3 dari 4 432 431 423 421 413 412 342 341 324 321 314 312 243 241 234 231 214 213 143 142 134 132 124 123 24 2 dari 4 43 42 41 34 32 31 24 23 21 14 13 12 12 1 dari 4 4 3 2 1 4 Total 40 Pada Tabel 3.3. terlihat bahwa pada permutasi 3 dari 4 anggota numerik adalah sebanyak 24, permutasi 2 dari 4 anggota numerik adalah sebanyak 12, dan permutasi 1 dari 4 anggota numerik adalah sebanyak 4. Total semuanya adalah sebanyak 40. Hasil permutasi tersebut selanjutnya akan disebut sebagai himpunan A. Sehingga A = {432, 431, 423, 421, ... , 4, 3, 2, 1} 3. Pada langkah 3 akan dimulai dengan memilih satu anggota A dari yang terbesar ke yang terkecil yang setiap digit elemennya akan dihapus dari himpunan numerik. Sebagai contoh ketika akan memilih ‘12’ anggota A ke-36 dari yang terbesar. Maka ‘1’, dan ‘2’ akan dihapus dari anggota himpunan numerik, sehingga awalnya N = { ‘4’, ‘3’, ‘2’, ‘1’} menjadi N = {‘4’, ‘3’}. Lalu akan dilakukan permutasi anggota himpunan numerik berturut-turut dari permutasi 3 dari n anggota sampai permutasi 1 dari n anggota numerik. Hasil permutasinya dapat dilihat pada Tabel 3.4. Tabel 3.4 Hasil Permutasi Himpunan Numerik Menjadi Himpunan B Permutasi Hasil dari Permutasi N={‘4’, ‘3’} Banyak 3 dari 2 - - 2 dari 2 43 34 2 1 dari 2 4 3 2 Total 4 Pada Tabel 3.4 terlihat bahwa permutasi tidak dimulai dari permutasi 3 dari n jumlah anggota numerik karena anggotanya saat ini berjumlah lebih kecil dari 3. Permutasi 2 dari 2 anggota numerik saat ini adalah sebanyak 2. Permutasi 1 dari 2 anggota numerik saat ini adalah sebanyak 2. Total semuanya adalah sebanyak 4. Hasil permutasi tersebut selanjutnya akan disebut himpunan B. Sehingga B = {43, 34, 4, 3} 4. Jika pada langkah 3 tidak dapat dilakukan permutasi maka akan kembali ke langkah 2 dengan memilih anggota A selanjutnya. 5. Langkah 5 dimulai dengan memilih satu anggota B dari yang terbesar ke yang terkecil yang setiap digit elemennya akan dihapus dari himpunan numerik. Sebagai contoh keti ka akan memilih ‘4’ anggota ke-3 dari yang terbesar. Maka ‘4’ akan dihapus dari anggota numerik saat ini. Sehingga awalnya N = {‘4’, ‘3’} menjadi N = { ‘3’}. Lalu akan dilakukan permutasi anggota himpunan numerik berturut-turut dari permutasi 3 dari n anggota sampai permutasi 1 dari n anggota numerik. Hasil permutasinya dapat dilihat pada Tabel 3.5. Tabel 3.5 Hasil Permutasi Himpunan Numerik Menjadi Himpunan C Permutasi Hasil dari Permutasi N={‘3’} Banyak 3 dari 1 - - 2 dari 1 - - 1 dari 1 3 1 Total 1 Pada Tabel 3.5 terlihat bahwa permutasi tidak dimulai dari permutasi 3 maupun permutasi 2 dari n jumlah anggota numerik karena anggotanya saat ini berjumlah lebih kecil dari 2. Permutasi 1 dari 1 anggota numerik saat ini adalah sebanyak 1. Dan hasil permutasi tersebut selanjutnya akan disebut himpunan C. Sehingga C = {3} 6. Jika pada langkah 5 tidak dapat dilakukan permutasi maka akan kembali ke langkah 3 dengan memilih anggota B selanjutnya. 7. Jika himpunan A, B, dan C telah didapatkan maka langkah 7 akan membentuk penjumlahan, pengurangan, perkalian, atau pembagian dengan menggabungkan setiap anggota A, B, dan C dengan aturan seperti pada Tabel 3.1. Tabel 3.6 Hasil Pembentukan Bentuk Perkalian dan Pembagian A36 Operator B1 Penugasan C1 Hasil Valid 12 ‘x’ 4 ‘=’ 3 12x4=3 Salah 12 ‘:’ 4 ‘=’ 3 12:4=4 Benar Pada Tabel 3.6 terlihat bahwa setiap anggota yang terdapat pada himpunan operator akan dicoba untuk disusun untuk membentuk penjumlahan, pengurangan, perkalian, atau. Karena pada himpunan operator hanya terdapat ‘x’ atau ‘:’ maka hanya bisa dibentuk perkalian atau pembagian saja. Pada saat dicoba ‘x’ bentuk perkalian tersebut tidak valid karena hasil dari 12x4 adalah 48 bukan 3. Pada saat dicoba ‘:’ bentuk pembagian tersebut valid karena hasil 12:4 adalah 3. 8. Pada langkah keenam akan memeriksa hasil yang didapat dari algoritma Greedy pada langkah kelima ke papan game. Hasil yang didapatkan tersebut akan dicek secara horizontal atau vertikal pada papan game berdasarkan acuan kotak ‘=’ yang ada di tengah-tengah papan game seperti yang ditunjukkan Gambar 3.3 Gambar 3.3 Cek Papan Game Pada Gambar 3.3 terlihat bahwa kotak ‘=’ yang merupakan salah satu anggota dari himpunan kandidat akan dijadikan acuan. Kotak ‘=’ akan dicek tetangga horizontalnya dan tetangga vertikalnya. Karena tetangga horizontal dan vertikal kotak ‘=’ sama-sama tidak ada, maka akan dipilih penyusunan horizontal terlebih dahulu. Hasil algoritma greedy sebelumnya “12:4=3” akan dimasukkan ke dalam papan game secara horizontal dengan kotak ‘=’ sebagai acuannya. Gambar 3.4 Kotak Milik Komputer Dicocokkan ke Papan Game Gambar 3.5 Kotak Milik Komputer Setelah Diletakkan Pada Papan Game Pada Gambar 3.4 terlihat bahwa kotak milik komputer akan dicocokkan ke papan game. Jika pencocokannya berhasil maka kotak milik komputer akan diletakkan pada papan game seperti Gambar 3.5 dan algoritma greedy telah menemukan solusi.

3.3. Perancangan Sistem

Pada bagian ini penulis akan menguraikan Gambaran aplikasi yang akan dirancang dan sebagai tahapan persiapan dan pengimplementasian dengan XNA.

3.3.1. Flowchart Algoritma Greedy

Flowchart Algoritma Greedy yang diterapkan dalam game Summy menunjukkan proses evaluasi untuk menentukan bentuk penjumlahan, pengurangan, perkalian, atau pembagian yang terbaik yang mungkin didapatkan oleh komputer. START Input HimpunanKandidat Declare variable: Numerik, Operator, A, B, C Pisah HimpunanKandidat berdasarkan jenis numerik atau operator. Simpan hasilnya pada variabel Numerik atau Operator Urutkan menurun Numerik Permutasikan Numerik sebanyak 3 unsur + sebanyak 2 unsur + sebanyak 1 unsur. Simpan hasilnya pada variabel A i=0 i CountA ? Permutasikan Numerik yang telah dikurangi oleh elemen Ai sebanyak 3 unsur + sebanyak 2 unsur + sebanyak 1 unsur. Simpan hasilnya pada variabel B j=0 j CountB ? Permutasikan Numerik yang telah dikurangi oleh elemen Ai dan Bj sebanyak 3 unsur + sebanyak 2 unsur + sebanyak 1 unsur. Simpan hasilnya pada variabel C j = j + 1 i = i + 1 Ya Ya P1 P2 P3 Tidak Tidak Gambar 3.6 Flowchart Algoritma Greedy pada Game Summy k=0 k CountC ? r=0 r CountOperat or ? Operat orr = + Ai+Bj=Ck ? Declare variabl e: StatusCek, Tem pSolusi StatusCek=True, TempSolusi = Ai + Bj = Ck StatusCek = True ? Cek hasil TempSolusi ke papan per mainan. Sim pan hasil ny a pada variabel TempCek Declare variabl e: Tem pCek TempCek = True ? END r = r + 1 k = k + 1 Ya Tidak Ya StatusCek=True, TempSolusi = Ai - Bj = Ck Operat orr = - Ai-Bj=Ck ? Operat orr = x AixBj=Ck ? StatusCek=True, TempSolusi = Ai x Bj = Ck StatusCek=True, TempSolusi = Ai : Bj = Ck Operat orr = : Ai:Bj=Ck ? Ya Tidak P1 P2 P3 Ya Ya Ya Ya Tidak Ya Tidak Tidak Tidak Tidak Tidak Output TempSolusi Gambar 3.7 Flowchart Algoritma Greedy pada Game Summy Lanjutan

3.3.2 Perancangan Aplikasi Game

Perancangan aplikasi game bertujuan untuk menunjukkan interaksi yang dapat dilakukan oleh pengguna terhadap aplikasi yang dibangun. Aplikasi ini dimulai dengan menampilkan halaman Menu Utama yang berisikan menu pilihan Main, Bantuan, Tentang, dan Keluar. Pada setiap pilihan ini, akan memberikan tampilan-tampilan halaman berikutnya. Aplikasi akan berhenti jika pengguna memilih pilihan Keluar. Berikut ini adalah proses yang terjadi pada aplikasi game congklak yang dapat dilihat pada Gambar 3.8. Start Output Screen Main Menu Menu Yang Terpilih ? Output Screen Bantuan Output Screen Tentang Output Screen Main End Terpilih Keluar Terpilih Tentang Terpilih Bantuan Terpilih Main Bermain SUMMY Permainan berakhir Output Pemenang Main Lagi ? Ya Tidak Gambar 3.8 Flowchart Game Summy

3.3.3 Pemodelan Visual Menggunakan UML

Dalam merancang aplikasi game dan antarmuka aplikasi, penulis menggunakan bahasa pemodelan UML Unified Modeling Language. Bahasa pemodelan UML merupakan cara standar untuk menggambarkan arsitektur sistem. Pada perancangan aplikasi game Summy, model UML yang digunakan antara lain use case diagram dan activity diagram. Use case merupakan teknik untuk mendeskripsikan persyaratan fungsional sebuah sistem yang berfungsi mendeskripsikan interaksi antara pengguna dengan