Gambar 2.1 Papan Permainan Word Scramble
2.6 Penilaian Kualitas Aplikasi
Untuk menghitung penilaian kualitas dari aplikasi ini dapat dihitung dengan menggunakan rumus 2.1 dan rumus 2.2:
P
k
= fN I
kb
P ........................................ ................................................. 2.1
total
= ∑ P
k
n ........................................ ................................................. 2.2
Dimana: P
k
dan sangat baik = persentase untuk k kondisi dalam hal tidak baik, kurang baik, baik,
f = total respon dalam k kondisi
N = jumlah responden
I
kb
baik 50, baik 75, dan sangat baik 100 = interpretasi k kondisi terbesar dalam hal ini tidak baik 25, kurang
P
total
n = banyak pertanyaan
= persentase untuk jumlah keseluruhan persentase pertanyaan
M F
R V
C A
V R
E D
G A
E E
N A
UNIVERSITAS SUMATERA UTARA
BAB 3
ANALISIS DAN PERANCANGAN
3.1 Analisis Sistem
Pada analisis sistem ini akan dilakukan analisis terhadap permainan Word Scramble dan algoritma pencarian Linear Search.
3.1.1 Analisis Permainan
Berikut ini aturan permainan yang telah ditetapkan penulis untuk aplikasi permainan Word Scramble:
6. Pemain mencari kata sebanyak-banyaknya dari huruf acak yang terdapat pada papan permainan. Huruf-huruf tersebut harus terhubung secara vertikal,
horizontal atau diagonal. 7. Setiap kotak hanya bisa digunakan satu kali dalam satu kata.
8. Huruf Q selalu berpasangan dengan huruf U Qu. 9. Apabila tebakan pemain benar maka akan mendapatkan nilai dan jika salah
tidak akan mendapatkan nilai. 10. Jawaban minimal terdiri dari tiga huruf dan maksimal delapan huruf.
11. Kata yang sudah ditemukan tidak dapat diulangi. 12. Pemain diberikan waktu selama 120 detik untuk menemukan jawaban.
13. Permainan berakhir ketika waktu habis.
Kata yang ditemukan oleh pemain mempunyai nilai yang berbeda sesuai dengan jumlah huruf pada setiap kata yang sudah masuk dalam daftar kata yang
ditemukan pemain. Daftar nilainya sebagai berikut:
UNIVERSITAS SUMATERA UTARA
Tabel 3.1 Daftar Nilai Jumlah Huruf
Nilai
3 2
4 3
5 5
6 6
7 8
8 9
3.1.2 Analisis Algoritma
Algoritma yang digunakan untuk membangun permainan Word Scramble ini adalah algoritma pencarian. Algoritma ini akan digunakan oleh Komputer
untuk mencocokkan antara jawaban pemain dengan kata di dalam kamus. Pada algoritma Linear Search, ada beberapa properti yang perlu dipertimbangkan
yaitu data dan nilai. Berikut ini adalah penjabaran properti-properti tersebut: 1. Data
Data di dalam permainan Word Scramble ini berbentuk array yang disebut kamus. Array ini berisi kosakata-kosakata bahasa Inggris. Kata-
kata tersebut merupakan simpul-simpul solusi dalam proses penelusuran ini. Penelusuran dimulai dari kata pertama indeks 0
sampai kata terakhir indeks n. 2. Nilai
Nilai kata yang akan ditelusuri yaitu jawaban pemain. Jika kata yang menjadi jawaban pemain terdapat dalam kamus maka jawaban
dianggap benar.
Jika menggunakan Linear Search pada proses penelusuran, maka semua simpul akan dibangkitkan tanpa melihat apakah simpul mendekati
solusi yang diinginkan atau tidak. Penelusuran nilai kata yang dicari dimulai pada indeks 0. Apabila kata pada indeks tersebut sama dengan kata yang
dicari, maka nilai telah ketemu dan jawaban pemain benar. Apabila nilai yang dicari belum ketemu, penelusuran dilanjutkan pada indeks berikutnya. Apabila
sampai akhir pemeriksaan tidak ada data yang sama, berarti nilai yang dicari tidak ada dan jawaban pemain salah.
UNIVERSITAS SUMATERA UTARA
Algoritma Linear Search memeriksa semua posisi dalam array secara berurutan dari indeks 0 sampai n apakah nilaikata yang dicari ada di dalam
kamus. Perbandingan karakter yang terjadi diharapkan n, dengan n adalah jumlah kata pada kamus. Kamus pada permainan ini berisikan 80325 kata.
Pada kasus yang paling buruk, untuk n elemen data harus dilakukan pencarian sebanyak n kali pula. Maka untuk kasus terburuk, kompleksitas algoritma
Linear Search pada permainan ini adalah O80325.
Berikut ini adalah pseudocode dari beberapa prosedur dalam permainan Word Scramble.
const kamus : kamus.txt panjang_kata : 3
huruf_menurun : 4 huruf_mendatar : 4
uk_tombol : 50 waktu : 121
nilai : Array = [null,0,0,2,3,5,6,8,9] var loader : URLLoader
alfabet, kata, kata_ketemu, tombol : Array[] masukan : TextInput
kata_tebakan : String status_kata,status_waktu : Label
tombol_terakhir,tombol_tambah,tombol_hapus, tombol_kembali : Button
hasil_nilai : TextArea t : Timer
i : int procedure WordScramble
procedure Kamus procedure LoadKamus
procedure LoadKamus2 begin
isi_kamus : Stringkamus kata
← isi_kamus.split Tampilan
Papan30,50,huruf_mendatar,huruf_menurun,uk_tombol MulaiWaktuwaktu
end procedure Tampilan
procedure Papan procedure HurufAcak
begin
alfabet = A,B,C,D,E,F,G,H,I,J,K, L,M,N,O,P,QU,R,S,T,U,V,
W,X,Y,Z] frek
← random99
UNIVERSITAS SUMATERA UTARA
if 0= frek and frek =7 then begin
alfabet[0] end
else if frek =8 then begin
alfabet[1] end
else if frek = 9 and frek =11 then begin
alfabet[2] end
else if frek = 12 and frek =15 then begin
alfabet[3] end
else if frek = 16 and frek =27 then begin
alfabet[4] end
else if frek = 28 and frek =29 then begin
alfabet[5] end
else if frek = 30 and frek =31 then begin
alfabet[6] end
else if frek = 32 and frek =37 then begin
alfabet[7] end
else if frek = 38 and frek =44 then begin
alfabet[8] end
... else if frek = 99 then
begin alfabet[25]
end end
procedure HurufTerpilih begin
b ← Buttone.target
if not tombol_terakhir then begin
KataBarub.label end
else if Ketetanggaan b,tombol_terakhir then begin
TambahTebakanb.label end
else begin
KataBarub.label end
tombol_terakhir ← b
b.enabled ← false
UNIVERSITAS SUMATERA UTARA
end procedure TambahTebakan
begin kata_tebakan
← kata_tebakan + huruf end
procedure KataBaru begin
for i ← 0 to tombol.length do
begin tombol[i].enabled
← true end
kata_tebakan ← huruf
end procedure Ketetanggaan
var baris_sesudah ← tombol_sesudahtombol_sesudah + 3
var kolom_sesudah ← tombol_sesudahtombol_sesudah + 3
var baris_sebelum ← tombol_sebelumtombol_sebelum + 3
var kolom_sebelum ← tombol_sebelumtombol_sebelum + 3
begin return baris_sebelum - baris_sesudah = 1 and
kolom_sebelum - kolom_sesudah = 1 end
procedure TambahKata begin
if kata_tebakan.length panjang_kata then begin
KataBaru end
else if not SudahKetemukata_tebakan then begin
var indeks_kata:Number ← CariKatakata_tebakan
if indeks_kata -1 then begin
kata_tebakan ← kata_ketemu
KataBaru Nilai
end else
begin KataBaru
end end
else begin
KataBaru end
end procedure HapusKata
procedure SudahKetemu begin
for i ← 0 to kata_ketemu.length do
begin if a = kata_ketemu[i] then
return true
UNIVERSITAS SUMATERA UTARA
end return false
end procedure CariKata
begin for i
← 0 to kata.length do begin
var Kata:String Kata
← kata[i] if huruf = kata[i] then
begin return i
end end
return -1 end
procedure Nilai begin
var daftar_kata:String nilai_total:Number
for i ← 0 to kata_ketemu.length do
begin var Kata:String
Kata ← kata_ketemu[i]
nilai_total ← nilai_total + nilai[Kata.length]
daftar_kata ← daftar_kata + Kata + \n
end end
procedure MulaiWaktu procedure hitung_waktu
procedure waktu_habis procedure Kembali
end.
Berdasarkan pseudocode di atas, pada procedure HurufTerpilih dapat dilihat bahwa huruf-huruf yang dipilih pemain untuk membentuk sebuah kata harus
bertetangga secara vertikal, horizontal, atau diagonal. Apabila nilai ketetanggaannya benar maka huruf-huruf tersebut dapat diajukan sebagai jawaban oleh pemain.
Panjang kata yang dibentuk pemain juga tidak boleh kurang dari tiga huruf dan tidak melebihi delapan huruf. Selanjutnya kata tersebut akan dicari di dalam kamus.
Penelusuran dimulai dari kata awal hingga kata terakhir dalam kamus sampai ditemukan kata yang sesuai. Apabila kata yang dicari telah ditemukan dalam kamus,
maka kata tersebut ditambahkan ke dalam daftar kata yang berhasil ditemukan pemain. Pemain memperoleh nilai total dari hasil penjumlahan nilai masing-masing
kata yang berhasil diperoleh sesuai dengan jumlah huruf dari setiap kata tersebut.
UNIVERSITAS SUMATERA UTARA
Penerapan algoritma Linear Search pada permainan Word Scramble dijelaskan dalam beberapa langkah berikut.
1. Langkah 1 Langkah 1 dimulai dengan melihat apakah huruf-huruf yang dipilih pemain
memiliki nilai ketetanggaan yang benar. Nilai ketetanggan tersebut bernilai benar apabila huruf-huruf yang dipilih saling terhubung secara vertikal,
horizontal, atau diagonal baik ke arah kiri maupun kanan. Jika huruf yang dipilih saling bertetangga, maka pemain dapat mengajukan jawabannya untuk
dijadikan sebagai nilai yang akan dicari di dalam kamus. Seperti yang dapat dilihat pada Gambar , huruf F, A, C, dan E saling berhubungan secara secara
vertikal, horizontal, dan diagonal sehingga didapat kata FACE sebagai nilai yang akan dicari keberadaannya di dalam kamus.
Gambar 3.1 Langkah 1
FACE M
F R
V C
A V
R E
D G
A E
E N
A
W
O S
R C
E B
M A
L R
D Tambah
Hapus
UNIVERSITAS SUMATERA UTARA
2. Langkah 2 Setelah pemain memasukkan kata tebakannya untuk dicari di dalam kamus,
selanjutnya akan diperiksa terlebih dahulu apakah kata tebakannya kurang dari tiga huruf atau lebih dari delapan huruf sebelum dilakukan penelusuran lebih
lanjut. Jika kurang dari tiga huruf atau lebih dari delapan huruf, maka kata tersebut tidak dapat dijadikan tebakan dan pemain harus mencari kata lain.
Misalkan kata yang dipilih adalah FACE. Kata tersebut terdiri dari empat huruf maka kata tersebut dapat dilanjutkan penelusurannya di dalam kamus.
3. Langkah 3 Selanjutnya, penelusuran kata yang akan dicari di dalam kamus. Penelusuran
dimulai dari kata pertama sampai kata terakhir di dalam kamus. Apabila kata atau pola yang dicari ditemukan maka pemain akan mendapatkan nilai yang
sesuai dengan jumlah huruf dari kata tebakannya tersebut. Jika kata yang dicari tidak ditemukan, maka pemain harus mencari kata baru yang lain sebagai
tebakannya. Berdasarkan Tabel Daftar Nilai, untuk kata FACE yang terdiri dari empat huruf maka pemain mendapatkan nilai 3 tiga. Kata tersebut
dimasukkan ke dalam daftar kata yang berhasil ditebak oleh pemain. Pemain dapat melanjutkan permainan sampai waktu yang telah ditentukan habis.
Gambar 3.2 Langkah 3
Kata Baru Ditemukan M
F R
V C
A V
R E
D G
A E
E N
A
Tambah Hapus
Total nilai : 3
Daftar Kata : FACE
W
O S
R C
E B
M A
L R
D
UNIVERSITAS SUMATERA UTARA
3.1.2.1 Flowchart Alur Permainan
Langkah-langkah bermain pada permainan Hangman akan digambarkan dengan flowchart berdasarkan peraturan permainan yang telah ditentukan. Gambar 3.3 berikut
ini akan menjelaskan mengenai alur permainan Hangman.
Start
HurufAcak waktu_sisa = 120
HurufTerpilih
TambahKata
waktu_sisa = 0 ?
End
Ya Tidak
“Waktu habis ”
Gambar 3.3 Flowchart Alur Permainan
Keterangan: waktu_sisa
: jumlah waktu yang diberikan untuk menebak
3.1.2.2 Flowchart HurufAcak
Flowchart ini menggambarkan bagaimana huruf acak yang akan dimasukkan pada papan permainan diperoleh. Penentuan huruf acak didasarkan pada frekuensi huruf
acak pada Tabel 2.1 dengan jumlah seluruh frekuensi adalah 100. Gambar 3.4 merupakan flowchart HurufAcak.
UNIVERSITAS SUMATERA UTARA
Start alfabet[], frek
frek = random99 frek = 0-7 ?
alfabet[0] frek = 8-9 ?
alfabet[1]
Ya Tidak
Ya
alfabet[3] frek = 10-14 ?
alfabet[2]
Ya Tidak
Ya Tidak
frek = 15-17 ?
alfabet[4] frek = 29-30 ?
alfabet[5]
Ya Tidak
Ya Tidak
frek = 18-28 ?
alfabet[7] frek = 31-32 ?
alfabet[6]
Ya Tidak
Ya Tidak
frek = 33-35 ?
alfabet[8] frek = 43 ?
alfabet[9]
Ya Tidak
Ya Tidak
frek = 36-42 ?
alfabet[11] frek = 44 ?
alfabet[10]
Ya Tidak
Ya Tidak
frek = 45-49 ?
alfabet[12] frek = 53-59 ?
alfabet[13]
Ya Tidak
Ya Tidak
frek = 50-52 ?
alfabet[15] frek = 60-66 ?
alfabet[14]
Ya Tidak
Ya Tidak
frek = 67-69 ?
alfabet[16] frek = 71-77 ?
alfabet[17]
Ya Tidak
Ya Tidak
frek = 70 ?
alfabet[19] frek = 78-83 ?
alfabet[18]
Ya Tidak
Ya Tidak
frek = 84-90 ?
alfabet[20] frek = 94 ?
alfabet[21]
Ya Tidak
Ya Tidak
frek = 91-93 ?
alfabet[23] frek = 95 ?
alfabet[22]
Ya Tidak
Ya Tidak
frek = 96 ?
alfabet[25]
Tidak
End alfabet[24]
Ya Tidak
frek = 97-98 ? A
A
A
A A
A A
A
A
Gambar 3.4 Flowchart HurufAcak
UNIVERSITAS SUMATERA UTARA
Keterangan: frek
: nilai acak untuk alfabet alfabet[]
: array berisi huruf mulai dari A sampai Z
3.1.2.3 Flowchart HurufTerpilih
HurufTerpilih merupakan fungsi yang berguna untuk memeriksa apakah huruf-huruf yang dipilih Pemain saling bertetangga atau tidak. Apabila nilai ketetanggaan antara
huruf yang terakhir dipilih dengan huruf yang sebelumnya telah dipilih adalah benar, maka Pemain dapat melanjutkan tebakannya. Jika nilai ketetanggaannya salah, maka
Pemain harus memilih huruf lain yang bertetangga. Gambar 3.6 merupakan flowchart HurufTerpilih.
Start b, tombol_terakhir,
Ketetanggaan, kata_tebakan, huruf
tombol_terakhir = null ?
Ketetanggaan b, tombol_terakhir =
true ? KataBaru
Ya
Tidak Tidak
kata_tebakan = kata_tebakan + huruf
Ya
tombol_terakhir = b
End
Gambar 3.5 Flowchart HurufTerpilih
UNIVERSITAS SUMATERA UTARA
Keterangan: b
: tombol huruf yang dipilih Pemain sesudah tombol_terakhir tombol_terakhir : tombol huruf terakhir yang dipilih Pemain
Ketetanggaan : tipe boolean untuk menyatakan ketetanggan antara b dan
tombol_terakhir kata_tebakan
: kata tebakan Pemain huruf
: huruf-huruf yang dipilih Pemain
3.1.2.4 Flowchart Ketetanggaan
Flowchart ini menggambarkan bagaimana menentukan huruf-huruf yang dipilih Pemain saling bertetangga atau tidak. Gambar 3.7 merupakan flowchart
Ketetanggaan.
Start Ketetanggaan, baris_sebelum,
baris_sesudah, kolom_sebelum, kolom sesudah
baris_sebelum – baris_sesudah = 1 ?
Ya
Tidak Tidak
Ya
End Ketetanggaan = true
kolom_sebelum – kolom_sesudah = 1
?
Ketetanggaan = false
Gambar 3.6 Flowchart Ketetanggaan
Keterangan: baris_sebelum
: indeks huruf yang sebelumnya dipilih berdasarkan baris baris_sesudah
: indeks huruf yang terakhir dipilih berdasarkan baris kolom_sebelum
: indeks huruf yang sebelumnya dipilih berdasarkan kolom kolom_sesudah
: indeks huruf yang terakhir dipilih berdasarkan kolom
UNIVERSITAS SUMATERA UTARA
3.1.2.5 Flowchart KataBaru
Flowchart ini menggambarkan bagaimana huruf-huruf yang dipilih Pemain dirangkai menjadi sebuah kata. Gambar 3.6 merupakan flowchart KataBaru.
Start i, tombol[],
kata_tebakan, huruf i = 0
tombol[i] = enabled
i = tombol.length
?
kata_tebakan = huruf
End i = i + 1
Ya Tidak
Gambar 3.7 Flowchart KataBaru
Keterangan: i
: jumlah variabel tombol huruf tombol []
: array berisi tombol-tombol huruf
3.1.2.6 Flowchart PeriksaKata
Flowchart ini menggambarkan bagaimana kata yang telah dirangkai oleh Pemain dijadikan kata tebakan. Gambar 3.7 merupakan flowchart PeriksaKata.
UNIVERSITAS SUMATERA UTARA
Start
kata_tebakan.length panjang_kata ?
Nilai KataBaru = “ “
SudahKetemu kata_tebakan = true ?
indeks_kata = CariKatakata_tebakan
indeks_kata -1 ? KataBaru = “ “
kata_ketemu = pushkata_tebakan
KataBaru = “ “ KataBaru = “ “
kata_tebakan, panjang_kata, SudahKetemu, indeks_kata,
CariKata, kata_ketemu
“ Minimal 3 huruf ”
“ Kata baru telah ditemukan ”
“ Kata tidak ada dalam kamus ”
Ya Tidak
Tidak
Tidak Ya
Ya
“ Kata sudah dimasukkan”
End
Gambar 3.8 Flowchart PeriksaKata
Keterangan: panjang_kata : jumlah huruf minimal yang dapat dirangkai menjadi sebuah kata
SudahKetemu : tipe boolean untuk menyatakan apakah kata tebakan sudah ditemukan sebelumnya atau belum
indeks_kata : indeks dari kata tebakan pada kamus
UNIVERSITAS SUMATERA UTARA
CariKata : nilai yang menyatakan apakah kata tebakan terdapat dalam kamus
kata_ketemu : array yang berisi kata tebakan yang benar
3.1.2.7 Flowchart SudahKetemu
SudahKetemu merupakan fungsi yang berguna untuk memeriksa apakah kata yang dijadikan tebakan telah ditemukan sebelumnya. Gambar 3.8 merupakan flowchart
SudahKetemu.
Start
i, a, kata_ketemu, SudahKetemu
i = 0
a = kata_ketemu[i]
?
SudahKetemu = true i =
kata_ketemu.length ?
SudahKetemu = false i = i + 1
End
Ya Tidak
Ya Tidak
Gambar 3.9 Flowchart SudahKetemu
Keterangan: i
: jumlah variabel pada kata_ketemu a
: kata yang sedang diperiksa apakah telah ditemukan sebelumnya
UNIVERSITAS SUMATERA UTARA
3.1.2.8 Flowchart CariKata
CariKata merupakan fungsi yang berguna untuk memeriksa apakah kata tebakan Pemain terdapat di dalam kamus. Fungsi inilah yang menggunakan algoritma
pencarian untuk menemukan kata di dalam kamus. Gambar 3.9 merupakan flowchart CariKata.
Start
i = 0
Kata = kata[i]
huruf = kata[i] ?
CariKata = i i = kata.length ?
CariKata = -1 i = i + 1
End kata, huruf, i,
Kata, CariKata
Ya Ya
Tidak
Tidak
Gambar 3.10 Flowchart CariKata
Keterangan: kata
: kata dalam kamus i
: jumlah kata dalam kamus Kata : variabel dari kata
UNIVERSITAS SUMATERA UTARA
3.1.2.9 Flowchart Nilai
Nilai merupakan fungsi yang berguna untuk menghitung jumlah nilai yang diperoleh dari tiap kata yang berhasil ditebak oleh Pemain. Penentuan nilai dari tiap kata
ditentukan dari banyaknya huruf yang membentuknya. Gambar 3.10 merupakan flowchart Nilai.
Start
i, Kata, kata_ketemu, nilai_total, nilai,
daftar_kata
i = 0
Kata = kata_ketemu[i]
nilai_total = nilai_total + nilai[Kata.length]
daftar_kata = daftar_kata + Kata i =
kata_ketemu.length ? i = i + 1
“Total Nilai : nilai_total” “Daftar Kata : daftar_kata”
End
Ya Tidak
nilai_total = 0
Gambar 3.11 Flowchart Nilai
Keterangan: i
: jumlah kata yang berhasil ditebak Pemain nilai
: nilai berdasarkan banyak huruf tiap kata nilai_total
: Total nilai yang diperoleh Pemain daftar_kata
: Daftar kata yang berhasil ditebak oleh Pemain
UNIVERSITAS SUMATERA UTARA
3.2 Perancangan Sistem