LAMPIRAN A
LAMPIRAN HASIL EVALUASI GAME SUMMY DENGAN METODE BLACK
BOX TESTING
a. Hasil evaluasi pada Tampilan Halaman Menu Utama
Tabel Hasil Evaluasi Tampilan Halaman Menu Utama
No. Sasaran
Aplikasi berhenti Aplikasi berhasil berhenti
Valid
b. Hasil Evaluasi pada Tampilan Halaman Game
Tabel Hasil Evaluasi Tampilan Halaman Game
11. Pemilihan
c. Hasil Evaluasi Tampilan Halaman Bantuan
Tabel Hasil Evaluasi Tampilan Halaman Bantuan
d. Hasil Evaluasi Tampilan Halaman Tentang
Tabel Hasil Evaluasi Tampilan Halaman Tentang
No. Sasaran Pengujian
Hasil yang Diharapkan
Hasil Pengujian Kesimpulan 1. Tampilan
halaman Tentang
Aplikasi dapat menampilkan halaman Tentang
Aplikasi berhasil menampilkan halaman Tentang
Valid
2. Tutup halaman Bantuan
Aplikasi dapat menutup halaman Tentang ketika area luar halaman Tentang diklik
Aplikasi dapat menutup halaman Tentang ketika area luar halaman Tentang diklik
Valid
e. Hasil Evaluasi Resolusi Layar Monitor terhadap Tampilan Summy 1. Resolusi Layar Monitor 800 x 600 Pixel (Terpotong)
2. Resolusi Layar Monitor 1024 x 720 Pixel (Terpotong)
Gambar Tampilan Summy pada resolusi monitor 1024 x 720 pixel
3. Resolusi Layar Monitor 1280 x 720 Pixel (Terpotong)
4. Resolusi Layar Monitor 1366 x 768 Pixel (Tidak Terpotong)
Gambar Tampilan Summy pada resolusi monitor 1366 x 768 pixel
f. Hasil Evaluasi Performa pada Game Summy
Spesifikasi beberapa komputer yang akan digunakan dalam percobaan adalah sebagai berikut:
1. Operating System : Windows 7 Ultimate 32-bit SP1
CPU : Intel Mobile Core 2 Duo T5870 @ 2.00GHz
RAM : 2,00GB
Motherboard : ASUSTeK Computer Inc. K40IN
Graphics : Generic PnP Monitor (1366x768@62Hz) 512MB NVIDIA GeForce G102M
Storage : 232GB Seagate ST9250315AS ATA Device (SATA)
2. Operating System : Windows 7 Ultimate 64-bit SP1 CPU : Intel Core i3 2310M @ 2.10GHz
RAM : 4,00GB Dual-Channel DDR3 @ 665MHz Motherboard : ASUSTeK Computer Inc. K43E (CPU 1) Graphics : Generic PnP Monitor (1366x768@60Hz)
Intel HD Graphics 3000
CPU : Intel Core i5 4200U @ 1.60GHz
RAM : 8,00GB Dual-Channel DDR3 @ 798MHz Motherboard : ASUSTeK COMPUTER INC. X450LCP Graphics : Generic PnP Monitor (1366x768@60Hz)
Intel HD Graphics Family (ASUStek Computer Inc) 2047MB NVIDIA GeForce GT 720M
Storage : 465GB Hitachi HGST HTS545050A7E680
Tabel Hasil Evaluasi Performa pada Game Summy yang Dicoba pada Beberapa
Komputer Berbeda
Kotak di
tangan Kotak di papan
Hasil
Bentuk Komputer Waktu
1,3,5,7,9,+,-,= 93-78=15
1 0,217 24
2 0,017 32
3 0,017 56
1,2,3,4,5,6,7,= 76-45=31
1 1,850 12
2 3,117 20
3 3,567 56
4,5,6,7,8,9,=,+ 679+5=684
1 1,950 32
2 1,100 48
LAMPIRAN B
LAMPIRAN PETUNJUK CARA BERMAIN PADA GAME SUMMY
Cara bermain pada game Summy:
2. Jika pemain ingin menukarkan salah satu kotak miliknya dengan kotak yang lain, pemain dapat melakukan drag and drop kotak yang dimaksud ke menu Tukar.
5. Pemain dapat mengakhiri gilirannya jika telah menyusun bentuk yang valid untuk memperoleh poin atau jika ingin melewati gilirannya dengan cara mengklik menu Lanjut.
LAMPIRAN C
Private Function PermutasiDikurangi(Data() As String, DaftarYangDihapus As String) As String()
Private Function PisahNumerik(Data() As String) As JenisList Dim T As List(Of String) = Data.ToList
Friend Sub SusunKandidatParalelDanSetUpHasil(Data() As String, KandidatSource As GamePlay.KandidatCPUBaseKoordinat, Kpbntu As List(Of
Vector2), IsHorizontal As Boolean, TileYangDipegang As TileBoard(), TileBoard As TileBoard(,), loopState As ParallelLoopState)
Dim TempData = Data
If AktifCPU AndAlso Not CPUPlaceSet AndAlso
CInt(TimeSpan.FromSeconds(WaktuTungguBerjalan).ToString("mm")) <
BatasWaktuTunggu Then
Array.Reverse(TempData)
Private Sub SusunKandidatDanSetUpHasilnya(Data() As String, KandidatSource As GamePlay.KandidatCPUBaseKoordinat, Kpbntu As List(Of Vector2), IsHorizontal
As Boolean, TileYangDipegang As TileBoard(), TileBoard As TileBoard(,),
End If + CDbl(B(j).Replace("/", "")) = CDbl(C(k).Replace("/", "")) Then
'OPTerpakai.Append(OP)
Dim tempstr As StringBuilder = New StringBuilder
- CDbl(B(j).Replace("/", "")) = CDbl(C(k).Replace("/", "")) Then
'OPTerpakai.Append(OP)
Dim tempstr As StringBuilder = New StringBuilder
If CDbl(A(i).Replace("/", "")) * CDbl(B(j).Replace("/", "")) = CDbl(C(k).Replace("/", "")) Then
'OPTerpakai.Append(OP)
Dim tempstr As StringBuilder = New StringBuilder
/ CDbl(B(j).Replace("/", "")) = CDbl(C(k).Replace("/", "")) Then
'OPTerpakai.Append(OP)
Dim tempstr As StringBuilder = New StringBuilder
End If Next End Sub
Friend Function Permutasi(NPermutasi As Integer, Data() As String) As List(Of String)
Private Sub SusunPermutasi(ByRef FPermutasi As Boolean, ByRef Banyak() As
Integer, ByRef DPermutasi As List(Of String), ByVal Data() As String, ByVal
Layak As Boolean) AndAlso TemP.ToString.Substring(0, 1) <> "0") Then
DPermutasi.Add(TemP.ToString) End If
End If
If i > 0 Then
Private Sub CekKePapanPermainan(Solusi As String, KandidatSource As
GamePlay.KandidatCPUBaseKoordinat, KPbntu As List(Of Vector2), IsHorizontal As
Boolean, TileYangDipegang As TileBoard(), TileBoard As TileBoard(,), loopState
As ParallelLoopState)
Dim avb = AvaibleFormula(Solusi, KandidatSource, KPbntu, TileBoard) Dim Cocok As Boolean = False
KandidatSource.Koordinat, Solusi, IsHorizontal, TileYangDipegang, TileBoard) loopState.Stop()
Private Function AvaibleFormula(HasilSolusi As String, KandidatSource As GamePlay.KandidatCPUBaseKoordinat, KPembantu As List(Of Vector2), TileBoard As TileBoard(,)) As Integer
Private Function KelayakanCPU(avb As UInt16, Koordinat As Vector2, Solusi
As String, KPembantu As List(Of Vector2), IsBaris As Boolean, Player As
TileBoard(), TileBoard As TileBoard(,)) As Boolean Dim Cocok As Boolean = False
Dim Sol As List(Of Char) = Solusi.ToList Koordinat.Y - If(IsBaris, 1, 0)).Value <> 127 Then
Return False If(IsBaris, Koordinat.Y - k.Y, Koordinat.X - k.X) = avb - i Then
Kpem.Remove(k) Koordinat.Y, Koordinat.X) - (avb - i) >= 0) AndAlso
(TileBoard(Koordinat.X - If(Not IsBaris, (avb - i), 0), Koordinat.Y - If(IsBaris, (avb - i), 0)).Value = 127 And
Not TileBoard(Koordinat.X - If(Not IsBaris, (avb - i), 0), Koordinat.Y - If(IsBaris, (avb - i), 0)).IsBlocked) Then Plyr.Remove(p)
End If Koordinat.Y + If(IsBaris, 1, 0)).Value <> 127 Then
Return False Koordinat.X) + 1 < TileBoard.GetLength(0) Then
For i = avb + 1 To Solusi.Length - 1 If i = Solusi.Length - 1 Then
If If(IsBaris, Koordinat.Y, Koordinat.X) + (i + 1 - avb) < TileBoard.GetLength(0) Then
If TileBoard(Koordinat.X + If(Not IsBaris, (i + 1 - avb), 0), Koordinat.Y + If(IsBaris, (i + 1 - avb), 0)).Value <> 127 Then
Return False If(IsBaris, k.Y - Koordinat.Y, k.X - Koordinat.X) = i - avb Then
Kpem.Remove(k) avb), 0), Koordinat.Y + If(IsBaris, (i + 1 - avb), 0)).Value <> 127 Then
Return False Koordinat.Y, Koordinat.X) + (i - avb) < TileBoard.GetLength(0)) AndAlso
(TileBoard(Koordinat.X + If(Not IsBaris, i - avb, 0), Koordinat.Y + If(IsBaris, i - avb, 0)).Value = 127 And
Plyr.Remove(p)
Private Sub CPU_LetakHasilTervalidasi(avb As UInt16, Koordinat As Vector2, Solusi As String, IsHorizontal As Boolean, TileYangDipegang As TileBoard(), TileBoard As TileBoard(,))
Dim Plye = TileYangDipegang.ToArray Koordinat.Y, Koordinat.X) - (avb - i) >= 0) AndAlso
(TileBoard(Koordinat.X - If(Not IsHorizontal, (avb - i), 0), Koordinat.Y - If(IsHorizontal, (avb - i), 0)).Value = 127 And
Not TileBoard(Koordinat.X - If(Not IsHorizontal, (avb - i), 0), Koordinat.Y - If(IsHorizontal, (avb - i), 0)).IsBlocked) Then p.IsBlocked = True
TileYangDipegang(Array.IndexOf(Plye, p)).IsBlocked = True
TileBoard(Koordinat.X - If(Not IsHorizontal, (avb - i), 0), Koordinat.Y - If(IsHorizontal, (avb - i), 0)).Value = p.Value
Exit For Koordinat.X) + 1 < TileBoard.GetLength(0) Then
For i = avb + 1 To Solusi.Length - 1
'Letak Tile yang ada ditangan Player CPU ke papan permainan
For Each p In Plye
If Not p.IsBlocked Then
If (Solusi(i) = p.CharValue And If(IsHorizontal, Koordinat.Y, Koordinat.X) + (i - avb) < TileBoard.GetLength(0)) AndAlso
(TileBoard(Koordinat.X + If(Not IsHorizontal, i - avb, 0), Koordinat.Y + If(IsHorizontal, i - avb, 0)).Value = 127 And
Not TileBoard(Koordinat.X + If(Not IsHorizontal, i - avb, 0), Koordinat.Y + If(IsHorizontal, i - avb, 0)).IsBlocked) Then
p.IsBlocked = True
TileYangDipegang(Array.IndexOf(Plye, p)).IsBlocked = True
Exit For End If End If Next Next End If
(REZA HIDAYAT BAYU PRABOWO)
DATA PRIBADI
Nama Lengkap : Reza Hidayat Bayu Prabowo Nama Panggilan : Reza
Tempat/Tanggal Lahir: Labuhan Deli / 19 Januari 1991 Jenis Kelamin : Pria
Agama : Islam Warga Negara : Indonesia
Alamat : Jl. Seser No. 48, Medan
HP : 081534974535
E-mail : rh.bayu.prabowo@outlook.com Status : belum menikah
RIWAYAT PENDIDIKAN
Sekolah Menengah Atas
SMA Negeri 3 Medan 2005-2008
Sekolah Menengah Pertama
SMP Negeri 45 Medan 2002-2005
Sekolah Dasar
SD Negeri 066657 Medan 1996-2002
Programming: C++, C#, VB.Net Database : MySQL
IDE : Visual Studio 2015, Visual Studio Code Software : Ms. Office
PENGALAMAN KERJA
No Instansi/Lembaga Jabatan/Posisi Tahun
1 Freelancer Programmer 2013-2015
SEMINAR
No. Seminar Tahun
1 Seminar Demo Software dan Diskusi Panel Integrasi Agent Based Model
(ABM) dan Geographic Information System (GIS) 2011
DAFTAR PUSTAKA
Budiharto, W. 2012. Kecerdasan Buatan, Kini dan Akan Datang. (Online) http://socs.binus.ac.id/2012/06/06/mengenal-kecerdasan-buatan-kini-dan-akan-datang (15 November 2015).
Chen, M. 2008. A Greedy Algorithm with Forward-Looking Strategy. Greedy Algorithms. Witold Bednorz (Ed.). ISBN: 978-953-7619-27-5. InTech. (Online)
http://www.intechopen.com/books/greedy_algorithms/a_greedy_algorithm_ with_forward-looking_strategy (17 Oktober 2014)
Kristanto, A. 2004. Kecerdasan Buatan. Edisi Pertama. Yogyakarta : Graha Ilmu.
Kusumadewi, S. 2003. Artificial Intelligence. Edisi Pertama. Yogyakarta : Graha Ilmu
van Moorsel, C. 2014. Summy. (Online) http://www.cwali.nl/summy/summy.htm (15
November 2015)
Pawardita, B. 2015. Aplikasi Permainan Fill-In Numbers Pada Platform Android. Skripsi, Medan, Indonesia : Universitas Sumatera Utara.
Putra, A.G. 2014. Analisis Perbandingan Algoritma Greedy dan Brute Force dalam Pencarian Kartu Tertinggi Pada Kartu Remi. Skripsi, Medan, Indonesia : Universitas Sumatera Utara.
Putra, M.R. 2009. Penerapan Algoritma Greedy Dalam Permainan Congklak. Jurnal Teknik Informatika ITB. Hal. 1-2.
Simanjuntak, S.H. 2015. Penerapan Algoritma Greedy Pada Permainan Mill Berbasis Android. Skripsi, Medan, Indonesia : Universitas Sumatera Utara.
BAB III
ANALISIS DAN PERANCANGAN SISTEM
Dalam bab ini akan dibahas mengenai analisis sistem dan perancangan aplikasi game Summy. Penulis mencoba membuat suatu aplikasi game Summy yang menerapkan kecerdasan buatan pada komputer yang akan dilawan. Penulis juga mencoba menjelaskan bagaimana cara kerja kecerdasan buatan pada game Summy. Dalam hal ini penulis menggunakan algoritma greedy.
3.1. Analisis Game Summy
Game Summy merupakan bentuk lain dari game Scrabble. Perbedaannya adalah pada game Scrabble pemain ditugaskan untuk mencari poin sebanyak-banyaknya dengan menyusun huruf-huruf menjadi bentuk kata dalam bahasa inggris, sedangkan pada game Summy pemain menyusun angka-angka dan operator aritmetika menjadi bentuk penjumlahan, pengurangan, perkalian, atau pembagian.
Gambar 3.1 Kotak-Kotak yang Disusun pada Game Summy
sebanyak 127 kotak. Kumpulan kotak-kotak ini akan disebut sebagai tumpukkan kotak. Tugas pemain adalah menyusun penjumlahan, pengurangan, perkalian
Berikut ini aturan game yang ditetapkan oleh penulis untuk game Summy: 1. Game dapat dimainkan oleh satu orang, namun pemain melawan komputer
sebagai lawan tanding.
2. Ukuran papan game 25 x 25 kotak.
3. Terdapat 127 kotak yang tersedia, yaitu terdiri dari: a. terdapat masing-masing 8 kotak untuk angka 0 – 9
b. terdapat masing-masing 7 kotak untuk operator numerik ‘+’, ‘-’, ‘x’
dan ‘:’
c. terdapat masing-masing 19 kotak untuk operator numerik ‘=’
4. Pemain mencari poin sebanyak-banyaknya dengan menyusun secara horizontal atau vertikal bentuk penjumlahan, pengurangan, perkalian, atau pembagian dari kotak-kotak yang dimiliki oleh pemain dan sekurang-kurangnya satu kotak yang telah berada pada papan game sebelumnya. 5. Poin didapatkan dengan menjumlahkan semua digit angka pada kotak-kotak
yang menyusun bentuk penjumlahan, pengurangan, perkalian, atau pembagian.
6. Komputer memiliki batas waktu 5 menit bermain pada gilirannya 7. Pemain tidak memiliki batas waktu bermain pada gilirannya. 8. Urutan giliran awal main ditentukan secara acak pada awal game.
9. Setiap awal game semua kotak-kotak yang tersedia akan diacak dan kotak
‘=’ diambil dari tumpukkan kotak dan ditempatkan di tengah-tengah papan game.
10.Setiap pemain diberikan masing-masing delapan kotak yang dapat berisi angka, operator aritmetika, atau operator penugasan.
11.Pemain diberikan kesempatan menukar kotak yang dimilikinya dengan kotak yang berada pada tumpukan kotak sebanyak delapan kali pada saat gilirannya. Dan kotak yang akan ditukarkan akan dibuang.
13.Kotak-kotak milik pemain yang telah digunakan untuk membentuk penjumlahan, pengurangan, perkalian, atau pembagian yang valid tidak dapat digunakan lagi dan tetap berada pada papan game. Namun, akan digantikan dengan kotak-kotak yang baru yang diambil dari tumpukan kotak.
14.Game dinyatakan berakhir apabila tidak ada tumpukan kotak yang tersisa lagi dan pemain atau komputer tidak dapat lagi menyusun penjumlahan, pengurangan, perkalian, atau pembagian pada gilirannya sebanyak dua kali berturut-turut.
15.Pemain dinyatakan pemenang apabila mengumpulkan poin lebih banyak daripada komputer pada saat game dinyatakan berakhir.
Bentuk penjumlahan, pengurangan, perkalian, atau pembagian dapat dilihat pada Tabel 3.1
Tabel 3.1 Bentuk Penjumlahan, Pengurangan, Perkalian, atau Pembagian
Operator Bentuk Contoh
Penjumlahan ‘+’ N + N = N 32 + 12 = 44
Pengurangan ‘-’ N - N = N 10 – 5 = 5
Perkalian ‘x’ N x N = N 4 x 9 = 36
Pembagian ‘:’ N : N = N 18 : 3 = 6
3.2. Analisis Algoritma Greedy pada Game Summy
Pada game Summy yang dibangun, algoritma greedy digunakan oleh komputer (AI) untuk menyusun kotak-kotak miliknya agar membentuk penjumlahan, pengurangan, perkalian, atau pembagian dengan jumlah poin yang optimum. Adapun elemen-elemen greedy yang digunakan adalah sebagai berikut:
1. Himpunan Kandidat : himpunan permutasi dari kotak-kotak yang dimiliki komputer dan himpunan kotak acuan yang berada pada papan game.
2. Himpunan Solusi : himpunan bentuk penjumlahan, pengurangan, perkalian atau pembagian yang memiliki poin terbanyak optimum.
4. Fungsi kelayakan : memeriksa apakah bentuk penjumlahan, pengurangan, perkalian, atau pembagian yang dibentuk apakah sudah memenuhi syarat valid
5. Fungsi objektif : waktu minimum yang digunakan untuk membentuk penjumlahan, pengurangan, perkalian, atau pembagian.
Berikut ini merupakan sebuah sampel game yang telah ditentukan untuk dianalisis menggunakan algoritma greedy. Pada Gambar 3.2 terlihat set awal game Summy.
Gambar 3.2 Kotak Milik Komputer pada Set Awal Game Summy
Pada saat awal game pemain dan komputer akan mendapatkan masing-masing delapan kotak secara acak dari tumpukkan kotak. Dan pada tengah-tengah papan game
diletakkan kotak ‘=’ seperti yang terlihat pada Gambar 3.2. Berikut ini adalah contoh kasus pencarian solusi 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
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 ketika akan memilih ‘4’ anggota ke-3 dari yang terbesar. Maka
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
A(36) Operator B(1) Penugasan C(1) 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.
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
Gambar 3.4 Kotak Milik Komputer Dicocokkan ke Papan Game
Gambar 3.5 Kotak Milik Komputer Setelah Diletakkan Pada Papan Game
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 < Count(A) ?
Permutasikan Numerik yang telah dikurangi oleh elemen A(i) sebanyak 3 unsur + sebanyak
2 unsur + sebanyak 1 unsur. Simpan hasilnya pada variabel B
j=0
j < Count(B) ?
Permutasikan Numerik yang telah dikurangi oleh elemen A(i) dan B(j) sebanyak 3 unsur + sebanyak
2 unsur + sebanyak 1 unsur. Simpan hasilnya pada variabel C
k=0
Cek hasil TempSolusi ke papan per mainan. Sim pan hasil ny a pada variabel TempCek
Declare variabl e: Tem pCek
Gambar 3.7 Flowchart Algoritma Greedy pada Game Summy (Lanjutan)
3.3.2 Perancangan Aplikasi Game
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
aplikasi game secara eksternal dalam sebuah sistem. Berikut ini merupakan use case diagram pada game Summy.
Activity diagram adalah teknik untuk mendeskripsikan logika prosedural, proses bisnis dan aliran kerja dalam banyak kasus. Activity diagram mempunyai peran seperti halnya flowchart, akan tetapi perbedaannya dengan flowchart adalah activity diagram bisa mendukung perilaku paralel sedangkan flowchart tidak bisa. Penulis merancang use case aplikasi tersebut seperti pada Gambar 3.9.
Pengguna AI
Mulai Bermain
Melihat Tentang
Melihat Bantuan
Evaluasi Langkah Bermain <<include>>
<<extend>>
Gambar 3.9 Use Case Diagram Summy
Use Case Specification Mulai Bermain dapat dilihat pada Tabel 3.7.
Tabel 3.7 Use Case Spesification Mulai Bermain
Nama Use Case Mulai Bermain
Aktor Pemain
Deskripsi Use case ini berfungsi untuk memulai game Pre Condition Pemain memilih menu Mulai Bermain
Flow Of Events Kegiatan Aktor Respons Sistem
Pengguna menekan tombol Mulai Bermain pada halaman Menu Utama
Sistem menampilkan halaman Game
Activity Diagram untuk Mulai Bermain dapat dilihat pada Gambar 3.10.
Menekan tombol Mulai Bermain
Menampilkan halaman Permainan
Gambar 3.10 Activity Diagram Mulai Bermain
Use Case Specification Bermain dapat dilihat pada Tabel 3.8.
Tabel 3.8 Use Case Specification Bermain
Nama Use Case Bermain
Aktor Pemain
Deskripsi Use case ini berfungsi untuk memulai game dengan meletakkan kotak miliknya ke papan game Summy Pre Condition Papan game sudah ditampilkan di layar
Flow Of Events Kegiatan Aktor Respons Sistem
Pemain dan komputer mulai meletakkan kotak miliknya ke papan game
Sistem meng-update papan game
Post Condition Papan game Summy telah terisi kotak milik pemain dan game berlanjut
Pemain Meletakkan Kotak
Mengupdate papan permainan
Gambar 3.11 Activity Diagram Bermain
Use Case Specification Evaluasi Langkah dapat dilihat pada Tabel 3.9.
Tabel 3.9 Use Case Specification Evaluasi Langkah
Nama Use Case Evaluasi Langkah
Aktor AI
Deskripsi Use case ini berfungsi untuk mengevaluasi langkah AI yang akan dijalankan pada gilirannya.
Pre Condition Pemain telah meletakkan kotak-kotak miliknya Flow Of Events Kegiatan Aktor Respon Sistem
- AI mengecek papan game
- AI menyusun langkah yang mungkin
- AI memilih langkah dengan nilai terbesar - AI meletakkan
kotak-kotak miliknya
Sistem mengupdate papan game
Post Condition Papan game Summy telah terisi kotak milik AI dan game berlanjut
Cek Papan Permainan
Evaluasi Penyusunan Langkah
Memilih Bentuk Terbaik
Meletakkan Kotak Mengupdate Papan Permainan
Gambar 3.12 Activity Diagram Evaluasi Langkah
Use Case Specification Lihat Tentang dapat dilihat pada Tabel 3.10.
Tabel 3.10 Use Case Specification Lihat Tentang
Nama Use Case Lihat Tentang
Aktor Pemain
Deskripsi Use case ini berfungsi untuk melihat halaman tentang Pre Condition Pemain memilih menu Tentang pada halaman Menu
Utama
Flow Of Events Kegiatan Aktor Respons Sistem
Pemain menekan tombol Tentang pada halaman Menu Utama
- Menampilkan halaman Tentang
- Menutup halaman Tentang
Post Condition -
Menekan Tombol "Tentang"
Manampilkan halaman Tentang
Menekan Tombol "Back"
Menutup halaman Tentang
Gambar 3.13 Activity Diagram Lihat Tentang
Use Case Specification Lihat Bantuan dapat dilihat pada Tabel 3.11.
Tabel 3.11 Use Case Specification Lihat Bantuan
Nama Use Case Lihat Bantuan
Aktor Pemain
Deskripsi Use case ini berfungsi untuk melihat halaman bantuan dan tata cara bermain aplikasi Summy
Pre Condition Pemain memilih menu Bantuan pada halaman Menu Utama
Flow Of Events Kegiatan Aktor Respons Sistem
Pemain menekan tombol Bantuan pada halaman Menu Utama
- Menampilkan halaman Bantuan
- Menutup halaman Bantuan
Post Condition -
Menekan Tombol "Bantuan"
Manampilkan halaman Bantuan
Menekan Tombol "Back"
Menutup halaman Bantuan
Gambar 3.14 Activity Diagram Lihat Bantuan
3.4 Perancangan Transisi Halaman dan Antarmuka
Perancangan antarmuka dan transisi halaman aplikasi game merupakan tahap penting, karena akan menentukan interaksi yang akan dilakukan oleh pemain dengan aplikasi game ini.
3.4.1 Transisi Halaman
Transisi halaman merupakan pergantian halaman game dari satu halaman ke halaman lain pada layar. Transisi halaman terjadi sesaat setelah pemain menekan tombol yang tampak di layar.
Menu Utama Tentang
Permainan
Bantuan
Gambar 3.15 Transisi Halaman
3.4.2 Antarmuka
Berdasarkan transisi halaman pada Gambar 3.15, penulis membuat antarmuka dari empat halaman. Berikut ini adalah perancangan antarmuka tiap halaman yang digambarkan secara sederhana.
1. Halaman Menu Utama
Halaman ini adalah halaman yang pertama kali muncul saat aplikasi dijalankan. Pada halaman ini terdapat tulisan logo Summy dan beberapa tombol seperti tombol Mulai Bermain, tombol Bantuan, tombol Tentang, dan tombol Keluar. Berikut ini adalah rancangan antarmuka halaman Menu Utama seperti pada Gambar 3.16.
SUMMY
Mulai Bermain
Bantuan
Tentang
Keluar 1
2
3
4
5
Komponen yang digunakan pada rancangan pada Gambar 3.16 adalah: 1) Objek gambar (Sprite) yang digunakan sebagai judul game
2) Sprite yang digunakan sebagai tombol menu Main yang berfungsi untuk menampilkan halaman Main ketika diklik.
3) Sprite yang digunakan sebagai tombol menu Bantuan yang berfungsi untuk menampilkan halaman Bantuan ketika diklik.
4) Sprite yang digunakan sebagai tombol menu Tentang yang berfungsi untuk menampilkan halaman Tentang ketika diklik.
5) Sprite yang digunakan sebagai tombol menu Keluar yang berfungsi untuk keluar dari aplikasi ketika diklik.
2. Halaman Game
Papa n Pe rma inan
Gambar 3.17 Antarmuka Halaman Game
Komponen yang digunakan pada rancangan pada Gambar 3.17 adalah:
1) Sprite yang digunakan untuk menampilkan skor dan waktu yang telah dilalui oleh AI pada saat gilirannya bermain.
2) Sprite yang digunakan untuk menampilkan selot kotak-kotak milik AI. 3) Sprite yang digunakan untuk menampilkan langkah terbaik dan 8 langkah
terakhir yang dilakukan oleh AI.
4) Sprite yang digunakan untuk menampilkan berapa kotak-kotak yang tersisa dari tumpukkan kotak.
5) Sprite yang digunakan sebagai papan game. Kotak-kotak yang akan dimainkan akan disusun dan diletakkan pada Sprite ini.
6) Sprite yang digunakan untuk menampilkan selot kotak-kotak yang dimiliki oleh pemain dan dapat dipindahkan ke papan game maupun ditukarkan. 7) Sprite yang digunakan sebagai menu Remove / Swap untuk menukarkan
8) Sprite yang digunakan sebagai menu Cancel untuk mengembalikan kotak yang baru saja diletakkan pada papan game kembali ke selot pemain ketika diklik.
9) Sprite yang digunakan sebagai menu Next untuk mengakhiri giliran pemain ketika diklik.
10)Sprite yang digunakan sebagai menu Home untuk menghentikan permainan sementara dan menampilkan menu jika hendak kembali ke halaman Menu Utama ketika diklik.
11)Sprite yang digunakan untuk menampilkan langkah terbaik dan 8 langkah terakhir yang dilakukan pemain.
12)Sprite yang digunakan untuk menampilkan skor dan waktu yang telah dilalui oleh pemain pada saat gilirannya bermain.
3. Halaman Bantuan
Halaman ini berisi tentang tata cara bermain Summy dan aturan di dalam game Summy. Berikut ini adalah rancangan antarmuka halaman Bantuan seperti pada
Gambar 3.18.
Bantuan
Keluar 1
2
Gambar 3.18 Antarmuka Halaman Bantuan
Komponen yang digunakan pada rancangan pada Gambar 3.18 adalah:
2) Sprite yang digunakan untuk menu keluar dari halaman Bantuan ketika diklik.
4. Halaman Tentang
Halaman ini berisi tentang versi aplikasi game, informasi pembuat aplikasi, dan informasi sumber aset yang dipakai pada aplikasi. Berikut ini adalah rancangan antarmuka halaman Tentang seperti pada Gambar 3.19.
Tentang
Keluar 1
2
Gambar 3.19 Antarmuka Halaman Tentang
Komponen yang digunakan pada rancangan pada Gambar 3.19 adalah:
1) Sprite yang digunakan untuk menampilkan informasi pembuat aplikasi dan aset-aset yang digunakan dalam pembangunan aplikasi.
BAB IV
IMPLEMENTASI DAN PENGUJIAN SISTEM
Pada bab ini akan dijelaskan implementasi dan pengujian sistem sesuai dengan analisis dan perancangan sistem pada bab sebelumnya. Penjelasan tentang implementasi sistem dilakukan untuk mengetahui hasil dari aplikasi yang dirancang dan pengujian sistem dilakukan untuk membuktikan jika aplikasi dapat berjalan baik.
4.1 Implementasi Sistem
Implementasi aplikasi game Summy dibuat menggunakan bahasa pemrograman VB.Net dengan menggunakan XNA Game Studio 4.0 sebagai game framework.
4.1.1 Spesifikasi Perangkat Lunak
Spesifikasi perangkat lunak yang digunakan untuk membangun dan menjalankan aplikasi adalah:
1. Windows 7 Ultimate 32-bit 2. Visual Studio 2015 Update 2 3. .Net Framework 4.0
4. XNA Game Studio 4.0 5. Corel Draw X7
4.1.2 Spesifikasi Perangkat Keras
Spesifikasi perangkat keras yang digunakan untuk membangun dan menjalankan aplikasi adalah :
1. Operating System : Windows 7 Ultimate 32-bit SP1
2. CPU : Intel Mobile Core 2 Duo T5870 @ 2.00GHz
3. RAM : 2,00GB
5. Graphics : Generic PnP Monitor (1366x768@62Hz) 512MB NVIDIA GeForce G102M
6. Storage : 232GB Seagate ST9250315AS ATA Device
4.2 Tampilan Aplikasi
4.2.1 Tampilan Halaman Menu Utama
Sesuai dengan perancangan aplikasi game sebelumnya, tampilan antarmuka halaman menu utama pada game Summy dapat dilihat pada Gambar 4.1. Halaman antarmuka ini akan muncul pertama kali saat aplikasi game dijalankan. Pada halaman ini ditampilkan menu-menu yang dapat dipilih oleh pemain yaitu menu Main untuk memulai game, menu Bantuan untuk melihat panduan bermain, menu Tentang untuk melihat info aplikasi, dan menu Keluar untuk menutup aplikasi game.
Gambar 4.1 Halaman Menu Utama
4.2.2 Tampilan Halaman Game
sisa kotak yang tersisa dari 127 kotak yang tersedia, kotak-kotak yang dimiliki pemain dan komputer, dan menu-menu yang dapat dipilih pemain, yaitu menu Next untuk mengakhiri giliran pemain, Cancel untuk mengembalikan kotak-kotak yang pernah diletakkan pemain pada papan game kembali ke selot kotak miliknya, Swap/Delete untuk menukar satu kotak milik pemain dengan yang ada pada sisa tumpukkan kotak, dan Home untuk kembali ke halaman menu utama.
Gambar 4.2 Halaman Game
Gambar 4.3 merupakan tampilan ketika pemain sedang bermain pada gilirannya. Pemain meletakkan kotak miliknya ke papan game dengan cara drag and drop. Setelah pemain meletakkan kotak-kotak miliknya dan merupakan bentuk valid, pemain dapat memilih menu Next untuk mengakhiri gilirannya.
Gambar 4.4 merupakan tampilan pada saat komputer telah berhasil memilih bentuk terbaik dengan algoritma greedy. Setelah itu komputer akan mengakhiri gilirannya dan game berlanjut dengan giliran pemain.
Gambar 4.4 Komputer Telah Memilih Bentuk Terbaik dengan Algoritma Greedy
Gambar 4.5 merupakan tampilan saat game telah berakhir dan komputer telah mengalahkan pemain. Pemain mendapatkan pilihan untuk memulai ulang game atau kembali ke halaman menu utama.
4.2.3 Tampilan Halaman Bantuan
Halaman Bantuan berisi tentang aturan dan cara bermain game Summy. Tampilan halaman bantuan dapat dilihat pada Gambar 4.6.
Gambar 4.6 Halaman Bantuan
4.2.4 Tampilan Halaman Tentang
Halaman ini berisi tentang informasi tentang pengembang aplikasi dan aset yang digunakan dalam aplikasi game. Tampilan halaman tentang dapat dilihat pada Gambar 4.7.
4.3 Pengujian Sistem
Pengujian aplikasi merupakan proses evaluasi aplikasi yang bertujuan untuk mengetahui apakah aplikasi yang dibangun telah memenuhi tujuan atau kebutuhan yang telah ditentukan. Pengujian yang dilakukan pada aplikasi game Summy adalah dengan membandingkan hasil eksekusi aplikasi dengan hasil yang diharapkan pada masing-masing sasaran pengujian.
Pada tahap pengujian ini dilakukan evaluasi pada setiap proses dalam aplikasi Summy. Metode yang digunakan pada tahap pengujian ini adalah metode black box. Dengan metode black box pengujian hanya dilakukan pada representasi sistem yang terlihat tanpa perlu mengetahui bagaimana cara kerja sistem tersebut.
Dengan metode black box hasil eksekusi akan dibandingkan dengan hasil yang diharapkan. Bila hasil eksekusi sesuai dengan yang diharapkan, maka aplikasi dianggap berhasil. Sebaliknya jika hasil eksekusi tidak sesuai dengan hasil yang diharapkan maka diperlukan perbaikan pada aplikasi.
Hasil pengujian yang telah dilakukan dengan menggunakan metode black box dapat dilihat pada Lampiran A.
BAB V
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Kesimpulan yang dapat diambil berdasarkan pembahasan pada bab-bab sebelumnya adalah sebagai berikut:
1. Algoritma greedy dapat diterapkan dalam menemukan langkah terbaik pada permainan Summy yaitu pemilihan bentuk penjumlahan, pengurangan, perkalian atau pembagian dengan skor terbaik oleh AI.
2. Jika kotak-kotak pada papan permainan semakin banyak, maka algoritma greedy akan membutuhkan waktu yang lebih lama untuk menemukan langkah terbaik.
3. Penerapan komputasi paralel pada algoritma greedy akan jauh meningkatkan waktu pencarian langkah terbaik dibandingkan dengan tidak menerapkan komputasi paralel.
4. Waktu tercepat algoritma greedy untuk menemukan langkah terbaik jika hanya dicari dari 8 kotak yang tersedia adalah sekitar 0.017 detik sedangkan waktu terlama adalah 0.283 detik.
5. Aplikasi akan tetap berjalan pada resolusi kurang atau lebih dari 1366 x 768 pixel, namun tampilan tidak akan maksimal.
5.2 Saran
Beberapa saran yang dapat penulis berikan untuk pengembangan selanjutnya antara lain:
1. Menambahkan fitur multiplayer online pada aplikasi game Summy sehingga dapat dimainkan melawan pemain lain.
3. Membuat antarmuka yang lebih menarik dengan animasi yang lebih baik. 4. Menambahkan suara dan lagu tema agar aplikasi jauh lebih menarik.
5. Menggunakan algoritma yang lebih baik dan lebih efisien dalam pencarian langkah terbaik dibandingkan dengan algoritma greedy.
BAB II
LANDASAN TEORI
2.1. Kecerdasan Buatan
Kecerdasan buatan atau Artificial Intelligence (AI) adalah suatu bidang ilmu yang mempelajari tentang bagaimana membangun sistem komputer yang menerapkan kecerdasan dalam beberapa cara. Kecerdasan buatan telah banyak menghasilkan banyak terobosan dalam ilmu komputer. Banyak topik penelitian dalam ilmu komputer hari ini merupakan hasil dari penelitian tentang kecerdasan buatan. Sebagai contoh, jaringan saraf tiruan, komputasi evolusioner, machine learning, natural language processing, pemrograman berorientasi objek, dan lainnya. Dalam banyak kasus, fokus utama dari topik penelitian ini bukan lagi pengembangan kecerdasan buatan, mereka menjadi disiplin ilmu sendiri, dan pada beberapa kasus, bukan lagi berhubungan dengan kecerdasan buatan. Kecerdasan buatan sendiri terus berkembang menciptakan terobosan baru yang masih dibutuhkan (Teahan, 2010).
Kecerdasan buatan 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 kelakuan atau tindak-tanduk yang sepenuhnya bisa menirukan beberapa fungsi otak manusia, seperti pengertian bahasa, pengetahuan, pemikiran, pemecahan masalah dan lain-lain (Kristianto, 2004).
membekali komputer dengan kedua komponen tersebut agar komputer bisa menjadi mesin yang pintar. Lebih detailnya, pengertian kecerdasan buatan dapat dipandang dari berbagai sudut pandang, antara lain:
1. Sudut pandang kecerdasan.
Kecerdasan Buatan akan membuat mesin menjadi ‘cerdas’ (mampu berbuat seperti apa yang dilakukan oleh manusia).
2. Sudut pandang penelitian.
Kecerdasan Buatan adalah suatu studi bagaimana membuat agar komputer dapat melakukan sesuatu sebaik yang dikerjakan oleh manusia. Domain yang sering dibahas oleh para peneliti meliputi:
a. Mundane task
- Persepsi (vision & speech).
- Bahasa alami (understanding, generation & translation). - Pemikiran yang bersifat commonsense.
- Robot control. b. Formal task
- Permainan/games.
- Matematika (geometri, logika, kalkulus integral, pembuktian). c. Expert task
- Analisis finansial. - Analisis medikal.
- Analisis ilmu pengetahuan.
- Rekayasa (desain, pencarian kegagalan, perencanaan manufaktur). 3. Sudut pandang bisnis.
Kecerdasan buatan adalah kumpulan peralatan yang sangat powerful dan metodologis dalam menyelesaikan masalah-masalah bisnis.
4. Sudut pandang pemrograman.
Kecerdasan buatan meliputi studi tentang pemrograman simbolik, penyelesaian masalah (problem solving) dan pencarian (searching). Untuk melakukan aplikasi kecerdasan buatan ada 2 bagian utama yang sangat dibutuhkan (Gambar 2.1), yaitu:
b. Motor Inferensi (Inference Engine), yaitu kemampuan menarik kesimpulan berdasarkan pengalaman.
Gambar 2.1 Penerapan Konsep Kecerdasan Buatan di Komputer
Kecerdasan buatan tidak hanya dominan di bidang ilmu komputer (informatika), namun juga sudah merambah di berbagai disiplin ilmu yang lain. Interseksi antara psikologi dan kecerdasan buatan melahirkan sebuah area yang dikenal dengan nama cognition & psycolinguistics. Interseksi antara teknik elektro dengan kecerdasan buatan melahirkan berbagai ilmu seperti: pengolahan citra, teori kendali, pengenalan pola dan robotika.
Secara garis besar bidang ilmu yang dipelajari dalam bidang AI bisa dilihat pada Gambar 2.2 berikut ini :
Gambar 2.2 Domain Area
Basis
Pengetahuan
Motor
Inferensi Input:
masalah,
pertanyaan,
Output:
jawaban,
solusi,
1. Natural Language Processing (NLP)
NLP mempelajari bagaimana bahasa alami itu diolah sedemikian hingga user dapat berkomunikasi dengan komputer. Konsentrasi ilmu ini adalah interaksi antara komputer dengan bahasa natural yang digunakan manusia, yakni bagaimana komputer melakukan ekstraksi informasi dari input yang berupa natural language dan atau menghasilkan output yang juga berupa natural language.
2. Computer Vision
Cabang ilmu ini erat kaitannya dengan pembangunan arti/makna dari image ke obyek secara fisik. Yang dibutuhkan di dalamnya adalah metode-metode untuk memperoleh, melakukan proses, menganalisis dan memahami image. Apabila cabang ilmu ini dikombinasikan dengan Artificial Intelligence secara umum akan mampu menghasilkan sebuah visual intelligence system.
3. Robotika dan Sistem Navigasi
Bidang ilmu inilah yang mempelajari bagaimana merancang robot yang berguna bagi industri dan mampu membantu manusia, bahkan yang nantinya bisa menggantikan fungsi manusia. Robot mampu melakukan beberapa task dengan berinteraksi dengan lingkungan sekitar. Untuk melakukan hal tersebut, robot diperlengkapi dengan actuator seperti lengan, roda, kaki, dll.
4. Game Playing
Game biasanya memiliki karakter yang dikontrol oleh user, dan karakter lawan yang dikontrol oleh game itu sendiri. Di mana kita harus merancang aturan-aturan yang nantinya akan dikerjakan oleh karakter lawan. Game akan menjadi menarik apabila karakter lawan (non-player) bereaksi dengan baik terhadap apa yang dilakukan oleh player. Hal ini akan memancing penasaran user dan membuat game menarik untuk dimainkan. Tujuan intinya adalah membuat non-player memiliki strategi yang cerdas untuk mengalahkan non-player. Pada bidang ini, AI dibutuhkan, yaitu untuk merancang dan menghasilkan game yang fun serta antarmuka antara man-machine yang cerdas dan menarik untuk dimainkan. 5. Sistem Pakar
Dengan sistem ini, permasalahan yang seharusnya hanya bisa diselesaikan oleh para pakar/ahli, dapat diselesaikan oleh orang biasa/awam. Sedangkan, untuk para ahli, sistem pakar juga akan membantu aktivitas mereka sebagai asisten yang seolah-olah sudah mempunyai banyak pengalaman (Budiharto, 2012).
2.2. Algoritma Greedy
Algoritma greedy merupakan metode yang paling populer untuk memecahkan masalah optimasi. Secara harfiah, greedy berarti tamak atau rakus. Prinsip dari algoritma greedy adalah mengambil setiap kesempatan yang ada saat itu juga, tanpa memperhatikan konsekuensi ke depannya.
Algoritma greedy tidak selalu memperoleh solusi optimum untuk keseluruhan permasalahan yang ditangani, dikarenakan algoritma greedy tidak melakukan operasi secara exhaustive kepada semua data, dan sering kali tidak mementingkan solusi optimum global. Akan tetapi, algoritma greedy merupakan solusi yang baik digunakan dikarenakan algoritma greedy bekerja dengan cepat dan sering memberikan perkiraan nilai optimum yang baik di setiap langkahnya. Dan tidak jarang dapat menghasilkan solusi optimum global pada suatu permasalahan dari pengambilan solusi optimum lokal di setiap langkahnya. Akan tetapi algoritma greedy cukup kuat dan bekerja dengan baik untuk berbagai masalah (Putra, 2009).
Elemen-elemen algoritma greedy dalam persoalan optimasi adalah sebagai berikut:
1. Himpunan kandidat.
Himpunan ini berisi elemen-elemen pembentuk solusi. 2. Himpunan solusi.
Himpunan ini berisi kandidat-kandidat yang terpilih sebagai solusi persoalan. Himpunan solusi merupakan himpunan bagian dari himpunan kandidat.
3. Fungsi seleksi.
Fungsi seleksi dinyatakan sebagai predikat seleksi merupakan fungsi yang pada setiap langkah memilih kandidat yang paling mungkin untuk mendapatkan solusi optimal.
Fungsi kelayakan dinyatakan sebagai predikat layak merupakan fungsi yang memeriksa apakah suatu kandidat yang dipilih dapat memberikan solusi yang layak, yaitu kandidat tersebut tidak melanggar aturan yang ada. 5. Fungsi objektif.
Fungsi objektif merupakan fungsi yang memaksimumkan atau meminimalkan nilai solusi.
Pseudo-code algoritma greedy adalah sebagai berikut (Chen, 2008) :
Procedure Greedy (partial solution S, sub-problem P) Begin
return the quality of the resulting complete solution; End
2.3. Permainan (Game)
Games merupakan salah satu bidang terapan dalam kecerdasan buatan. Penyelesaian games dilakukan dengan cara menelusuri pohon permainan (game tree). Pohon permainan adalah sebuah graf yang memperlihatkan semua kemungkinan keadaan dalam permainan yang dilakukan oleh pemain. Pohon permainan melukiskan node dan jalan yang mengarah dari keadaan awal menuju tujuan atau keadaan saat game dimenangkan.
Ada beberapa alasan mengapa games merupakan domain yang baik untuk dieksplor dalam bidang kecerdasan buatan (Kusumadewi, 2003), yaitu :
1. Sangat mudah untuk menentukan ukuran kesuksesan dan kegagalannya (menang atau kalah).
2. Tidak membutuhkan terlalu banyak pengetahuan. Permainan dapat diselesaikan dengan melakukan pencarian dari arah start sampai posisi menang.
3. Ruang keadaannya mudah direpresentasikan.
5. Sebagian besar game dapat dimodelkan dengan mudah.
6. Sangat mungkin untuk dibandingkan dengan kemampuan manusia.
2.4. Game Summy
Summy merupakan sebuah board game yang dibuat oleh Cwali (Corné van Moorsel) dan merupakan sejenis game Scrable untuk penjumlahan, pengurangan, perkalian atau pembagian. Pemain akan mendapatkan poin dengan membuat penjumlahan, pengurangan, perkalian atau pembagian pada gilirannya. Penjumlahan, pengurangan, perkalian atau pembagian ini dibuat dengan menyusun angka dan operator numerik pada papan permainan. Pemain hanya dapat membuat penjumlahan, pengurangan, perkalian atau pembagian yang valid untuk memperoleh poin dengan kotak yang mereka miliki dan dikombinasikan dengan kotak yang telah ada pada papan permainan. Pemain tidak dapat memindahkan kotak yang telah ada pada papan permainan (Moorsel, 2014).
Gambar 2.3 Game Summy
Berikut ini merupakan penjumlahan, pengurangan, perkalian atau pembagian yang valid pada game Summy :
1. Harus terdapat satu ‘=’ pada setiap penjumlahan, pengurangan, perkalian atau pembagian.
4. Sebuah bilangan yang terdiri lebih dari dua digit angka tidak boleh diawali
dengan ‘0’
5. Dalam satu penjumlahan, pengurangan, perkalian atau pembagian bisa terdapat beberapa operator aritmetika pada setiap di antara dua angka. 6. Operator perkalian dan pembagian lebih dahulu diutamakan daripada
operator penambahan dan pengurangan.
7. Perkalian dan pembagian dijalankan sesuai urutan pembacaan, begitu pula dengan penambahan dan pengurangan.
Gambar 2.4 Penjumlahan, Pengurangan, Perkalian atau Pembagian Valid pada
Summy
Untuk menghitung poin pada game Summy dapat dilakukan dengan menjumlahkan semua digit (0-9) dari penjumlahan, pengurangan, perkalian atau pembagian valid yang dilakukan. Poin dari penjumlahan, pengurangan, perkalian atau pembagian valid tersebut diperoleh dari digit kotak yang pemain letakkan dan semua kotak yang telah ada pada papan permainan. Untuk lebih jelas dapat dilihat pada Gambar 2.5.
2.6. Penelitian Terdahulu
Penelitian mengenai aplikasi game Summy sebelumnya belum ada, karena game ini merupakan varian dari game Scrabble dan tidak dikenal luas. Namun beberapa penelitian yang pernah dilakukan berkaitan dengan menyelesaikan permasalahan dari suatu game (permainan) dengan menggunakan algotitma greedy antara lain untuk permainan Mill (Simanjuntak, 2015), permainan Kartu Remi (Putra, 2014) dan permainan Fill-In Number (Pawardita, 2015).
Tabel 2.1 Penelitian Terdahulu
No. Nama Judul Penelitian Ringkasan
1 Simanjuntak, 2015
Penerapan Algoritma Greedy Pada
Permainan Mill Berbasis Android
Tabel 2.2 Penelitian Terdahulu (Lanjutan)
2 Putra, 2014 Analisis Perbandingan Algoritma Greedy Dan Brute Force Dalam Percarian Kartu Tertinggi Pada Kartu Remi
Pada penelitian ini algoritma greedy digunakan pada pencarian kartu
Sedangkan pada corak dimulai dai sekop, hati, keriting dan wajik.
3 Pawardita, 2015
Aplikasi Permainan Fill-In Numbers Pada Platform Android
Pada penelitian ini algoritma greedy digunakan pada pencarian solusi pada permainan Fill-In Number. Fill-In Numbers dikenal juga sebagai crusadex atau cruzadex ini
merupakan suatu permainan puzzle dari varian teka-teki silang
BAB I
PENDAHULUAN
1.1. Latar Belakang
Permainan atau sering disebut game merupakan sebuah sarana hiburan atau rekreasi yang diminati dan dimainkan oleh banyak mulai dari kalangan anak-anak, remaja, hingga dewasa dengan tujuan bersenang-senang, mengisi waktu luang maupun sebagai olahraga. Dalam pembagian kategori game terdapat 5 jenis kategori, yaitu, Board Game, Card Game, Athetic Game, Children Game, dan Computer Game.
Summy adalah sebuah board game yang diciptakan oleh Corné van Moorse dan merupakan varian dari game Scrabble untuk penjumlahan, pengurangan, perkalian atau pembagian angka-angka. Summy dapat dimainkan oleh dua pemain. Pemain mendapatkan poin dengan membuat penjumlahan, pengurangan, perkalian atau pembagian pada gilirannya. Pemain hanya dapat membuat sebuah penjumlahan, pengurangan, perkalian atau pembagian hanya dengan kotak (block) miliknya yang dikombinasikan dengan kotak lain yang telah ada pada papan game. Penjumlahan, pengurangan, perkalian atau pembagian harus lengkap dan pemain tidak dapat mengambil kembali atau memindahkan kotaknya dari papan game. Setelah giliran pemain usai, pemain mendapatkan kotak-kotak baru secara acak untuk dimainkan kembali.
Kecerdasan buatan 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 computer game. Untuk itu, penulis tertarik untuk merancang dan membangun aplikasi dari board game Summy. Game ini dapat dimainkan oleh dua pemain yang salah satu pemainnya adalah
sementara ini dikenal dengan istilah local maximum. Pada kebanyakan kasus, algoritma Greedy tidak akan menghasilkan solusi paling optimal, begitu pun algoritma Greedy biasanya memberikan solusi yang mendekati nilai optimum dalam waktu yang cukup cepat.
Berdasarkan pemahaman singkat yang telah diberikan, maka penulis ingin
melakukan suatu penelitian yang berjudul “IMPLEMENTASI ALGORITMA GREEDY PADA GAME SUMMY”.
1.2. Rumusan Masalah
Berdasarkan latar belakang yang telah dikemukakan sebelumnya, maka yang menjadi rumusan masalah pada penelitian ini yaitu bagaimana mengimplementasikan algoritma Greedy sebagai kecerdasan buatan pada game Summy.
1.3. Batasan Penelitian
Batasan masalah yang menjadi acuan dalam pengerjaan skripsi ini adalah sebagai berikut:
1. Algoritma Greedy sebagai agen kecerdasan buatan.
2. Bilangan pembentuk penjumlahan, pengurangan, perkalian atau pembagian disusun maksimal 3 digit angka.
3. Agen kecerdasan buatan hanya dapat menggunakan satu operator numerik (‘+’,
‘-’, ‘:’ atau ‘x’) untuk menyusun penjumlahan, pengurangan, perkalian atau
pembagian.
4. Papan game berukuran 25 x 25 kotak.
5. Game dapat dimainkan oleh 2 pemain, yaitu seorang pengguna dan sebuah agen kecerdasan buatan.
6. Terdapat 127 kotak dari kumpulan angka dan operator numerik pada game ini, yang terdiri dari :
a. terdapat masing-masing 8 kotak untuk angka 0 - 9
b. terdapat masing-masing 7 kotak untuk operator numerik ‘+’, ‘-’, ‘:’ dan ‘x’ c. terdapat masing-masing 19 kotak untuk operator numerik ‘=’
1.4. Tujuan Penelitian
Tujuan dari penelitian ini adalah sebagai berikut :
1. Menerapkan algoritma Greedy pada game Summy untuk mendapatkan langkah terbaik yang dilakukan agen kecerdasan buatan.
2. Untuk mengimplementasikan game Summy dalam bentuk computer game.
1.5. Manfaat Penelitian
Manfaat dari penelitian ini diharapkan dapat membangun perangkat lunak game Summy yang mengimplementasikan algoritma Greedy sebagai agen kecerdasan buatan, sehingga pemain mendapatkan lawan bermain.
1.6. Metode Penelitian
Tahapan yang dilakukan dalam penelitian ini adalah: 1. Studi Literatur
Penulisan tugas akhir ini di awali dengan melakukan pembelajaran literatur pada sejumlah buku, artikel, paper, jurnal, makalah, maupun situs internet mengenai konsep kecerdasan buatan, algoritma Greedy, game Summy, pembuatan aplikasi dengan VB.Net dan XNA Framework dan referensi lain yang berkaitan dengan penelitian ini.
2. Analisis dan Perancangan Sistem
Pada tahap ini dilakukan analisis mengenai cara bermain Summy dan bagaimana solusi penyelesaiannya dengan menerapkan Algoritma Greedy dan dilakukan perancangan aplikasi game mengenai tugas akhir ini, seperti: penggambaran flowchart, perancangan aplikasi, dan perancangan antarmuka (interface). 3. Implementasi Sistem
Pada tahap ini akan dilakukan pengkodean dan menerapkan perancangan aplikasinya tersebut ke dalam bahasa pemrograman VB.Net dan XNA Framework.
Dalam tahap ini dilakukan pengujian terhadap aplikasi game Summy yang telah dibangun untuk menguji apakah semuanya telah bekerja sesuai dengan tujuan yang diinginkan.
5. Dokumentasi
Dalam tahapan ini akan dilakukan penulisan laporan mengenai aplikasi tersebut untuk menunjukkan hasil penelitian ini.
1.7. Sistematika Penulisan
Untuk membuat penulisan lebih terstruktur, maka penulisan ini dibagi menjadi lima bab, yaitu sebagai berikut :
BAB 1 : PENDAHULUAN
Pada bab ini membahas tentang latar belakang masalah, perumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi penelitian dan sistematika penulisan.
BAB 2 : LANDASAN TEORI
Pada bab ini membahas tentang teori yang berhubungan dengan penelitian, di antaranya tentang kecerdasan buatan, algoritma Greedy, game Summy, dan teori lainnya yang berkaitan.
BAB 3 : ANALISIS DAN PERANCANGAN SISTEM
Pada bab ini membahas tentang analisis algoritma Greedy untuk pencarian langkah terbaik AI dan perancangan aplikasi pada game Summy.
BAB 4 : IMPLEMENTASI DAN PENGUJIAN SISTEM
Pada bab ini membahas tentang implementasi dari analisis yang dilakukan dan pengujian terhadap aplikasi.
BAB 5 : KESIMPULAN DAN SARAN
ABSTRAK
Summy adalah sebuah board game yang diciptakan oleh Corné van Moorse dan merupakan varian dari game Scrabble. Game ini dapat dimainkan oleh dua orang pemain atau lebih dengan menyusun angka-angka dan operator aritmatika menjadi bentuk penjumlahan, pengurangan, perkalian, atau pembagian. Dan setiap pemain akan mendapatkan poin berdasarkan jumlah total angka-angka yang digunakan pada saat membentuk penjumlahan, pengurangan, perkalian, atau pembagian yang valid pada setiap gilirannya. Tujuan penelitian ini adalah membangun sebuah agen kecerdasan buatan yang dapat menyusun angka-angka dan operator aritmatika menjadi bentuk penjumlahan, pengurangan, perkalian, atau pembagian dengan jumlah poin maksimum pada setiap gilirannya sebagai lawan tanding pemain dalam bentuk computer game. Metodologi yang digunakan yaitu algoritma greedy yang merupakan algoritma yang menggunakan pendekatan penyelesaian masalah dengan mencari nilai maksimum pada setiap langkahnya tanpa memedulikan konsekuensi pada langkah selanjutnya. Hasil yang diperoleh dari computer game yang dibangun adalah penerapan algoritma greedy dalam membangun agen kecerdasan buatan dapat memberikan lawan tanding yang cukup kompetitif bagi pemain.
THE IMPLEMENTATION OF GREEDY ALGORITHM IN SUMMY GAME
ABSTRACT
Summy is a board game created by Corné van Moorse and is a variant of the game Scrabble. This game can be played by two or more persons by compiling the numbers and arithmetic operators into the shape of addition, subtraction, multiplication, or division. And each player will earn points based on the total number of figures used at the time of forming addition, subtraction, multiplication, or division valid at every turn. The purpose of this research is to build an artificial intelligence agent who could arrange the numbers and arithmetic operators to form the summing, subtraction, multiplication, or division with the maximum number of points on each turn as a rival in the form of computer game players. The methodology used is the greedy algorithm is an algorithm that uses a problem-solving approach to find the maximum value at every step of ignoring the consequences for the next step. The results of the computer game built greedy algorithm is the application of artificial intelligence in the build agent can provide sufficient competitive opponent for the player.
SKRIPSI
REZA HIDAYAT BAYU PRABOWO
091401068
PROGRAM STUDI S-1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah
Sarjana Ilmu Komputer
REZA HIDAYAT BAYU PRABOWO
091401068
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
PERSETUJUAN
Judul : IMPLEMENTASI ALGORITMA GREEDY PADA GAME SUMMY
Kategori : SKRIPSI
Nama : REZA HIDAYAT BAYU PRABOWO
Nomor Induk Mahasiswa : 091401068
Program Studi : SARJANA (S1) ILMU KOMPUTER Departemen : ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Siti Dara Fadilla, S.Si, M.T Dr. Syahril Efendi, S.Si, M.IT NIP. 197705162005012001 NIP. 196711101996021001
Diketahui/Disetujui oleh
Program Studi S1 Ilmu Komputer Ketua,
PERNYATAAN
IMPLEMENTASI ALGORITMA GREEDY PADA GAME SUMMY
SKRIPSI
Saya menyatakan bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Medan, 24 Januari 2017