• Tidak ada hasil yang ditemukan

LAMPIRAN A LAMPIRAN HASIL EVALUASI GAME SUMMY DENGAN METODE BLACK BOX TESTING. a. Hasil evaluasi pada Tampilan Halaman Menu Utama

N/A
N/A
Protected

Academic year: 2021

Membagikan "LAMPIRAN A LAMPIRAN HASIL EVALUASI GAME SUMMY DENGAN METODE BLACK BOX TESTING. a. Hasil evaluasi pada Tampilan Halaman Menu Utama"

Copied!
28
0
0

Teks penuh

(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

3

0,050

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

3

1,433

56

(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 Dim Kpem = KPembantu

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

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

2

Seminar Nasional Creative Animation dan Gaming Industry

2013

Gambar

Tabel Hasil Evaluasi Tampilan Halaman Menu Utama  No.  Sasaran
Tabel Hasil Evaluasi Tampilan Halaman Bantuan  No.  Sasaran
Tabel Hasil Evaluasi Tampilan Halaman Tentang  No.  Sasaran
Gambar Tampilan Summy pada resolusi monitor 1024 x 720 pixel
+3

Referensi

Dokumen terkait

Hasil penelitian setelah mahasiswa membuat produk dari limbah (K5PBB) tersebut dilakukan Bazar produk kreatifitas mahasiswa selama satu minggu, dari 5 kategori pertanyaan tentang

Hasil Jawaban :”menurut saya, sudah menjadi keharusan semua pemimpin pendidikan untuk memajukan madrasah yang dipimpinnya dengan melakukan berbagai hal yang bermanfaat

Penelitian multisenter oleh KODI Rinologi (2008) mengenai efektivitas pem- berian larutan cuci hidung air laut steril pada Rinosinusitis bakterial akut yang menilai

Hitung eosinofil bronkus pada tikus asma alergi yang diberi ekstrak patikan kebo secara signifikan lebih rendah dibandingkan dengan tikus asma alergi (A) dan

Proses di mana seseorang atau organisasi merencanakan, mengatur, melaksanakan dan mengevaluasi tindakan dan menentukan tingkat kinerja yang dicapai. Dalam konteks BSCI amfori,

Selain itu, para sineas juga diharapkan untuk tetap berpacu pada tujuan tema utama Ajisaka 2020+ dalam meningkatkan kesadaran masyarakat tentang upaya pencegahan

Abu Tholib berpaling kepada Nabi seraya berkata,“ Para sesepuh anda datang untuk meminta Anda berhenti mengkritik berhala supaya mereka pun tidak mengganggu Anda.â€

Coffee bean physical quality: The effect of climate change adaptation behavior of shifting up cultivation area to a higher elevation.. SAMSUL BAKRI 1,2, ♥ , AGUS SETIAWAN 1,2 ,