Implementasi Algoritma Greedy Pada Game Summy

(1)

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 Pengujian

Hasil yang Diharapkan

Hasil Pengujian Kesimpulan 1. Tampilan

ketika aplikasi dieksekusi Aplikasi menampilkan halaman Menu Utama Aplikasi berhasil menampilkan halaman Menu Utama Valid

2. Pemilihan menu Mulai Aplikasi menampilkan halaman Games Aplikasi berhasil menampilkan halaman Games Valid

3. Pemilihan menu Bantuan Aplikasi menampilkan halaman Bantuan Aplikasi berhasil menampilkan halaman Bantuan Valid

4. Pemilihan menu Tentang Aplikasi menampilkan halaman Tentang Aplikasi berhasil menampilkan halaman Tentang Valid

5. Pemilihan menu Keluar

Aplikasi berhenti Aplikasi berhasil berhenti

Valid

b. Hasil Evaluasi pada Tampilan Halaman Game

Tabel Hasil Evaluasi Tampilan Halaman Game

No. Sasaran Pengujian

Hasil yang Diharapkan

Hasil Pengujian Kesimpulan 1. Giliran awal

bermain

Aplikasi

mengacak giliran bermain pada awal halaman Game ditampilkan Aplikasi berhasil mengacak giliran bermain dan menampilkan pesannya di layar

Valid

2. Selot kotak-kotak milik pemain dan komputer Aplikasi membagikan masing-masing 8 kotak untuk Aplikasi berhasil membagikan masing-masing 8 kotak untuk pemain dan Valid


(2)

pemain dan komputer komputer ditunjukkan dengan berkurangnya jumlah kotak yang tersisa

3. Selot kotak-kotak milik pemain

Pemain dapat memindahkan kotak-kotak miliknya ke papan game pada saat gilirannya

Pemain berhasil memindahkan semua kotak dari selot miliknya ke papan game pada saat gilirannya

Valid

4. Pemilihan menu Swap / Delete

Pemain dapat mengganti satu atau semua kotak-kotak miliknya dengan kotak yang ada pada

tumpukkan pada saat gilirannya

Pemain berhasil mengganti satu atau semua kotak miliknya dengan men-drag and drop kotak

miliknya baik pada selot maupun yang baru saja

diletakkan pada papan game ke atas menu swap / delete pada saat gilirannya

Valid

5. Pemilihan menu Cancel

Pemain dapat mengembalikan kotak miliknya yang baru saja diletakkan pada papan game ke selot miliknya pada saat gilirannya Pemain berhasil mengembalikan kotak miliknya yang baru saja diletakkan pada papan game ke selot miliknya pada saat gilirannya

Valid

6. Pemilihan menu Next / End Turn Pemain dapat mengakhiri gilirannya Pemain berhasil mengakhiri gilirannya baik dengan memberikan langkah terbaiknya maupun hanya untuk skip gilirannya dengan muncul pesan notifikasi berganti ke giliran komputer Valid


(3)

7. Komputer berhasil menemukan solusi pada saat gilirannya Komputer dapat mencari langkah terbaik dari kotak miliknya dan meletakkannya pada papan game dan giliran permainan berganti ke pemain Komputer berhasil mencari langkah terbaik dari kotak miliknya dan meletakkannya pada papan game dengan muncul pesan notifikasi berganti ke giliran pemain

Valid

8. Komputer gagal menemukan solusi pada saat gilirannya Aplikasi dapat menampilkan informasi jika kesempatan skip miliknya telah berkurang 1 kali dan giliran permainan berganti ke pemain Aplikasi berhasil menampilkan informasi jika kesempatan skip milik komputer telah berkurang 1 kali

Valid

9. Pengecekan papan game setelah giliran pemain atau komputer berakhir Aplikasi dapat mengecek langkah valid yang telah dilakukan pemain atau komputer sesaat setelah gilirannya berakhir. Aplikasi berhasil mengecek langkah valid yang telah dilakukan pemain atau komputer sesaat setelah gilirannya berakhir. Ditunjukkan dengan perubahan warna kotak menjadi hijau dan muncul notifikasi skor yang didapat

Valid

10. Skor Game Aplikasi dapat menampilkan total skor dan skor yang diperoleh pada langkah valid yang didapatkan oleh pemain dan komputer

Aplikasi berhasil menampilkan total skor dan skor yang diperoleh pada langkah valid yang didapatkan oleh pemain dan komputer sesaat setelah mengakhiri gilirannya Valid


(4)

11. Pemilihan menu Home Aplikasi dapat menampilkan menu pilihan untuk mengulang dari awal permainan atau kembali ke halaman Menu Utama Aplikasi berhasil menampilkan menu pilihan untuk mengulang dari awal permainan atau kembali ke halaman Menu Utama Valid

12. Semua kotak pada tumpukkan telah habis Aplikasi akan menghentikan permainan, menghitung total skor yang didapatkan oleh pemain dan komputer dan menentukan pemenang berdasarkan siapa pemilik total skor paling besar Aplikasi berhasil menghentikan permainan, menghitung total skor yang didapatkan, dan menampilkan siapa yang menjadi pemenang berdasarkan skor yang paling besar.

Valid

c. Hasil Evaluasi Tampilan Halaman Bantuan

Tabel Hasil Evaluasi Tampilan Halaman Bantuan

No. Sasaran Pengujian

Hasil yang Diharapkan

Hasil Pengujian Kesimpulan 1. Tampilan

halaman Bantuan Aplikasi dapat menampilkan halaman Bantuan Aplikasi berhasil menampilkan halaman Bantuan Valid

2. Tutup halaman Bantuan

Aplikasi dapat menutup halaman Bantuan ketika area luar halaman Bantuan diklik

Aplikasi berhasil menutup halaman Bantuan ketika area luar halaman Bantuan diklik


(5)

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)


(6)

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)


(7)

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

Storage : 465GB TOSHIBA MQ01ABF050 SCSI Disk Device 3. Operating System : Windows 10 Pro 64-bit


(8)

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

FPS terendah

1,3,5,7,9,+,x,- = 19x3=57

1 0,017 44 2 0,017 60 3 0,017 60

3,4,5,6,7,8,9,- = 94-58=36

1 0,217 20 2 0,217 28 3 0,200 32

0,2,4,6,8,x,:,- = 8-6=2

1 0,017 44 2 0,017 60 3 0,017 60

1,2,3,4,5,6,7,+ = 63+12=75

1 0,233 12 2 0,267 28 3 0,217 56

3,4,5,6,7,8,9,- 94-58=36

1 0,283 20 2 0,217 40 3 0,167 60

0,2,4,6,8,x,:,= 96:48=2

1 0,170 24

2 0,170 56


(9)

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


(10)

LAMPIRAN B

LAMPIRAN PETUNJUK CARA BERMAIN PADA GAME SUMMY

Cara bermain pada game Summy:

1. Pada saat gilirannya bermain, pemain dapat memindahkan kotak dari selot miliknya ke papan permainan dengan cara melakukan drag and drop.


(11)

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.

3. Jika pemain ingin mengembalikan kotak yang baru saja diletakkan pada papan permainan ke selot miliknya lagi, pemain dapat mengklik menu Kembalikan.


(12)

4. Ketika pemain telah berhasil menyusun bentuk penjumlahan, pengurangan, perkalian atau pembagian yang valid maka aplikasi akan mengubah warna kotak tersebut menjadi hijau. Jika tidak valid akan berubah menjadi warna biru.


(13)

5. Pemain dapat mengakhiri gilirannya jika telah menyusun bentuk yang valid untuk memperoleh poin atau jika ingin melewati gilirannya dengan cara mengklik menu Lanjut.

6. Jika giliran pemain berakhir, maka giliran AI bermain. Hal ini ditunjukkan dengan notifikasi di sudut atas halaman dan area milik pemain akan menjadi gelap. Begitu pula sebaliknya saat berganti lagi giliran pemain.


(14)

(15)

(16)

7. Pemenang permainan akan ditentukan berdasarkan skor terbanyak yang diraih saat tidak ada lagi tumpukkan kotak yang tersisa dan pemain dan AI tidak dapat menyusun bentuk lagi.


(17)

LAMPIRAN C

LAMPIRAN LISTING PROGRAM

Kode Program Class GreedyProcess:

Imports System.Text

Imports System.Threading.Tasks

Class GreedyProcess

Private Function PermutasiDikurangi(Data() As String, DaftarYangDihapus As String) As String()

Dim DataKandidat = Data.ToList

Dim Dftr = DaftarYangDihapus.Split("/"c) For Each dft In Dftr

If dft <> "" Then

DataKandidat.Remove(dft) End If

Next

Return DataKandidat.ToArray End Function

Structure JenisList

Friend ListNumerik() As String Friend ListOperator() As String End Structure

Private Function PisahNumerik(Data() As String) As JenisList Dim T As List(Of String) = Data.ToList

Dim D() As String = T.ToArray Dim TipeList As New JenisList Dim i = 0

Dim j = 0 For Each S In D

If Integer.TryParse(S, 0) Then

ReDim Preserve TipeList.ListNumerik(i) TipeList.ListNumerik(i) = S

i += 1 Else

ReDim Preserve TipeList.ListOperator(j) TipeList.ListOperator(j) = S

j += 1 End If Next

Return TipeList End Function

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


(18)

Array.Reverse(TempData)

If Not TempData Is Nothing AndAlso TempData.Contains("=") And TempData.Count > 0 Then

'SyncLock kunci

SusunKandidatDanSetUpHasilnya(TempData, KandidatSource, Kpbntu, IsHorizontal, TileYangDipegang, TileBoard, loopState)

'End SyncLock

End If End If End Sub

Private Sub SusunKandidatDanSetUpHasilnya(Data() As String, KandidatSource As GamePlay.KandidatCPUBaseKoordinat, Kpbntu As List(Of Vector2), IsHorizontal

As Boolean, TileYangDipegang As TileBoard(), TileBoard As TileBoard(,),

loopState As ParallelLoopState) If Not AktifCPU Then Exit Sub

End If

Dim TipeList As JenisList = PisahNumerik(Data) For Each t In TipeList.ListOperator

If t.Count >= 2 Then Exit Sub

End If Next

'Dim OPTerpakai As New StringBuilder

Dim A As New List(Of String) SyncLock Kunci1

A = Permutasi(2, TipeList.ListNumerik) End SyncLock

For i = 0 To A.Count - 1

If Not AktifCPU Or CPUPlaceSet Or

CInt(TimeSpan.FromSeconds(WaktuTungguBerjalan).ToString("mm")) >=

BatasWaktuTunggu Then Exit For End If

Dim BExtract = PermutasiDikurangi(TipeList.ListNumerik, A(i)) If BExtract.Count > 0 Then

Dim B As New List(Of String) SyncLock Kunci2

B = Permutasi(2, BExtract) End SyncLock

If B.Count > 0 AndAlso B.First <> "" Then For j = 0 To B.Count - 1

If Not AktifCPU Or CPUPlaceSet Or

CInt(TimeSpan.FromSeconds(WaktuTungguBerjalan).ToString("mm")) >=

BatasWaktuTunggu Then

Exit For End If

Dim CExtract = PermutasiDikurangi(TipeList.ListNumerik, A(i) & B(j))

If CExtract.Count > 0 Then Dim C As New List(Of String) SyncLock Kunci3

C = Permutasi(2, CExtract) End SyncLock

If C.Count > 0 AndAlso C.First <> "" Then For k = 0 To C.Count - 1

If Not AktifCPU Or CPUPlaceSet Or

CInt(TimeSpan.FromSeconds(WaktuTungguBerjalan).ToString("mm")) >=

BatasWaktuTunggu Then


(19)

End If

For Each OP In TipeList.ListOperator 'If Not

OPTerpakai.ToString.Contains(OP) Then

Select Case OP Case "+"

If CDbl(A(i).Replace("/", "")) + CDbl(B(j).Replace("/", "")) = CDbl(C(k).Replace("/", "")) Then

'OPTerpakai.Append(OP)

Dim tempstr As StringBuilder = New StringBuilder

tempstr.Append(A(i).Replace("/", "")) tempstr.Append("+") tempstr.Append(B(j).Replace("/", "")) tempstr.Append("=") tempstr.Append(C(k).Replace("/", ""))

Dim Arr() As Char = tempstr.ToString.ToCharArray

Dim TN As Integer = 0 For Each Ar In Arr

If Integer.TryParse(Ar, 0) Then

TN += Val(Ar) End If

Next

CekKePapanPermainan(tempstr.ToString, KandidatSource, Kpbntu, IsHorizontal, TileYangDipegang, TileBoard, loopState)

End If Case "-"

If CDbl(A(i).Replace("/", "")) - CDbl(B(j).Replace("/", "")) = CDbl(C(k).Replace("/", "")) Then

'OPTerpakai.Append(OP)

Dim tempstr As StringBuilder = New StringBuilder

tempstr.Append(A(i).Replace("/", "")) tempstr.Append("-") tempstr.Append(B(j).Replace("/", "")) tempstr.Append("=") tempstr.Append(C(k).Replace("/", ""))

Dim Arr() As Char = tempstr.ToString.ToCharArray

Dim TN As Integer = 0 For Each Ar In Arr

If Integer.TryParse(Ar, 0) Then

TN += Val(Ar) End If

Next

CekKePapanPermainan(tempstr.ToString, KandidatSource, Kpbntu, IsHorizontal, TileYangDipegang, TileBoard, loopState)

End If Case "x"


(20)

If CDbl(A(i).Replace("/", "")) * CDbl(B(j).Replace("/", "")) = CDbl(C(k).Replace("/", "")) Then

'OPTerpakai.Append(OP)

Dim tempstr As StringBuilder = New StringBuilder

tempstr.Append(A(i).Replace("/", "")) tempstr.Append("x") tempstr.Append(B(j).Replace("/", "")) tempstr.Append("=") tempstr.Append(C(k).Replace("/", ""))

Dim Arr() As Char = tempstr.ToString.ToCharArray

Dim TN As Integer = 0 For Each Ar In Arr

If Integer.TryParse(Ar, 0) Then

TN += Val(Ar) End If

Next

CekKePapanPermainan(tempstr.ToString, KandidatSource, Kpbntu, IsHorizontal, TileYangDipegang, TileBoard, loopState)

End If Case ":"

If CDbl(A(i).Replace("/", "")) / CDbl(B(j).Replace("/", "")) = CDbl(C(k).Replace("/", "")) Then

'OPTerpakai.Append(OP)

Dim tempstr As StringBuilder = New StringBuilder

tempstr.Append(A(i).Replace("/", "")) tempstr.Append(":") tempstr.Append(B(j).Replace("/", "")) tempstr.Append("=") tempstr.Append(C(k).Replace("/", ""))

Dim Arr() As Char = tempstr.ToString.ToCharArray

Dim TN As Integer = 0 For Each Ar In Arr

If Integer.TryParse(Ar, 0) Then

TN += Val(Ar) End If

Next

CekKePapanPermainan(tempstr.ToString, KandidatSource, Kpbntu, IsHorizontal, TileYangDipegang, TileBoard, loopState)

End If End Select 'End If Next Next End If End If Next End If


(21)

End If Next End Sub

Friend Function Permutasi(NPermutasi As Integer, Data() As String) As List(Of String)

Dim DPermutasi As New List(Of String) Dim Layak As Boolean

If Not Data Is Nothing AndAlso Data.Count > 0 Then For n = NPermutasi To 0 Step -1

Dim Banyak(n) As Integer

Dim FPermutasi As Boolean = True Do

SusunPermutasi(FPermutasi, Banyak, DPermutasi, Data, Layak) If FPermutasi = False Then

Exit Do End If Loop Next End If Return DPermutasi End Function

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)

If FPermutasi Then Layak = True

If Banyak.Count > 1 Then

For i = 0 To Banyak.Count - 1 If i < Banyak.Count - 1 Then

If (Banyak(i)) = (Banyak(i + 1)) Then Layak = False

End If Else

If (Banyak(i)) = (Banyak(0)) Then Layak = False

End If End If

If Layak = False Then Exit For

End If Next End If

Dim TemP As New StringBuilder If Layak = True Then

For d = Banyak.Count - 1 To 0 Step -1 TemP.Append(Data(Banyak(d))) TemP.Append("/")

Next

If TemP.ToString = "0/" Then Dim asda = TemP

End If

If TemP.ToString.Length <= 2 Or (TemP.ToString.Length > 1 AndAlso TemP.ToString.Substring(0, 1) <> "0") Then

DPermutasi.Add(TemP.ToString) End If

End If


(22)

If i > 0 Then

If Banyak(i - 1) > Data.Count - 1 Then Banyak(i) += 1

Banyak(i - 1) = 0 End If

Else

Banyak(i) += 1 End If

If Banyak(Banyak.Count - 1) > Data.Count - 1 Then FPermutasi = False

End If Next End If End Sub

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

If avb >= 0 Then

Cocok = KelayakanCPU(avb, KandidatSource.Koordinat, Solusi, KPbntu, IsHorizontal, TileYangDipegang, TileBoard)

End If

If Cocok Then SyncLock Kunci

If AktifCPU And Not CPUPlaceSet Then

If Not loopState.ShouldExitCurrentIteration Then CPU_LetakHasilTervalidasi(avb,

KandidatSource.Koordinat, Solusi, IsHorizontal, TileYangDipegang, TileBoard) loopState.Stop()

CPUPlaceSet = True End If

End If End SyncLock End If

End Sub

Private Function AvaibleFormula(HasilSolusi As String, KandidatSource As GamePlay.KandidatCPUBaseKoordinat, KPembantu As List(Of Vector2), TileBoard As TileBoard(,)) As Integer

Dim HslTemp = HasilSolusi.ToList Dim indeks = -1

For Each c In HasilSolusi.ToList

If c = TileBoard(KandidatSource.Koordinat.X, KandidatSource.Koordinat.Y).CharValue Then

indeks = HslTemp.IndexOf(c) 'cTemp.Remove(c) Exit For End If Next Return indeks End Function

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


(23)

Dim Sol As List(Of Char) = Solusi.ToList Dim Plyr = Player.ToList

If AktifCPU Then If avb = 0 Then

If If(IsBaris, Koordinat.Y, Koordinat.X) - 1 >= 0 Then If TileBoard(Koordinat.X - If(Not IsBaris, 1, 0), Koordinat.Y - If(IsBaris, 1, 0)).Value <> 127 Then

Return False End If

End If End If 'Batas Atas

If avb - 1 >= 0 And If(IsBaris, Koordinat.Y, Koordinat.X) - 1 >= 0 Then

For i = avb - 1 To 0 Step -1 If i = 0 Then

If If(IsBaris, Koordinat.Y, Koordinat.X) - (avb + 1 - i) >= 0 Then

If TileBoard(Koordinat.X - If(Not IsBaris, (avb + 1 - i), 0), Koordinat.Y - If(IsBaris, (avb + 1 - i), 0)).Value <> 127 Then

Return False End If

End If End If

'Cek Kpembantu (Tile yang telah ada dipapan permainan)

For Each k In Kpem

If Solusi(i) = TileBoard(k.X, k.Y).CharValue And If(IsBaris, Koordinat.Y - k.Y, Koordinat.X - k.X) = avb - i Then

Kpem.Remove(k)

Sol.Remove(Solusi(i)) i -= 1

Exit For End If Next

If i = 0 Then

If If(IsBaris, Koordinat.Y, Koordinat.X) - (avb + 1 - i) >= 0 Then

If TileBoard(Koordinat.X - If(Not IsBaris, (avb + 1 - i), 0), Koordinat.Y - If(IsBaris, (avb + 1 - i), 0)).Value <> 127 Then

Return False End If

End If End If

If i < 0 Then Continue For End If

'Cek Tile yang ada ditangan Player CPU

For Each p In Plyr

If (Solusi(i) = p.CharValue And If(IsBaris, 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)

Sol.Remove(Solusi(i)) Exit For


(24)

End If Next Next End If

If avb = Solusi.Length - 1 Then

If If(IsBaris, Koordinat.Y, Koordinat.X) + 1 < TileBoard.GetLength(0) Then

If TileBoard(Koordinat.X + If(Not IsBaris, 1, 0), Koordinat.Y + If(IsBaris, 1, 0)).Value <> 127 Then

Return False End If

End If End If 'Batas Bawah

If avb + 1 < Solusi.Length And If(IsBaris, Koordinat.Y, 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 End If

End If End If

'Cek Kpembantu (Tile yang telah ada dipapan permainan)

For Each k In Kpem

If Solusi(i) = TileBoard(k.X, k.Y).CharValue And If(IsBaris, k.Y - Koordinat.Y, k.X - Koordinat.X) = i - avb Then

Kpem.Remove(k)

Sol.Remove(Solusi(i)) i += 1

Exit For End If Next

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 End If

End If End If

If i >= Solusi.Length Then Continue For

End If

'Cek Tile yang ada ditangan Player CPU

For Each p In Plyr

If (Solusi(i) = p.CharValue And If(IsBaris, 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

Not TileBoard(Koordinat.X + If(Not IsBaris, i - avb, 0), Koordinat.Y + If(IsBaris, i - avb, 0)).IsBlocked) Then


(25)

Plyr.Remove(p) Sol.Remove(Solusi(i)) Exit For End If Next Next End If

If Sol.Count = 1 Then Cocok = True End If

End If Return Cocok End Function

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 'Batas Atas

If avb - 1 >= 0 And If(IsHorizontal, Koordinat.Y, Koordinat.X) - 1 >= 0 Then

For i = avb - 1 To 0 Step -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) - (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 End If End If Next Next End If 'Batas Bawah

If avb + 1 < Solusi.Length And If(IsHorizontal, Koordinat.Y, 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

TileBoard(Koordinat.X + If(Not IsHorizontal, i - avb, 0), Koordinat.Y + If(IsHorizontal, i - avb, 0)).Value = p.Value


(26)

Exit For End If End If Next Next End If End Sub End Class


(27)

(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

Game Engine : XNA Framework, Monogame KEMAMPUAN KOMPUTER


(28)

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


(29)

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.

Teahan, W. J. 2010. Artificial Intelligence - Agents and Environments. Ventus Publishing ApS.


(30)

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

Untuk memainkan game Summy dibutuhkan sebuah papan game dan kotak-kotak berisi kumpulan angka-angka, operator aritmetika, dan operator penugasan


(31)

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.

12.Pemain diberikan kesempatan untuk melewati gilirannya, namun jika pemain melewati gilirannya dua kali berturut turut semua kotak yang dimiliki pemain akan ditukarkan dengan kotak yang baru dari tumpukkan kotak. Dan kotak-kotak yang akan ditukarkan akan dibuang dari permainan.


(32)

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.

3. Fungsi Seleksi : memilih elemen himpunan kandidat yang memiliki nilai tertinggi.


(33)

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.

1. Untuk setiap kotak hidup yang berada pada papan game yang akan menjadi kotak acuan, langkah (1) dimulai dengan mengelompokkan kotak-kotak yang dimiliki oleh komputer dan kotak acuan yang berada pada papan game ke dalam himpunan kandidat. Seperti yang terlihat pada Gambar 3.2 komputer memiliki himpunan kotak miliknya: {‘2’, ‘3’, ‘1’, ‘:’, ‘4’, ‘=’, ‘x’, ‘+’} dan


(34)

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}


(35)

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

‘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.


(36)

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.

8. Pada langkah keenam akan memeriksa hasil yang didapat dari algoritma Greedy pada langkah kelima ke papan game. Hasil yang didapatkan tersebut akan dicek


(37)

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.


(38)

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.


(39)

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 j = j + 1

i = i + 1

Ya Ya

P1 P2 P3

Tidak

Tidak


(40)

k=0

k < Count(C) ?

r=0

r < Count(Operat or) ?

Operat or(r) = + && A(i)+B(j)=C(k) ?

Declare variabl e: StatusCek, Tem pSolusi

StatusCek=True, TempSolusi = $A(i) + B(j) = C(k)

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 = $A(i) - B(j) = C(k)

Operat or(r) = - && A(i)-B(j)=C(k) ?

Operat or(r) = x && A(i)xB(j)=C(k) ?

StatusCek=True, TempSolusi = $A(i) x B(j) = C(k)

StatusCek=True, TempSolusi = $A(i) : B(j) = C(k)

Operat or(r) = : && A(i):B(j)=C(k) ?

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.


(41)

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


(42)

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


(43)

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


(44)

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


(45)

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 -


(46)

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 -


(47)

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.

Pada antarmuka halaman aplikasi yang dibangun terdapat empat halaman aplikasi, yaitu halaman Menu Utama, halaman Game, halaman Tentang, dan halaman Bantuan. Pada halaman Menu Utama terdapat tiga tombol yaitu tombol Mulai Bermain, tombol Tentang, dan tombol Bantuan yang jika diklik akan muncul animasi transmisi ke halaman yang dituju. Berikut ini adalah transisi halaman pada game Summy seperti pada Gambar 3.15.


(48)

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


(49)

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

Halaman ini berisi papan game Summy, kotak-kotak milik pemain dan AI, skor milik pemain dan AI, langkah terbaik dan histori langkah yang telah dibuat, menu Remove / Swap untuk menukar kotak milik pemain dengan kotak yang ada pada tumpukkan, menu Cancel untuk mengembalikan kotak yang telah diletakkan pemain pada papan game pada saat gilirannya, menu Next untuk mengakhiri giliran pemain, informasi sisa kotak yang tersisa dan informasi waktu. Berikut ini adalah rancangan antarmuka halaman Game seperti pada Gambar 3.17.


(50)

Papa n Pe rma inan (25x25) Sk or dan W ak tu

M ilik AI

Sk or dan W ak tu M ilik Pem ain Kota k-kota k M ilik

AI

Re cent M ove

& T op M O ve

Re cent M ove

& T op M O ve

Cle ar Ne xt Home

T urn Re move

/ Swa p Kota k-kota k y ang

T ersis a Kota k-kota k M ilik Pem ai n

1

2 3

4

5

6 7 8 9

1 0 1 1

1 2

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

kotak milik pemain dengan yang ada pada tumpukkan kotak dengan cara mendrop kotak tersebut ke menu ini.


(51)

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:

1) Sprite yang digunakan untuk menampilkan informasi bantuan petunjuk cara bermain game Summy.


(52)

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.

2) Sprite yang digunakan untuk menu keluar dari halaman Tentang ketika diklik.


(53)

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


(54)

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

Tampilan antarmuka halaman game dapat dilihat pada Gambar 4.2. Halaman ini akan ditampilkan sesaat pemain memilih menu Main pada halaman Menu Utama. Halaman game menampilkan informasi skor pemain dan komputer, informasi waktu yang berjalan pada giliran pemain dan komputer dan total waktu berjalan, papan game Summy berukuran 25 x 25 kotak yang dapat diisi oleh kotak-kotak milik pemain atau komputer, informasi langkah terbaik yang pernah dilakukan pemain dan komputer, informasi delapan langkah yang baru saja dilakukan pemain dan komputer, informasi


(55)

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.


(56)

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.


(57)

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.


(58)

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.

Dari hasil evaluasi pada seluruh halaman antarmuka pada aplikasi Summy yang dibangun dapat disimpulkan aplikasi dapat berjalan dengan baik dan sesuai dengan hasil yang diharapkan. Aspek antarmuka yang dibuat dapat berjalan dengan baik sesuai dengan tujuannya. Namun pada pengujian juga ditemukan tampilan aplikasi tidak akan sesuai yang diharapkan ketika aplikasi dijalankan tidak pada resolusi 1366 x 768 pixel. Dan performa algoritma greedy dalam mencari solusi yang diterapkan pada game Summy sangat berpengaruh pada spesifikasi komputer yang digunakan. Semakin baik spesifikasi komputer yang digunakan maka akan semakin cepat algoritma greedy memproses dan mengolah data hingga membentuk solusi.


(59)

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.


(60)

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.

6. Memaksimalkan tampilan pada resolusi layar yang berbeda. 7. Mengembangkan aplikasi pada platform yang berbeda.


(61)

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).

Manusia bisa menjadi pandai dalam menyelesaikan segala permasalahan di dunia ini karena manusia mempunyai pengetahuan dan pengalaman. Namun bekal pengetahuan saja tidak cukup, manusia juga diberi akal untuk melakukan penalaran, mengambil kesimpulan berdasarkan pengetahuan dan pengalaman yang mereka miliki. Agar komputer bisa bertindak seperti dan sebaik manusia, maka komputer juga harus diberi bekal pengetahuan, dan mempunyai kemampuan untuk menalar. Untuk itu pada artificial intelligence, akan mencoba untuk memberikan beberapa metode untuk


(62)

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:

a. Basis Pengetahuan (Knowledge Base), berisi fakta-fakta, teori, pemikiran dan hubungan antara satu dengan lainnya.


(63)

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,


(64)

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

Bidang ilmu ini mempelajari bagaimana membangun sistem atau komputer yang memiliki keahlian untuk memecahkan masalah dan menggunakan penalaran dengan meniru atau mengadopsi keahlian yang dimiliki oleh pakar.


(65)

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.


(66)

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

generate all candidate choices as list L for current sub-problem P;

while (L is not empty OR other finish condition is not met) compute the fitness value of each choice in L;

modify S and P by taking the choice with highest fitness value;

update L according to S and P; end while;

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.


(1)

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.


(2)

vi

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.


(3)

DAFTAR ISI

Hal.

HALAMAN JUDUL i

PERSETUJUAN ii

PERNYATAAN iii

PENGHARGAAN iv

ABSTRAK v

ABSTRACT vi

DAFTAR ISI vii

DAFTAR TABEL ix

DAFTAR GAMBAR x

BAB I PENDAHULUAN 1

1.1. Latar Belakang 1

1.2. Rumusan Masalah 2

1.3. Batasan Penelitian 2

1.4. Tujuan Penelitian 3

1.5. Manfaat Penelitian 3

1.6. Metode Penelitian 3

1.7. Sistematika Penulisan 4

BAB II LANDASAN TEORI 5

2.1. Kecerdasan Buatan 5

2.2. Algoritma Greedy 9

2.3. Permainan (Game) 10

2.4. Game Summy 11

2.6. Penelitian Terdahulu 13

BAB III ANALISIS DAN PERANCANGAN SISTEM 15

3.1. Analisis Game Summy 15

3.2. Analisis Algoritma Greedy pada Game Summy 17

3.3. Perancangan Sistem 24


(4)

viii

3.3.2 Perancangan Aplikasi Game 25

3.3.3 Pemodelan Visual Menggunakan UML 26

3.4 Perancangan Transisi Halaman dan Antarmuka 32

3.4.1 Transisi Halaman 32

3.4.2 Antarmuka 33

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM 38

4.1 Implementasi Sistem 38

4.1.1 Spesifikasi Perangkat Lunak 38

4.1.2 Spesifikasi Perangkat Keras 38

4.2 Tampilan Aplikasi 39

4.2.1 Tampilan Halaman Menu Utama 39

4.2.2 Tampilan Halaman Game 39

4.2.3 Tampilan Halaman Bantuan 42

4.2.4 Tampilan Halaman Tentang 42

4.3 Pengujian Sistem 43

BAB V KESIMPULAN DAN SARAN 44

5.1 Kesimpulan 44

5.2 Saran 44

DAFTAR PUSTAKA 46

LAMPIRAN A 47


(5)

DAFTAR TABEL

Hal.

Tabel 2.1 Penelitian Terdahulu 13

Tabel 2.2 Penelitian Terdahulu (Lanjutan) 14

Tabel 3.1 Bentuk Penjumlahan, Pengurangan, Perkalian, atau Pembagian 17 Tabel 3.2 Pengelompokan Himpunan Kandidat Berdasarkan Tipe 19 Tabel 3.3 Hasil Permutasi Himpunan Numerik (Menjadi Himpunan A) 19 Tabel 3.4 Hasil Permutasi Himpunan Numerik (Menjadi Himpunan B) 20 Tabel 3.5 Hasil Permutasi Himpunan Numerik (Menjadi Himpunan C) 21 Tabel 3.6 Hasil Pembentukan Bentuk Perkalian dan Pembagian 21

Tabel 3.7 Use Case Spesification Mulai Bermain 27

Tabel 3.8 Use Case Specification Bermain 28

Tabel 3.9 Use Case Specification Evaluasi Langkah 29

Tabel 3.10 Use Case Specification Lihat Tentang 30


(6)

x

DAFTAR GAMBAR

Hal. GAMBAR 2.1 Penerapan Konsep Kecerdasan Buatan di Komputer 7

GAMBAR 2.2 Domain Area 7

GAMBAR 2.3 Game Summy 11

GAMBAR 2.4 Penjumlahan, Pengurangan, Perkalian atau Pembagian Valid pada Summy 12

GAMBAR 2.5 Memperoleh Score pada Summy 12

GAMBAR 3.1 Kotak-Kotak yang Disusun pada Game Summy 15

GAMBAR 3.2 Kotak Milik Komputer pada Set Awal Game Summy 18

GAMBAR 3.3 Cek Papan Game 22

GAMBAR 3.4 Kotak Milik Komputer Dicocokkan ke Papan Game 23 GAMBAR 3.5 Kotak Milik Komputer Setelah Diletakkan Pada Papan Game 23

GAMBAR 3.6 Flowchart Algoritma Greedy pada Game Summy 24

GAMBAR 3.7 Flowchart Algoritma Greedy pada Game Summy (Lanjutan) 25

GAMBAR 3.8 Flowchart Game Summy 26

GAMBAR 3.9 Use Case Diagram Summy 27

GAMBAR 3.10 Activity Diagram Mulai Bermain 28

GAMBAR 3.11 Activity Diagram Bermain 29

GAMBAR 3.12 Activity Diagram Evaluasi Langkah 30

GAMBAR 3.13 Activity Diagram Lihat Tentang 31

GAMBAR 3.14 Activity Diagram Lihat Bantuan 32

GAMBAR 3.15 Transisi Halaman 33

GAMBAR 3.16 Antarmuka Halaman Menu Utama 33

GAMBAR 3.17 Antarmuka Halaman Game 35

GAMBAR 3.18 Antarmuka Halaman Bantuan 36

GAMBAR 3.19 Antarmuka Halaman Tentang 37

GAMBAR 4.1 Halaman Menu Utama 39

GAMBAR 4.2 Halaman Game 40

GAMBAR 4.3 Pemain Meletakkan Kotak Miliknya ke Papan Game 40 GAMBAR 4.4 Komputer Telah Memilih Bentuk Terbaik dengan Algoritma Greedy 41

GAMBAR 4.5 Game Berakhir dengan Kemenangan Komputer 41

GAMBAR 4.6 Halaman Bantuan 42