7
I.6 Sistematika Penulisan
Pada sistematika penulisan laporan, penulis membagi dalam beberapa bab dengan pokok-pokok permasalahannya. Sistematika secara umum adalah sebagai
berikut :
BAB I PENDAHULUAN
Bab I akan membahas mengenai latar belakang, perumusan masalah, maksud dan tujuan, batasan masalah, metodologi penelitian serta sistematika
penulisan.
BAB II LANDASAN TEORI
Bab II akan berisi tentang bahan, teori dan konsep yang digunakan sebagai landasan atau acuan yang diperlukan terhadap analisis dan perancangan sistem
hingga implementasi dan pengujian.
BAB III ANALISIS DAN PERANCANGAN SISTEM
Bab III terbagi menjadi dua bagian yaitu analisis dan perancangan sistem. Bagian analisis sistem yaitu deskripsi masalah, analisis kasus, analisis masalah,
analisis kebutuhan, menguraikan cara pemecahan masalah dengan menggunakan algoritma A, kemudian akan dilakukan analisis terhadap algoritma A untuk
mengetahui performansi dalam rangka mencari jalan terpendek pada game pathfinding. Selain itu terdapat perancangan sistem yang terbagi menjadi
perancangan komponen, perancangan prosedural dan perancangan antarmuka untuk aplikasi yang akan dibangun sesuai dengan hasil analisis yang telah dibuat.
8
BAB IV IMPLEMENTASI DAN PENGUJIAN
Bab ini menjelaskan implementasi dari hasil analisis dan perancangan yang telah dibuat ke dalam bentuk aplikasi pemograman, kemudian dilakukan
pengujian terhadap aplikasi yang dibangun.
BAB V KESIMPULAN DAN SARAN
Pada bab ini penulis akan mengungkapkan kesimpulan apa saja berdasarkan data hasil analisis yang diperoleh dari pengujian, serta saran yang
dapat berguna bagi pengembangan aplikasi ini selanjutnya.
9
BAB II TINJAUAN PUSTAKA
II.1 Kecerdasan Buatan
Artificial Intelligence AI atau kecerdasan buatan merupakan cabang dari ilmu komputer yang berhubungan dengan pengautomatisasian tingkah laku
cerdas. Pernyataan tersebut juga dapat dijadikan definisi dari AI. Definisi ini menunjukkan bahwa AI adalah bagian dari komputer sehingga harus didasarkan
pada sound theoretical teori suara dan prinsip-prinsip aplikasi dari bidangnya. Prinsip-prinsip ini meliputi struktur data yang digunakan dalam representasi
pengetahuan, algoritma yang diperlukan untuk mengaplikasikan pengetahuan tersebut, serta bahasa dan teknik pemrograman yang digunakan dalam
mengimplementasikannya. Dari beberapa perspektif, AI dapat dipandang sebagai:
1. Dari perspektif kecerdasan, AI adalah bagaimana membuat mesin yang cerdas dan dapat melakukan hal-hal yang sebelumnya hanya dapat dilakukan
manusia. 2. Dari perspektif bisnis, AI adalah sekelompok alat bantu tools yang
berdayaguna dan metodologi yang menggunakan alat-alat bantu tersebut untuk menyelesaikan masalah-masalah bisnis.
3. Dari perspektif pemrograman, AI meliputi studi tentang pemrograman simbolik, pemecahan masalah, dan proses pencarian search.
10
4. Dari perspektif penelitian: a. Riset tentang AI dimulai pada awal tahun 1960-an, percobaan pertama
adalah membuat program permainan catur, membuktikan teori, dan general problem solving.
b. Artificial intelligence adalah nama pada akar dari studi area. Ada dua hal yang sangat mendasar mengenai penelitian-penelitian AI,
yaitu knowledge representation representasi pengetahuan dan search pelacakan. Para peneliti AI terus mengembangkan berbagai jenis teknik baru
dalam menangani sejumlah permasalahan yang tergolong ke dalam AI seperti vision dan percakapan, pemrosesan bahasa alami, dan permasalahan khusus
seperti diagnosa medis. AI seperti bidang ilmu lainnya juga memiliki sejumlah sub-disiplin ilmu
yang sering digunakan untuk pendekatan yang esensial bagi penyelesaian suatu masalah dan dengan aplikasi bidang AI yang berbeda. Gambar II.1 merupakan
sejumlah bidang-bidang tugas task domains dari AI.
Gambar II.1. Bidang-bidang tugas task domains dari AI
11
Aplikasi penggunaan AI dapat dibagi ke dalam tiga kelompok, yaitu : a.
Mundane task Secara harfiah, arti mundane adalah keduniaan. Di sini, AI digunakan
untuk melakukan hal-hal yang sifatnya duniawi atau melakukan kegiatan yang dapat membantu manusia. Contohnya :
1. Persepsi vision speech. 2. Bahasa alami understanding, generation translation.
3. Pemikiran yang bersifat commonsense. 4. Robot control.
b. Formal task
AI digunakan untuk melakukan tugas-tugas formal yang selama ini manusia biasa lakukan dengan lebih baik. Contohnya :
1. Permainangames. 2. Matematika geometri, logika, kalkulus, integral, pembuktian.
c. Expert task
AI dibentuk berdasarkan pengalaman dan pengetahuan yang dimiliki oleh para ahli. Penggunaan ini dapat membantu para ahli untuk
menyampaikan ilmu-ilmu yang mereka miliki. Contohnya : 1. Analisis finansial
2. Analisis medikal 3. Analisis ilmu pengetahuan
4. Rekayasa desain,
pencarian, kegagalan,
perencanaan, manufaktur
12
Aplikasi Artificial Intelegent memiliki dua bagian utama, yaitu : a. Basis Pengetahuan Knowledge Base : berisi fakta - fakta, teori, pemikiran
dan hubungan antara satu dengan lainnya. b. Motor Inferensi Inference Engine : kemampuan menarik kesimpulan
berdasarkan pengalaman.
Gambar II.2. Penerapan konsep kecerdasan buatan di komputer [8] II.2
Teknik-Teknik Dasar Pencarian
Pencarian atau pelacakan merupakan salah satu teknik untuk menyelesaikan permasalahan AI. Keberhasilan suatu sistem salah satunya
ditentukan oleh kesuksesan dalam pencarian dan pencocokan. Teknik dasar pencarian memberikan suatu kunci bagi banyak sejarah penyelesaian yang penting
dalam bidang AI. Ada beberapa aplikasi yang menggunakan teknik pencarian ini, yaitu :
1. Papan game dan puzzle tic-tac-toe, catur, menara hanoi. 2. Penjadwalan dan masalah routing travelling salesman problem.
3. Parsing bahasa dan inteprestasinya pencarian struktur dan arti. 4. Logika pemrograman pencarian fakta dan implikasinya.
5. Computer vision dan pengenalan pola. 6. Sistem pakar bebasis kaidah rule based expert system.
13
Pencarian adalah proses mencari solusi dari suatu permasalahan melalui sekumpulan kemungkinan ruang keadaan state space. Ruang keadaan
merupakan suatu ruang yang berisi semua keadaan yang mungkin. Kondisi suatu pencarian meliputi :
1. Keadaan sekarang atau awal. 2. Keadaan tujuan-solusi yang dijangkau dan perlu diperiksa apakah telah
mencapai sasaran. 3. Biaya atau nilai yang diperoleh dari solusi.
Solusi merupakan suatu lintasan dari keadaan awal sampai keadaan tujuan. Secara umum, proses pencarian dapat dilakukan seperti berikut :
1. Memeriksa keadaan sekarang atau awal. 2. Mengeksekusi aksi yang dibolehkan untuk memindahkan ke keadaan
berikutnya. 3. Memeriksa jika keadaan baru merupakan solusinya. Jika tidak, keadaan baru
tersebut menjadi keadaan sekarang dan proses ini diulangi sampai solusi ditemukan atau ruang keadaan habis terpakai. [8]
II.2.1 Masalah Pencarian
Masalah pencarian merupakan proses pencarian solusi yang direncanakan, yang mencari lintasan dari keadaan sekarang sampai keadaan tujuan. Suatu
masalah pencarian
direpresentasikan sebagai
graf berarah.
Keadaan direpresentasikan sebagai simpul node, sedangkan langkah yang dibolehkan atau
aksi direpresentasikan dengan busur arc. Dengan demikian, secara khusus masalah pencarian didefinisikan sebagai berikut :
14
1. State space ruang keadaan. 2. Start node permukaan simpul.
3. Kondisi tujuan dan uji untuk mengecek apakah kondisi tujuan ditemukan atau tidak.
4. Kaidah yang memberikan bagaimana mengubah keadaan. Terdapat beberapa cara untuk merepresentasikan ruang keadaan, antara lain :
pohon ANDOR, graph keadaan, dan pohon pelacakan. [24]
II.2.1.1 Graph Keadaan
Graph terdiri dari node-node yang menunjukkan keadaan yaitu keadaan awal dan keadaan baru yang akan dicapai dengan menggunakan operator. Node-
node dalam graph keadaan saling dihubungkan dengan menggunakan arc busur yang diberi panah untuk menunjukkan arah dari suatu keadaan ke keadaan
berikutnya. Konsep graph ini pertama diperkenalkan oleh seorang matematikawan dari
Swiss, Leonhard Euler pada abad 18. Pada representasi graph, vertex digambarkan dengan node sedangkan edge digambarkan sebagai yang menghubungkan node-
node tersebut. Contoh representasi graph terhadap suatu peta dapat dilihat pada gambar II.3.
Gambar II.3. Sebuah peta dan representasi graphnya [8]
15
II.2.1.2 Pohon Pencarian
Pelacakan adalah teknik pencarian sesuatu. Dalam pencarian ada dua kemungkinan hasil yang didapat yaitu menentukan dan tidak menemukan.
Sehingga pencarian merupakan teknik yang penting dalam artificial intellegance. Hal ini penting dalam menentukan keberhasilan sistem berdasar kecerdasan
adalah kesuksesan dalam pencarian dan pencocokan. Keberhasilan dan kualitas pencarian diukur dari empat cara yaitu :
a. Kelengkapan Apakah algoritma pencarian menjamin untuk mendapatkan sebuah
penyelesaian jika ada penyelesaian? b. Optimal
Apakah algoritma pencarian akan mendapatkan penyelesaian optimal misal : penyelesaian dengan biaya lintasan minimum
c. Kekompleksan waktu Berapa lama waktu yang digunakan untuk penyelesaian permasalahan?
d. Kekompleksan ruang Berapa banyak memori yang dibutuhkan untuk melakukan pencarian [24]
Untuk menghindari kemungkinan adanya proses pelacakan suatu node secara berulang, maka digunakan struktur pohon. Struktur pohon digunakan untuk
menggambarkan keadaan secara hirarkis. Pohon juga terdiri dari beberapa node. Node yang terletak pada level-
0 disebut juga “akar”. Node akar menunjukkan keadaan awal yang biasanya merupakan topik atau objek. Node akar ini terletak
pada level-0. Node akar mempunyai beberapa percabangan yang terdiri atas
16
beberapa node successor yang sering disebut dengan nama “anak” dan merupakan
node-node perantara. Namun jika dilakukan pencarian mundur, maka dapat dikatakan bahwa
node tersebut memilki predecessor. Node-node yang tidak mempunyai anak sering disebut dengan nama node
“daun” yang menunjukkan akhir dari suatu pencarian, dapat berupa tujuan yang diharapkan goal atau jalan dead end. [25]
II.2.2 Contoh Pencarian
Misalkan ada tiga kotak 1, 2, 3 pada sebuah papan. Sebuah kotak dapat dipindahkan jika tidak ada kotak lain di atasnya dan hanya ada satu kotak yang
boleh dipindahkan. Ada dua kemungkinan pemindahannya, yaitu: 1. Pindahkan sebuah kotak ke atas papan.
2. Pindahkan sebuah kotak ke atas kotak lainnya. Masalah muncul jika diketahui keadaan awalnya initial state atau current state
dan tujuan akhirnya goal state atau final state seperti pada gambar 2.4.
Gambar II.4. Contoh permainan yang merupakan pencarian
Pada gambar II.4 dapat dilihat bahwa ruang keadaan tersebut memiliki 13 elemen atau node, dengan perpindahan sebagai berikut:
1. Perpindahan kotak 1 ke atas papan untuk lintasan d dan e. 2. Perpindahan kotak 3 ke atas papan untuk lintasan a.
3. Perpindahan kotak 1 ke atas kotak 2 untuk lintasan l.
17
4. Perpindahan kotak 1 ke atas kotak 3 untuk lintasan b dan m. 5. Perpindahan kotak 2 ke atas kotak 1 untuk lintasan c dan g.
6. Perpindahan kotak 2 ke atas kotak 3 untuk lintasan i dan j. 7. Perpindahan kotak 3 ke atas kotak 1 untuk lintasan h.
8. Perpindahan kotak 3 ke atas kotak 2 untuk lintasan f dan k.
Gambar II.5. Ruang keadaan
Penyelesaian untuk masalah permainan pada gambar II.5 adalah anggota kumpulan semua lintasan dari keadaan awal hingga tujuan yang lintasannya
ditandai dengan huruf a, d, j, dan l. Secara umum, algoritma pencarian dapat dituliskan seperti berikut :
18
II.3 Algoritma Pencarian Search Algoritms
Permasalahan pencarian dapat diselesaikan dengan beberapa metode yaitu: 1. Metode pencarian yang pertama adalah metode yang sederhana yang
hanya berusaha mencari kemungkinan penyelesaian yang disebut juga pencarian buta.
2. Metode yang lebih kompleks yang akan mencari jarak terpendek. Metode ini adalah British Museum Procedure, Branch and Bound,
Dynamic Programming, Best First Search,Greedy Search, A A Star Search, dan Hill Climbing Search. Metode-metode ini digunakan pada
saat harga perjalanan untuk mencari kemungkinan menjadi perhitungan. Beberapa proceduremetode yang kita terapkan saat
berhadapan dengan musuh. Prosedur ini adalah minimax search dan alpha-beta pruning. Metode ini banyak digunakan pada program-
program seperti catur dan sebagainya. Metode pencarian dikatakan penting untuk meyelesaikan permasalahan
karena setiap state keadaan menggambarkan langkah-langkah untuk menyelesaikan permasalahan. Metode pencarian dikatakan penting untuk
perencanaan karena dalam sebuah permainan akan menentukan apa yang harus dilakukan, dimana setiap state menggambarkan kemungkinan posisi pada suatu
saat. Metode pencarian adalah bagian dari kesimpulan, dimana setiap state menggambarkan hipotesis dalam sebuah rangkaian deduktif. [25]
19
Gambar II.6. Bagan metode pencarian searching
Menurut cara algoritma mengembangkan node dalam proses pencarian, gambar bagan metode penulusuran dibagi menjadi dua golongan, yakni pencarian
buta blind search dan pencarian terbimbing heuristic search. [8]
II.3.1 Pencarian Buta Blind Search
Blind Search adalah pencarian solusi tanpa adanya informasi yang dapat mengarahkan pencarian untuk mencapai goal state dari current state keadaan
sekarang. Informasi yang ada hanyalah definisi goal state itu sendiri, sehingga algoritma dapat mengenali goal state bila menjumpainya.
Dengan ketiadaan informasi, maka blind search dalam kerjanya memeriksamengembangkan node-node secara tidak terarah dan kurang efisien
untuk kebanyakan kasus karena banyaknya node yang dikembangkan. Beberapa contoh algoritma yang termasuk blind seacrh antara lain adalah
Breadth First Search, Uniform Cost Search, Depth First Search, Depth Limited Search, Iterative Deepening Search, dan Bidirectional Search. [1]
20
II.3.2 Pencarian Terbimbing Heuristic Search
Berbeda dengan blind search, heuristic search mempunyai informasi tentang costbiaya untuk mencapai goal state dari current state. Dengan informasi
tersebut, heuristic search dapat melakukan pertimbangan untuk mengembangkan atau memeriksa node-node yang mengarah ke goal state. Misalnya pada pencarian
rute pada suatu peta, bila kita berangkat dari kota A ke kota tujuan B yang letaknya di Utara kota A, dengan heuristic search, pencarian akan lebih
difokuskan ke arah Utara dengan informasi cost ke goal, sehingga secara umum, heuristic search lebih efisien daripada blind search.
Heuristic search untuk menghitung perkiraan cost ke goal state, digunakan fungsi heuristic. Fungsi heuristic berbeda daripada algoritma, dimana
heuristic lebih merupakan perkiraan untuk membantu algoritma, dan tidak harus valid setiap waktu. Meskipun begitu, semakin bagus fungsi heuristic yang
dipakai, semakin cepat dan akurat pula solusi yang didapat. Menentukan heuristic yang tepat untuk kasus dan implementasi yang ada juga sangat berpengaruh
terhadap kinerja algoritma pencarian. Beberapa contoh algoritma pencarian yang menggunakan metode heuristic
search adalah : Best First Search, Greedy Search, A A Star Search, dan Hill Climbing Search.
21
Tabel II.1. Kegunaan heuristic search
Algorima Pencarian
Kegunaan Implementasi
Best First Search Penelusurannya
hanya menggunakan estimasi cost jarak
ke node tujuan, hn akibatnya pencarian tidak menyeluruh.
Sistem pakar, penjadwalan, pencarian
rute pada
peta geografis dan lain-lain.
Greedy Search Pada greedy search ide utamanya
adalah mengembangkan
node dengan nilai estimasi biaya ke goal
yang paling kecil berarti node yang paling dekat ke tujuan.
Masalah penukaran
uang, minimisasi waktu di dalam
sistem penjadwalan, memilih beberapa
jenis investasi
penanaman modal, memilih jurusan di perguruan tinggi,
masalah knapsnak
dan lainnya.
A A Star Search
Menjumlahkan jarak sebenarnya dengan estimasi jaraknya dan
pencariannya menyeluruh, tetapi akan memakai memori yang cukup
besar
untuk menyinpan
node sebelumnya.
Pencarian jalur terpendek pada peta, pencarian jalur angkutan
kota, pencarian jalan pada game, menggerakkan karakter
game, pencarian jalan untuk permainan Lose Your Marble,
penyelesaian permasalahan 8 Puzzle dan lain-lain.
Hill Climbing Search
Hill climbing sering digunakan ketika fungsi heuristic yang bagus
tersedia untuk mengevaluasi state tapi ketika tidak ada yang perlu
dievaluasi maka fungsi ini tidak ada.
Sistem pakar, pencarian lokasi pada peta, dan lain-lain.
II.4 Algoritma A A Star
Algoritma A merupakan perbaikan dari metode BFS dengan memodifikasi fungsi heuristicnya. A A Star akan meminimumkan total biaya
lintasan. Pada kondisi yang tepat, A akan memberikan solusi yang terbaik dalam waktu yang optimal. [8]
22
Pada pencarian rute kasus sederhana, dimana tidak terdapat halangan pada peta, A bekerja secepat dan seefisien BFS. Pada kasus peta dengan halangan, A
dapat menemukan solusi rute tanpa „terjebak’ oleh halangan yang ada.
Pencarian menggunakan algoritma A mempunyai prinsip yang sama dengan algoritma BFS, hanya saja dengan dua faktor tambahan.
1. Setiap sisi mempunyai “cost” yang berbeda-beda, seberapa besar cost untuk
pergi dari satu simpul ke simpul yang lain. 2. Cost dari setiap simpul ke simpul tujuan bisa diperkirakan. Ini membantu
pencarian, sehingga lebih kecil kemungkinan kita mencari ke arah yang salah. Cost untuk setiap simpul tidak harus berupa jarak. Cost bisa saja berupa waktu
bila kita ingin mencari jalan dengan waktu tercepat untuk dilalui. Sebagai contoh, bila kita berkendaraan melewati jalan biasa bisa saja merupakan jarak terdekat,
tetapi melewati jalan tol biasanya memakan waktu lebih sedikit. Algoritma A bekerja dengan prinsip yang hampir sama dengan BFS,
kecuali dengan dua perbedaan, yaitu : 1. Simpul-simpul di list
“terbuka” diurutkan oleh cost keseluruhan dari simpul awal ke simpul tujuan, dari cost terkecil sampai cost terbesar. Dengan kata
lain, menggunakan priority queue antrian prioritas. Cost keseluruhan dihitung dari cost dari simpul awal ke simpul sekarang current node
ditambah cost perkiraan menuju simpul tujuan. 2. Simpul di list
“tertutup” bisa dimasukkan ke list “terbuka” bila jalan terpendek cost lebih kecil menuju simpul tersebut ditemukan.
23
Karena list “terbuka” diurutkan berdasarkan perkiraan cost keseluruhan,
algoritma mengecek simpul-simpul yang mempunyai perkiraan cost yang paling kecil terlebih dahulu, jadi algoritmanya mencari simpul-simpul yang
kemungkinan mengarah ke simpul tujuan. Karena itu, lebih baik perkiraan cost- nya, lebih cepat pencariannya. Cost dan perkiraannya ditentukan oleh kita sendiri.
Bila cost-nya adalah jarak, akan menjadi mudah. Cost antara simpul adalah jaraknya, dan perkiraan cost dari suatu simpul
ke simpul tujuan adalah penjumlahan jarak dari simpul tersebut ke simpul tujuan. Atau agar lebih mudahnya bisa ditunjukkan seperti berikut ini.
fn = gn + hn dengan :
fn = fungsi evaluasi gn = biaya cost yang sudah dikeluarkan dari keadaan sampai keadaan n
hn = estimasi biaya untuk sampai pada suatu tujuan mulai dari n Perhatikan bahwa algoritma ini hanya bekerja bila cost perkiraan tidak lebih besar
dari cost yang sebenarnya. Bila cost perkiraan lebih besar, bisa jadi jalan yang ditemukan bukanlah yang terpendek. [19]
Node dengan nilai terendah merupakan solusi terbaik untuk diperiksa pertama kali pada gn + hn. Dengan fungsi heuristic yang memenuhi kondisi
tersebut, maka pencarian dengan algoritma A dapat optimal. Keoptimalan dari A ini cukup langsung untuk dianalisis apabila
digunakan dengan tree search. Pada kasus ini, A dinilai optimal jika hn adalah sebuah admissible heuristic yaitu nilai hn tidak akan memberikan penilaian lebih
24
pada cost untuk mencapai tujuan. Salah satu contoh dari admissible heuristic adalah jarak dengan menarik garis lurus karena jarak terdekat dari dua titik adalah
dengan menarik garis lurus. Adapun pseudecode dari algoritma A adalah sebagai berikut :
Pada persoalan tentang Romanian Paths Arab – Bucharest yang
terdapat pada buku Russel Norwig penyelesaiannya dengan algoritma A dapat dijelaskan pada gambar II.7.
function a start,goal closedset := the empty set
the set of nodes already evaluated.
openset := set containing the initial node the set of tentaive
nodes to be evaluated. g_score[start] := 0
distance from start along optimal path.
h_score[start] := heuristic_estimate_of_distance[start, goal] f_score[start] := h_score[start]
estimated total distance from start to goal throught y.
while openset is not empty x := the node in openset having the lowest f_score[] value
if x = goal return reconstruct_pathcame_from, goal
remove x from openset add x to closedset
foreach y in neighbor_nodes[x] if y in closedset
continue tentativie_g_score := g_score[x] + dist_between[x,y]
if y not in openset add y to openset
tentativie_is_better := true elseif tentative_g_score g_score[y]
tentative_is_better :=true else
tentative_is_better := false if tentative_is_better = true
came_from[y] := x g_score[y] := tentative_g_score
h_score[y] := heuristic_estimate_of_distance[y, goal] f_score[y] := g_score[y] + h_score[y]
return failure function reconstruct_pathcame_from,current_node
if came_from[current_node] is set p = reconstruct+pathcame_from, came_from[current_node]
return p+current_node else
return the empty path
25
Gambar II.7. Contoh pencarian dengan A [16, p.95]
26
Gambar II.7. Contoh pencarian dengan A lanjutan [16, p.95]
27
Urutan pelacakan key : Pilih node yang belum diekspansikan yang mempunyai
fungsi heuristik f n terkecil. Kesimpulan berdasarkan penelusuran di atas,
solution path-nya adalah : Arad – Sibiu – Rimnicu_Vilcea – Fagaras – Pitesti –
Bucharest. Metode A mirip dengan algoritma pencarian graph yang berpotensial
mencari daerah yang luas pada sebuah peta. Metode A mempunyai fungsi heuristic untuk memandu pencarian ke depan sampai tujuan. Metode A dapat
melakukan backtracking jika jalur yang ditempuh ternyata salah. Metode A dapat melakukannya karena menyimpan jejak track yang mungkin sebagai jalur
yang optimal. Sebagai contoh, jika kita sedang menuju suatu kota dan sampai pada persimpangan jalan, dan memutuskan untuk belok kiri daripada ke kanan,
dan ternyata bila jalan yang dipilih ternyata salah, kita akan kembali ke persimpangan dan mengambil jalan satunya. Itulah yang dilakukan metode A ini.
[23] Performansi algoritma A dapat diketahui dengan melihat perbandingan
metode dari tabel II.2.
Tabel II.2. Perbedaan ketiga algoritma
No. Nama algoritma
Metode Keterangan
1.
2. 3.
Optimal Search Djikstra’s Algorithm
Best First Search A
gn
i
=gn+cn,n
i
hn fn=gn+hn
gn adalah cost dari IS ke node n cn,n
i
adalah cost dari node n ke n
i
hn adalah estimated cost dari jalur terpendek dari node n ke GS
fn adalah fungsi heruistic gn adalah cost dari IS ke node n
hn adalah estimated cost dari jalur terpendek dari node n ke GS
28
Dari informasi pada tabel II.2 di atas dapat dibuktikan bahwa bila :
a. g n = 0 , maka f n = hn sehingga algoritma A akan bertingkah laku
sebagaimana Best First Search.
b. hn = 0, maka f n = g n sehingga algoritma A akan bertingkah laku
sebagaimana Optimal Search Dijkstra’s Algorithm.
Dengan demikian dapat diambil kesimpulan bahwa algoritma A mengkombinasikan kelebihan dari algoritma Optimal Search dan Best First
Search. Dari informasi ini, kita dapat menganalisa dan membandingkan cost ketiga algoritma tersebut.
II.4.1 Kompleksitas Algoritma A A Star
Kompleksitas waktu dari algoritma A tergantung dari heuristicnya. Dalam kasus terburuk worst case, jumlah simpul yang diekspansi bisa
eskponensial dalam solusinya jalan tependek. Akan tetapi, kompleksitasnya bisa berupa polinomial bila fungsi heuristik h bertemu kondisi berikut:
| hx − h
x | = Ologh x
Dimana h adalah heuristik optimal, atau cost pasti untuk menuju tujuan dari x. Dengan kata lain, kesalahan error dari h tidak boleh tumbuh lebih cepat dari
algoritma “perfect heuristic” h yang mengembalikan jarak sebenarnya dari x
menuju tujuan. [16]
II.4.2 Efisien Waktu Algoritma A
Dengan digunakannya fungsi heuristic Hn, algoritma A dapat memfokuskan pencarian pada node-node yang berada pada arah yang mendekati
node tujuan. Kemudian pencarian diterminasikan pada waktu node tujuan
29
diperiksa. Hal ini dapat meminimalisasikan jumlah node yang harus diperiksa dan arena waktu yang diperlukan untuk mendapatkan jalur berbanding lurus dengan
jumlah node yang diperiksa, maka waktu pencarian dapat diminimalisasikan. Walaupun jumlah node yang diperiksa dapat diminimalisasikan, algoritma
A mempunyai kasus terburuk. Pada kasus ini, sebagian besar ataupun keseluruhan node pada jalan diperiksa, sehingga algoritma A bekerja seperti
algoritma dijkstra atau BFS Best-First-Search. Ada dua hal yang dapat menyebabkan keadaan terburuk ini, yaitu keadaan sepadan dan jika jalur yang
dicari tidak ditemukan. [10]
II.4.3 Keadaan Sepadan pada Algoritma A
Jika dua atau lebih node yang diperiksa mempunyai harga fn yang sama, maka keadaan sepadan tie terjadi. Hal ini dimungkinkan karena fn bergantung
pada dua fungsi, yaitu fungsi gn dan hn. Hal ini sangat mungkin terjadi antara node-node yang letaknya berjauhan, dan kemungkinan besar node yang satu
terletak dekat node tujuan sedangkan yang lainnya terletak jauh dari node tujuan.
Gambar II.8. Keadaan sepadan
30
Karena algoritma A memberikan prioritas berdasarkan harga fn, maka jika keadaan sepadan terjadi, terdapat lebih dari satu node dengan prioritas sama.
Akibatnya adalah node-node tersebut akan diperiksa lebih dulu, yang mungkin node tersebut terletak berjauhan dengan node tujuan. Hal ini berakibat turunnya
kinerja algoritma A. [10]
II.4.4 Fungsi Heuristic
BFS dan A sebagai algoritma pencarian yang menggunakan fungsi heuristic
untuk „menuntun’ pencarian rute, khususnya dalam hal pengembangan dan pemeriksaan node-node pada peta. Dalam aplikasi ini, fungsi heuristic yang
dipakai untuk pencarian rute mengisi nilainotasi h pada algoritma BFS dan A. Ada beberapa fungsi heuristic umum yang bisa dipakai untuk algoritma BFS dan
A ini. Salah satunya adalah yang dikenal dengan istilah „Manhattan Distance’.
Fungsi heuristic ini digunakan untuk kasus dimana pergerakan pada peta hanya lurus horizontal atau vertikal, tidak diperbolehkan pergerakan diagonal. [15]
Gambar II.9. Rute dengan langkah diagonal tidak diperbolehkan
31
Perhitungan nilai heuristic untuk node ke-n menggunakan Manhattan Distance adalah sebagai berikut :
hn = absn.x - goal.x + absn.y - goal.y Dimana hn adalah nilai heuristic untuk node n, dan goal adalah node tujuan.
Jika pergerakan diagonal pada peta diperbolehkan, maka digunakan fungsi heuristic selain Manhattan Distance. Untuk mendekati kenyataan, cost untuk
perpindahan node secara diagonal dan orthogonal dibedakan. Cost diagonal adalah 1,4 kali cost perpindahan secara orthogonal.
Gambar II.10. Rute dengan langkah diagonal diperbolehkan
Maka fungsi heuristic yang digunakan adalah sebagai berikut: h_diagonaln = minabsn.x - goal.x + absn.y
– goal.y h_orthogonaln = absn.x - goal.x + absn.y
– goal.y hn = h_diagonaln + h_orthogonal n
– 2 h_diagonaln
Dimana h_diagonaln adalah banyaknya langkah diagonal yang bisa diambil untuk mencapai goal dari node n. h_orthogonal adalah banyaknya langkah
lurus yang bisa diambil untuk mencapai goal dari node n.
32
Nilai heuristic kemudian diperoleh dari h_diagonaln ditambah dengan selisih h_orthogonaln dengan dua kali h_diagonaln. Dengan kata lain, jumlah
langkah diagonal kali cost diagonal ditambah jumlah langkah lurus yang masih bisa diambil dikali cost pergerakan lurus. [14]
II.5 Linked List
Dikembangkan tahun 1955-1956 oleh Allen Newell, Cliff Shaw dan Herbert Simon di RAND Corporation sebagai struktur data utama untuk bahasa
Information Processing Language IPL. IPL dibuat untuk mengembangkan program artificial intelligence, seperti pembuatan Chess Solver. Victor Yngve di
Massachusetts Institute of Technology MIT juga menggunakan linked list pada natural language processing dan machine transitions pada bahasa pemrograman
COMMIT. Linked list adalah salah satu bentuk struktur data, berisi kumpulan data
node yang tersusun secara sekuensial, saling sambung menyambung, dinamis dan tidak terbatas. Pada tabel II.3 dapat disimpulkan linked list lebih optimal
daripada array. Linked list sering disebut juga senarai berantai dan saling terhubung dengan bantuan variabel pointer. Masing-masing data dalam linked list
disebut dengan node simpul yang menempati alokasi memori secara dinamis dan biasanya berupa struct yang terdiri dari beberapa field.
Tabel II.3. Perbandingan array dan linked list
Array Linked list
Statis Dinamis
Penambahanpenghapusan data terbatas Penambahanpenghapusan data tidak terbatas Random access
Sequential access Penghapusan array tidak mungkin
Penghapusan linked list mudah
33
Linked list terdiri dari tiga jenis yaitu single linked list, double linked list dan circular linked list. Salah satu yang akan dijelaskan yaitu tentang single linked
list.
Single linked list adalah linked list dengan simpul berisi satu linkpointer yang mengacu ke simpul berikutnya, ilustrasinya dijelaskan pada gambar II.11.
A B
C D
P Awal
info next
info Info
Info next
next null
Akhir
Gambar II.11. Ilustrasi single linked list
Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data. Pada akhir linked list, node
terakhir akan menunjuk ke NULL yang akan digunakan sebagai kondisi berhenti pada saat pembacaan isi linked list.
Penambahan node baru memiliki tiga cara penyisipan yaitu sisip didepan, sisip ditengah dan sisip diakhir. Pada pembahasan ini akan lebih dijelaskan
tentang sisip didepan, penambahan data didepan akan dikaitan di node paling awal, namun pada saat pertama kali data masih kosong, maka penambahan data
dilakukan dengan cara „Awal’ ditunjukkan ke node baru tersebut. Salah satu contoh penambahan data baru yaitu „A’ dan „B’ dengan penyisipan didepan
sebagai berikut :
34
Baru
info next
data masih kosong
A
info null
Baru
data baru yang akan ditambahkan
Baru info
null
A
Baru info
next
Push A
proses penambahan data baru
A
info null
Awal Akhir
hasil akhir setelah data ditambahkan
A
info null
B
info next
Awal
Baru
Push B A
B
P
info next
info null
Awal Akhir
Akhir
Penambahan data B
Penghapusan data node memiliki tiga cara yaitu hapus didepan, hapus ditengah dan hapus diakhir. Pada pembahasan ini akan dijelaskan tentang hapus
didepan.
A B
info next
info null
Awal Akhir
35
kondisi linked list memiliki data awal lebih dari 1 data, kemudian akan dihapus data „A’ yang terletak pada posisi paling depan.
A B
info next
info null
Posisihapus
P Awal
Akhir
Setelah „Awal’ dipindahkan ke data berikutnya maka hapushancurkan data di Posisihapus, sehingga linked list menjadi seperti di bawah ini.
B
info null
Awal Akhir
II.6 Pathfinding
Pathfinding pencarian jalanrute adalah salah satu bidang penerapan yang sering ditangani oleh kecerdasan buatan khususnya dengan menggunakan
algoritma pencarian. Penerapan yang dapat dilakukan dengan pathfinding antara lain adalah pencarian rute dalam suatu game dan pencarian jalanrute pada suatu
peta. Algoritma pencarian yang dipakai harus dapat mengenali jalan dan elemen peta yang tidak dapat dilewati.
Sebuah algoritma pathfinding yang baik dapat bermanfaat untuk mendeteksi halanganrintangan yang ada pada medan dan menemukan jalan
menghindarinya, sehingga jalan yang ditempuh lebih pendek daripada yang seharusnya bila tidak menggunakan algoritma pathfinding. Lihat ilustrasi pada
gambar II.12.
36
Gambar II.12. Penentuan rute tanpa pathfinding
Pada gambar II.12, dari start menuju goal, tanpa algoritma pathfinding, unit hanya akan memeriksa lingkungan sekitarnya saja dilambangkan dengan
daerah di dalam kotak hijau. Unit tersebut akan maju terus ke atas untuk mencapai tujuan, baru setelah mendekati adanya halangan, lalu berjalan memutar
untuk menghindarinya. Sebaliknya, penentuan rule dengan algoritma pathfinding pada gambar II.13 akan memprediksi ke depan mencari jalan yang lebih pendek
menghindari halangan dilambangkan garis biru untuk mencapai tujuan, tanpa pernah mengirim unit ke dalam „perangkap’ halangan berbentuk U. Karena itu
peran algoritma pathfinding sangat berguna untuk memecahkan berbagai permasalahan dalam penentuan rute.
Gambar II.13. Penentuan rute dengan pathfinding
37
II.7 Perkembangan Game Komputer
Permainan komputer game adalah program komputer yang terdiri dari dunia maya yang dikendalikan oleh sebuah komputer di mana pemainnya bisa
berinteraksi untuk mencapai sejumlah tujuan goal. Permainan komputer juga dapat digolongkan ke dalam beberapa alirangenre:
a. Laga Action b. Petualangan Adventure
c. Bermain Peran Role-Playing RPG d. Simulasi Simulation
e. Olahraga Sports Game pathfinding sendiri dapat digolongkan ke dalam genre simulasi simulation
yang berkaitan erat dengan bentuk kotak. Permainan ini akan memiliki fungsi game engine yaitu artificial intellegence dalam proses pencariannya.
Game Engine disebut juga komponen inti dari sebuah game atau aplikasi interaktif lainnya yang disajikan secara real time. Game engine memberikan
teknologi dasar, mempermudah pengembangan sebuah game dan
bahkan memberikan teknologi yang dapat dijalankan dengan platform yang berdeda-beda,
seperti game console, Operasi sistem berbasis desktop Linux, Max OS, dan Microsoft Windows. Fungsi-fungsi utama yang biasanya disediakan oleh game engine termasuk
didalamnya rendering engine renderer untuk grafik 2D atau 3D, physic engine atau deteksi benturan collation detection, suara, scripting, animation, AI Artificial
Intelligence, networking dan susunan adegankejadianfilm pendek scene graph.
AI
Artificial Intelligence
bisa dikatakan cukup berperan pada sebuah game. AI pada game biasa berinteraksi dengan player dalam berbagai hal, mulai
38
dari bertarung, hingga berjalan. Khusus proses berjalan, algoritma path finding adalah algoritma yang dapat dimanfaatkan untuk membantu aplikasi menemukan
alur jalannya. Game dengan contoh menemukan jalan yaitu game maze labirin, game perang, game sokoban dan game strategi. [20]
II.8 Algoritma Penerapan A pada Game
Setiap permainan memiliki aturan main. Hal ini mempermudah upaya menghasilkan ruang pencarian dan memberikan kebebasan pada para peneliti dari
bermacam-macam ambisi dan kompleksitas sifat serta kurangnya struktur permasalahan. Papan konfigurasi yang digunakan untuk memainkan permainan ini
mudah direpresentasikan pada komputer dan tidak memerlukan bentuk yang kompleks. Permainan dapat menghasilkan sejumlah besar pencarian ruang. Hal ini
cukup besar dan kompleks sehingga membutuhkan suatu teknik yang tangguh untuk menentukan alternatif pengeksplorasian ruang permasalahan. Teknik ini
dikenal dengan nama heuristic dan merupakan area utama dari penelitian tentang AI. Banyak hal yang biasanya dikenal sebagai kecerdasan tampaknya berada
dalam heuristic yang digunakan oleh manusia untuk menyelesaikan permasalahannya. [18]
II.9 Metode Pengembangan Perangkat Lunak
Pada rekayasa perangkat lunak, banyak model yang telah dikembangkan untuk membantu proses pengembangan perangkat lunak. Model-model ini pada
umumnya mengacu pada model proses pengembangan sistem yang disebut System Development Life Cycle SDLC
seperti terlihat pada gambar II.14.
39
Gambar II.14. System Development Life Cycle SDLC
Setiap model yang dikembangkan mempunyai karakteristik sendiri- sendiri. Namun secara umum ada persamaan dari model-model ini, yaitu:
a. Kebutuhan terhadap definisi masalah yang jelas. Input utama dari setiap model pengembangan perangkat lunak adalah pendefinisian masalah yang
jelas. Semakin jelas akan semakin baik karena akan memudahkan dalam penyelesaian masalah.
b. Tahapan-tahapan pengembangan yang teratur. Meskipun model-model pengembangan perangkat lunak memiliki pola yang berbeda-beda, biasanya
model-model tersebut mengikuti pola umum analysis – design – coding –
testing - maintenance. c. Stakeholder
berperan sangat
penting dalam
keseluruhan tahapan
pengembangan. Stakeholder dalam rekayasa perangkat lunak dapat berupa pengguna, pemilik, pengembang, pemrogram dan orang-orang yang terlibat
dalam rekayasa perangkat lunak tersebut. d. Dokumentasi merupakan bagian penting dari pengembangan perangkat lunak.
Masing-masing tahapan dalam model biasanya menghasilkan sejumlah
40
tulisan, diagram, gambar atau bentuk-bentuk lain yang harus didokumentasi dan merupakan bagian tak terpisahkan dari perangkat lunak yang dihasilkan.
e. Keluaran dari proses pengembangan perangkat lunak harus bernilai ekonomis. Nilai dari sebuah perangkat lunak sebenarnya agak susah
dirupiahkan. Namun efek dari penggunaan perangkat lunak yang telah dikembangkan haruslah memberi nilai tambah bagi organisasi. Hal ini dapat
peningkatan keuntungan organisasi, peningkatan “image” organisasi dan lain- lain.
Ada banyak model pengembangan perangkat lunak, antara lain The Waterfall Model, Joint Application Development JAD, Information Engineering IE,
Rapid Application Development RAD termasuk di dalamnya Prototyping, Unified Process UP, Structural Analysis and Design SAD dan Framework for
the Application of System Thinking FAST. Salah satu yang akan dijelaskan yaitu tentang model waterfall.[17]
Model waterfall sebenarnya adalah “linear sequential model”. Model ini
ser ing disebut dengan “classic life cycle” atau model waterfall. Model ini adalah
model yang muncul pertama kali yaitu sekitar tahun 1970 sehingga sering dianggap kuno, tetapi merupakan model yang paling banyak dipakai didalam
Software Engineering SE. Model ini melakukan pendekatan secara sistematis dan urut mulai dari level kebutuhan sistem lalu menuju ke tahap analisis, desain,
coding, testing verification, dan maintenance. Disebut dengan waterfall karena tahap demi tahap yang dilalui harus menunggu selesainya tahap sebelumnya dan
41
berjalan berurutan. Sebagai contoh tahap desain harus menunggu selesainya tahap sebelumnya yaitu tahap requirement.
Gambar II.15. Model waterfall
Gambar II.15 adalah tahapan umum dari proses model waterfall, akan tetapi Roger S. Pressman memecah model ini menjadi enam tahapan meskipun
secara garis besar sama dengan tahapan-tahapan model waterfall pada umumnya. Berikut adalah penjelasan dari tahap-tahap yang dilakukan di dalam model ini
menurut Pressman: 1. Sistem information engineering and modeling. Permodelan ini diawali
dengan mencari kebutuhan dari keseluruhan sistem yang akan diaplikasikan ke dalam bentuk software. Hal ini sangat penting, mengingat software harus
dapat berinteraksi dengan elemen-elemen yang lain seperti hardware, database dan sebagainya. Tahap ini sering disebut dengan Project Definition.
2. Software Requirements Analysis. Proses pencarian kebutuhan diintensifkan dan difokuskan pada software. Untuk mengetahui sifat dari program yang
akan dibuat, maka para software engineer harus mengerti tentang domain informasi dari software, misalnya fungsi yang dibutuhkan, user interface dan
42
sebagainya. Dari dua aktivitas tersebut pencarian kebutuhan sistem dan software harus didokumentasikan dan ditunjukkan kepada pelanggan.
3. Design, proses ini digunakan untuk mengubah kebutuhan-kebutuhan di atas menjadi representasi ke dalam bentuk “blueprint” software sebelum coding
dimulai. Desain harus dapat mengimplementasikan kebutuhan yang telah disebutkan pada tahap sebelumnya. Seperti dua aktivitas sebelumnya, maka
proses ini juga harus didokumentasikan sebagai konfigurasi dari software. 4. Coding, untuk dapat dimengerti oleh mesin, dalam hal ini adalah komputer,
maka desain tadi harus diubah bentuknya menjadi bentuk yang dapat dimengerti oleh mesin, yaitu ke dalam bahasa pemrograman melalui proses
coding. Tahap ini merupakan implementasi dari tahap design yang secara teknis nantinya dikerjakan oleh programmer.
5. Testing verification, sesuatu yang dibuat haruslah diujicobakan. Demikian juga dengan software. Semua fungsi-fungsi software harus diujicobakan, agar
software bebas dari error, dan hasilnya harus benar-benar sesuai dengan kebutuhan yang sudah didefinisikan sebelumnya.
6. Maintenance, pemeliharaan suatu software diperlukan, termasuk di dalamnya adalah pengembangan, karena software yang dibuat tidak selamanya hanya
seperti itu. Ketika dijalankan mungkin saja masih ada errors kecil yang tidak ditemukan sebelumnya, atau ada penambahan fitur-fitur yang belum ada pada
software tersebut. Pengembangan diperlukan ketika adanya perubahan dari eksternal perusahaan seperti ketika ada pergantian sistem operasi, atau
perangkat lainnya. [11]
43
II.10 Borland Delphi
Borland Delphi adalah sebuah alat pengembangan aplikasi-aplikasi untuk sistem operasi Microsoft Windows. Delphi sangat berguna dan mudah digunakan
untuk membuat suatu program berbasis GUI Graphical user interface atau console mode teks.
Semua user interface seperti form, tombol button, dan objek list-list telah disertakan dalam Delphi dalam bentuk komponen atau control. Pengembang dapat
dengan mudah menempatkan komponen-komponen tersebut ke dalam form. Pengembang dapat juga menempatkan control ActiveX pada form untuk membuat
program-program khusus seperti Browser Web dalam waktu yang cepat. Delphi memungkinkan pengembang untuk merancang keseluruhan interface secara
visual, dan dengan cepat dapat diimplementasikan sebuah kode perintah berbasis event event driven dengan mengklik mouse. Dengan IDE Delphi, pengembang
perangkat lunak dapat membuat program windows dengan lebih cepat dan lebih mudah dari sebelumnya.
IDE adalah sebuah singkatan dari Integrated Development Environment yaitu sebuah lingkungan pengembangan yang terintegrasi, istilah IDE popular
untuk menyebut software bahasa pemrograman dimana proses pengembangan programmnya mulai dari coding, designing dan debugging dilakukan pada satu
framework atau pada satu aplikasi yang terintegrasi. IDE delphi tersebut terbagi menjadi tujuh bagian utama, yaitu : menubar,
toolbar, component palette, form designer, code explorer, object treeview dan object inspector.
44
Gambar II.16. IDE Delphi
Menubar dan toolbar merupakan dua bagian yang biasanya terdapat pada aplikasi-aplikasi windows lain. Fungsi dari menubar dan toolbar ini relatif hampir
sama dengan aplikasi windows lain, melainkan hanya menubar yang biasa digunakan dalam pembuatan program.
Gambar II.17. Menu bar dan tool bar
Component Palette berisi kumpulan VCL Visual Component Library yang berguna dalam desain aplikasi. VCL merupakan pustaka untuk komponen
visual, dimana dalam component palette dilambangkan dengan ikon yang
merepresentasikan komponen tersebut. Komponen-komponen VCL pada component palette dikelompokkan ke dalam tab, sesuai dengan fungsinya, dengan maksud untuk
memudahkan programmer dalam memilih komponen yang diinginkannya. Disamping VCL ada juga CLX Component Library for Cross Platform dalam desain aplikasi
pemrograman Delphi.
45
Gambar II.18. Component pallete
Setiap aplikasi biasanya memiliki jendela atau background interface, yang dalam bahasa pemrograman Delphi atau bahkan dalam bahasa pemrograman lain
yang berbasis visual, biasa disebut dengan form. Form Designer berfungsi sebagai tempat untuk mendesain form untuk aplikasi yang akan dibuat, dan juga sebagai
tempat untuk meletakkan komponen-komponen yang kita ambil dari component palette.
Gambar II.19. Form designer
Code Explorer merupakan area di mana kita menuliskan kode program, posisinya secara default terletak dibelakang form. Untuk menampilkan code
explorer di depan form, bisa digunakan tombol F12 pada keyboard. Pada code explorer tersebut, akan terlihat kode-kode dalam bahasa pemrograman Delphi
yang secara otomatis di ’generate’ oleh Delphi, hal ini jelas akan memudahkan
atau mempercepat kita dalam menulis program. Pada code explorer Delphi, ada sebuah fitur yang disebut dengan code completion. Sesuai dengan namanya, code
completion berfungsi melengkapi kode yang kita tulis dalam bentuk pilihanlist
46
dari code-code yang bisa kita gunakan, hal ini akan sangat membantu apabila kita lupa terhadap kode tertentu.
Code completion ini secara otomatis akan muncul ketika anda menekan tombol titik pada keyboard, selain itu untuk menampilkan code completion ini,
anda juga bisa melakukannya dengan menekan kombinasi tombol Ctrl + space secara bersamaan. Disamping code completion, code explorer pada Delphi juga
dilengkapi dengan hint layer berwarna kuning yang muncul ketika mouse didekatkan pada komponen tertentu. Hint ini, muncul ketika kita menggunakan
procedure atau fungsi dan menekan tombol pada keyboard, pada hint tersebut akan muncul nama dan tipe data dari parameter yang digunakan atau informasi
lain yang diperlukan.
Gambar II.20. Code Explorer
Object TreeView adalah bagian yang berisi daftar komponen yang digunakan dalam form designer. Dengan model tampilan bercabang, akan
memudahkan kita dalam menunjuk komponen tertentu terutama jika aplikasi yang dibuat menggunakan banyak komponen.
47
Gambar II.21. Object treeview
Object Inspector adalah bagian yang digunakan untuk memanipulasi sifat atau karakteristik dan event dari komponen yang kita gunakan dalam form
designer. Jendela object inspector terbagi menjadi dua bagian tab, yaitu tab property dan tab event. Tab property digunakan untuk memanipulasi property
yang dimiliki oleh komponen tertentu, misalkan ukuran, warna dan caption dari komponen, sedangkan tab event digunakan untuk menangani pemasukan kode pada
kejadian tertentu dari suatu komponen, misalnya : kejadian ketika komponen button tombol diklik atau onClick.
Sebagaimana yang telah dijelaskan di atas, salah satu fungsi dari object inspector ini adalah untuk mengatur property dari komponen, pengaturan tersebut
tidak akan disimpan pada file unit, melainkan akan disimpan pada file form .dfm.[4]
Gambar II.22. Object inspector
48
BAB III ANALISIS DAN PERANCANGAN SISTEM
Pada bab ini akan dibahas mengenai analisis dan perancangan pada sistem yang dibangun yakni penerapan algoritma A dalam pencarian jalan terpendek
pada game pathfinding.
III.1 Deskripsi Masalah
Deskripsi masalah adalah suatu gambaran masalah yang diangkat dalam penulisan skripsi tentang penerapan algoritma A. Algoritma A A Star
merupakan perbaikan dari metode BFS dengan memodifikasi fungsi heuristicnya. A akan meminimumkan total biaya lintasan. Pada kondisi yang tepat, A akan
memberikan solusi yang terbaik dalam waktu yang optimal. Algoritma A A Star akan diterapkan dalam pencarian jalan terpendek
pada game pathfinding. Pencarian jalan terpendek pada game pathfinding akan diasumsikan dengan titik awal keadaan pertama dan titik tujuan keadaan akhir
yang diimplementasikan pada pencarian di ruang kosong maupun di ruang dengan penghalang seperti halnya permainan labirin. Ruang yang akan dibangun akan
berbentuk puzzle kotak supaya mempermudah dalam penerapan cara kerja algoritma A. Hasil pencarian algoritma tersebut akan menghasilkan jalan
terpendek dari suatu titik awal ke titik tujuan. Untuk mengetahui performansi algoritma A maka akan diadakan
perbandingan dengan algoritma lain. Algoritma A A Star adalah
49
pengembangan dari BFS yang digunakan untuk mencari jalan terpendek shortest path yang sering dipakai dalam game programming.
III.2 Analisis Kasus
Algoritma A A Star akan diterapkan pada analisis kasus pencarian jalan terpendek menuju tujuan pada game pathfinding untuk mencari kecepatan, jarak
langkah menuju tujuan dan simpul yang diperiksa. Dalam kondisi jarak yang ditempuh sangat jauh dan memiliki banyak
rintangan algoritma A cocok untuk mencari solusi yang terbaik. Setiap pergerakan yang dilakukan pada kotak statusnya akan disimpan pada suatu list.
List ini akan digunakan untuk melakukan pengecekan apakah kita sudah pernah membangun status tersebut atau belum agar kita tidak menggerakkan kotak yang
sama berkali-kali ke status yang sama. Dengan menerapkan strategi ini, selain menemukan solusi, algoritma ini juga bisa menemukan langkah terpendek untuk
mencapai solusi tersebut. Untuk lebih jelasnya, cara kerja algoritma A dapat dilihat pada gambar III.1.
Gambar III.1. Proses algoritma A
50
Pada gambar III.1, kotak warna hijau di sebelah kiri adalah node awal, dan kotak merah di sebelah kanan adalah tujuan. Tiga kotak biru di tengah adalah
halangan yang tidak bisa dilewati. Angka-angka dalam kotak masing-masing adalah nilai f kiri atas dan h kanan bawah. Tanda lingkaran dan garis di tengah
kotak menunjukkan parent kotak tersebut. Untuk pergerakan horizontal dan vertikal, costnya adalah sepuluh, sedangkan untuk pergerakan diagonal memakan
cost 14. Pada kotak di sebelah kanan node awal, g bernilai sepuluh dan h bernilai
30. Perhitungannya sederhana saja, g bernilai sepuluh sebab dari node awal ke kotak tersebut hanya perlu bergerak horizontal satu kali. H bernilai 30 didapat dari
banyaknya langkah yang diperlukan untuk mencapai tujuan dari kotak tersebut. Selanjutnya, algoritma ini akan memeriksa kotak mana yang bernilai f-nya
terkecil dan mengembangkan jalan di sekitar kotak tersebut. Dengan cara seperti ini telah dijelaskan di atas sebelumnya, hasil akhir ini adalah seperti gambar III.2.
Gambar III.2. Hasil akhir pencarian A
51
Pada gambar III.2, rute yang ditemukan digambarkan dengan bujur sangkar berbingkai biru dengan lingkaran biru muda di tengahnya. Maka jika
diimplementasikan pada game pathfinding suatu karakter akan melewati halangan dan akhirnya akan menemukan rute terpendek ke tujuan.
III.3 Analisis Masalah
Game pathfinding akan berupa kotak-kotak dengan ordo X x Y, supaya pengguna bisa menentukan sendiri orde yang diinginkan.Pada ordo X x Y, 2 kotak
akan dipakai oleh titik awal dan titik tujuan, sisanya untuk menghasilkan jalan agar terlihat jalurnya yang pada akhirnya akan menentukan jalan terpendek ke
titik tujuan. Maksimal penghalang pada tiap ordo dapat kita tentukan yaitu dengan rumus pada tabel III.1.
Tabel III.1. Maksimal penghalang Ordo
Maksimal Penghalang
X x Y M x N - 2
3 x 3 3 x 3 - 2 = 7
4 x 4 4 x 4 - 2 = 14
5 x 5 5 x 5 - 2 = 23
... x ... ... x ... - 2 = ...
Keterangan : X : Nilai baris
Y : Nilai kolom
Dengan maksimal penghalang X x Y - 2, maka akan menghasilkan jalan yang tidak terlihat disebabkan jarak antara titik awal dan titik tujuan saling
berdekatan, tapi dengan kondisi titik awal dan titik tujuan saling berjauhan maka akan mengahasilkan jalan tidak akan ditemukan. Agar terlihat jalan yang
dihasilkan maka diusahakan titik awal dengan titik tujuan tidak saling berdekatan
52
dan jumlah penghalang yang akan dipasangkan kurang dari maksimal, implementasinya dapat dilihat dengan contoh ordo 3x3 pada gambar III.3.
Keterangan : A : Titik awal
T : Titik Tujuan
Maksimal penghalang yang akan dipasangkan pada ordo lainnya adalah sebanyak ordo tersebut dikurangi dua untuk menempatkan titik awal dan titik
tujuan. Pada gambar III.3 menunjukkan suatu ruang map dengan ordo 3x3 di dalam game yang akan dibangun. Setiap kotak mempresentasikan simpul node.
Setiap kotak terhubung ke delapan kotak yang paling dekat, artinya setiap simpul node terhubung ke simpul lain yang berada di sebelah kanan, kiri, atas-kanan,
bawah-kanan, bawah-kiri, dan atas-kiri dari simpul tersebut. Kotak warna orange dan warna hijau diimplementasikan sebagai penghalang, yaitu kotak yang tidak
dapat dilalui oleh titik awal. Sekarang, kita akan mencari jalan terpendek dari posisi titik awal ke posisi
titik tujuan. Karena titik A tidak terhubung langsung ke titik T, maka kita perlu melewati simpul-simpul tertentu yang pada akhirnya akan mengantarkan ke titik T
dengan jarak sependek mungkin.
: Penghalang
Gambar III.3. Ruang peta map ordo 3 x 3 dengan tiga kondisi
53
III.4 Analisis Pemecahan Masalah dengan Algoritma A A Star
Terdapat beberapa hal yang perlu didefinisikan terlebih dahulu dalam kasus game pathfinding dengan penerapan algoritma A A Star. Adapun istilah-
istilah yang akan dibahas yaitu path, open list, closed list, nilai f, g dan n. Algoritma A menggunakan dua senarai yaitu OPEN dan CLOSED.
OPEN adalah senarai list yang digunakan untuk menyimpan simpul-simpul yang pernah dibangkitkan dan nilai heuristiknya telah dihitung tetapi belum terpilih
sebagai simpul terbaik best node dengan kata lain, OPEN berisi simpul-simpul masih memiliki peluang untuk terpilih sebagai simpul terbaik, sedangkan
CLOSED adalah senarai untuk menyimpan simpul-simpul yang sudah pernah dibangkitkan dan sudah pernah terpilih sebagai simpul terbaik. Artinya, CLOSED
berisi simpul-simpul yang tidak mungkin terpilih sebagai simpul terbaik peluang untuk terpilih sudah tertutup.
1. OPEN LIST adalah list yang menyimpan kemungkinan path yang akan diperiksa. OPEN LIST dibuat terurut berdasarkan nilai f. OPEN LIST
digunakan untuk menentukan secara selektif berdasarkan nilai f jalan yang dikira lebih dekat menuju pada path tujuan. OPEN berisi simpul-simpul yang
masih memiliki peluang untuk terpilih sebagai simpul terbaik best node. 2. CLOSED adalah senarai list untuk menyimpan simpul-simpul yang sudah
pernah dibangkitkan dan sudah pernah terpilih sebagai simpul terbaik best node atau senarai yang menyimpan jalan yang sudah diperiksa dari open list.
Artinya, CLOSED berisi simpul-simpul yang tidak mungkin terpilih sebagai simpul terbaik peluang untuk terpilih sudah tertutup. Kedua list OPEN
54
LIST dan CLOSED LIST ini bertujuan juga untuk menghindari penelusuran berkali-kali jalan rute yang memang sudah diidentifikasi agar tidak masuk
kembali ke dalam OPEN LIST. 3. Nilai F adalah cost perkiraan suatu path yang teridentifikasi. Nilai F
merupakan hasil dari fn. 4. Nilai G hasil dari fungsi gn, adalah banyaknya langkah yang diperlukan
untuk menuju ke path sekarang. 5. Setiap simpul node harus memiliki informasi nilai hn, yaitu estimasi harga
simpul tersebut dihitung dari simpul tujuan yang hasilnya menjadi nilai H. [1] Fungsi f sebagai estimasi fungsi evaluasi terhadap node n, dapat dituliskan :
fn = gn + hn dengan :
fn = fungsi evaluasi jumlah gn dengan hn gn = biaya cost yang dikeluarkan dari keadaan awal sampai keadaan n
hn = estimasi biaya untuk sampai pada suatu tujuan mulai dari n [18] Pergerakan diagonal pada map diperbolehkan, maka digunakan fungsi
heuristic Non-Manhattan Distance. Maka fungsi heuristic yang digunakan adalah sebagai berikut :
h_diagonaln = minabsn.x-goal.x + absn.y-goal.y h_orthogonaln = absn.x-goal.x + absn.y-goal.y
hn = h_diagonaln + h_orthogonal n – 2 h_diagonaln
55
Sudah dijelaskan pada analisis masalah bahwa ordo dapat disesuaikan dengan rentang X x Y, salah satu contoh perhitungan pada game pathfinding ini
akan dijelaskan dengan ordo minimal yaitu 3x3 dikarenakan perhitungan pada ordo berapa pun akan sama. Pada penentuan bobot setiap node akan diberikan
nilai sesuai dengan jarak terdekat ke tujuan, misal node yang terjauh dari tujuan maka diberi bobot yang kecil sedangkan node yang terdekat dengan tujuan diberi
bobot yang lebih besar. Contoh perhitungannya seperti pada gambar III.4 yang diberi nilai bobot yang terkecil yaitu 1 dan bobot selanjutnya ditambahkan 1.
Gambar III.4. Contoh kondisi ruang map yang akan dihitung dengan A
Perhitungan yang dilakukan dengan algoritma A dengan kondisi tanpa penghalang yang terlihat pada gambar III.5.
Gambar III.5. Contoh kondisi i tanpa penghalang dengan pencarian A
Posisi simpul awal = Ax : 0, Ay : 0 Posisi simpul tujuan = goal x : 2, goal y : 2
56
Langkah ke satu n 1,1 : g 1,1 = 1
h_orthogonaln = absn.x-goal.x + absn.y-goal.y
h_orthogonal1,1 = abs1 - 2 + abs1 - 2
= abs-1 + abs-1 = 2
h_diagonaln = minabsn.x-goal.x + absn.y-goal.y
h_diagonal1,1 = minabs1 - 2+abs1 - 2
= minabs-1+abs-1 = min 2
hn = h_diagonaln + h_orthogonal n
– 2 h_diagonaln h1,1
= -2 + 2-2-2 = -2 + 6
= 4 f 1,1
= g 1,1 + h 1,1 = 1 + 4
= 5 n 1,0 : g 1,0 = 1
h_orthogonaln = absn.x-goal.x + absn.y-goal.y
h_orthogonal1,0 = abs1 - 2 + abs0 - 2
= abs-1 + abs-2 = 3
h_diagonaln = minabsn.x-goal.x, absn.y-goal.y
57
h_diagonal1,0 = minabs1 - 2+abs0 - 2
= minabs-1+abs-2 = min 3
hn = h_diagonaln + h_orthogonal n
– 2 h_diagonaln h1,0
= - 3 + 3-2-3 = -3 + 9
= 6 f 1,0
= g 1,0 + h 1,0 = 1 + 6
= 7 n 0,1 : g 0,1 = 1
h_orthogonaln = absn.x-goal.x + absn.y-goal.y
h_orthogonal0,1 = abs0 - 2 + abs1 - 2
= abs-2 + abs-1 = 3
h_diagonaln = minabsn.x-goal.x + absn.y-goal.y
h_diagonal0,1 = minabs0 - 2+abs1 - 2
= minabs-2+abs-1 = min 3
hn = h_diagonaln + h_orthogonal n
– 2 h_diagonaln h0,1
= -3 + 3-2-3 = -3 + 9
= 6
58
f 0,1 = g 0,1 + h 0,1
= 1 + 6 = 7
Gambar III.6. Langkah pertama pencarian BestNode pada kondisi i
Pada gambar III.6 terdapat tiga simpul yang mungkin menjadi BestNode yaitu 1,0 dengan fn=7, 1,1 dengan fn=5 dan 0,1 dengan fn=7.
Dari ke tiga simpul yang mungkin maka dipilihlah simpul 1,1 dengan biaya terkecil yaitu 5.
Langkah ke dua n 2,2 : g 2,2 = 2
h_orthogonaln = absn.x-goal.x + absn.y-goal.y
h_orthogonal2,2 = abs2 - 2 + abs2 - 2
= abs0 + abs0 = 0
h_diagonaln = minabsn.x-goal.x + absn.y-goal.y
h_diagonal2,2 = minabs2 - 2+abs2 - 2
= minabs0+abs0 = min 0
59
hn = h_diagonaln + h_orthogonal n
– 2 h_diagonaln h0,1
= -0 + 0-2-0 = 0 + 0
= 0 f 2,2
= g 2,2 + h 2,2 = 2 + 0
= 2
Gambar III.7. Langkah ke dua pencarian BestNode pada kondisi i
Pada gambar III.7 terdapat satu simpul yang mungkin menjadi BestNode yaitu 2,2 dengan fn=2, dan dikenali sebagai simpul tujuan yaitu 2,2
berarti solusi telah ditemukan.
Gambar III.8. Hasil pencarian jalan dengan Algoritma A pada kondisi i
60
Dari semua perhitungan yang telah dilakukan dipilihlah biayacost terkecil pada setiap langkahnya sehingga akan menghasilkan jalur terpendek yang terlihat pada
gambar III.8. Pada contoh ordo 3x3 dengan kondisi penghalang maksimal dan simpul
awal dengan simpul tujuan saling berdekatan pada kondisi ii dengan posisi simpul awal yaitu 0,0 dan posisi simpul tujuan yaitu 0,1, maka pencarian
simpul yang diperiksa hanya satu simpul saja yaitu simpul 0,1 karena simpul lain yang berdekatan dengan posisi simpul awal merupakan penghalang yang
tidak bisa dilewati, kemudian simpul 0,1 dikenali sebagai simpul tujuan yang berarti solusi telah ditemukan.
Jika kondisi simpul awal dengan simpul tujuan saling berjauhan pada kondisi iii dimanapun posisinya dengan penghalang maksimal, maka solusi tidak
akan ditemukan sebab tidak ada jalan yang dapat dilewati untuk menuju tujuan. Kondisi ii dan iii dapat dilihat pada gambar III.9.
Gambar III.9. Contoh kondisi ii dan iii dengan maksimal penghalang
Pada contoh ordo 3 x 3 dengan kondisi iv yang terlihat pada gambar III.10, akan dihitung pencariannya dengan algoritma A.
61
Gambar III.10. Contoh kondisi iv dengan pencarian A
Posisi simpul awal = Ax : 0, Ay : 0 Posisi simpul tujuan = goal x : 2, goal y : 0
Langkah ke satu n 0,1 : g 0,1 = 1
h_orthogonaln = absn.x-goal.x + absn.y-goal.y
h_orthogonal0,1 = abs0 - 2 + abs1 - 0
= abs-2 + abs1 = 3
h_diagonaln = minabsn.x-goal.x + absn.y-goal.y
h_diagonal0,1 = minabs0 - 2+abs1 - 0
= minabs-2+abs1 = min 3
hn = h_diagonaln + h_orthogonal n
– 2 h_diagonaln h0,1
= - 3+ 3-2-3 = -3 + 9
= 6
62
f 0,1 = g 0,1 + h 0,1
= 1 + 6 = 7
Gambar III.11. Langkah pertama pencarian BestNode pada kondisi iv
Pada gambar III.11 terdapat satu simpul yang mungkin menjadi BestNode yaitu 0,1 dengan fn=7, maka dipilihlah simpul 0,1 dengan biaya yaitu 7.
Langkah ke dua n 0,2 : g 0,2 = 2
h_orthogonaln = absn.x-goal.x + absn.y-goal.y
h_orthogonal0,2 = abs0 - 2 + abs2 - 0
= abs-2 + abs2 = 4
h_diagonaln = minabsn.x-goal.x + absn.y-goal.y
h_diagonal0,2 = minabs0 - 2+abs2 - 0
= minabs-2+abs2 = min 4
63
hn = h_diagonaln + h_orthogonal n
– 2 h_diagonaln h0,2
= - 4+ 4-2-4 = -4 + 12
= 8 f 0,2
= g 0,2 + h 0,2 = 2 + 8
= 10 n 1,2 : g 1,2 = 2
h_orthogonaln = absn.x-goal.x + absn.y-goal.y
h_orthogonal1,2 = abs1 - 2 + abs2 - 0
= abs-1 + abs2 = 3
h_diagonaln = minabsn.x-goal.x + absn.y-goal.y
h_diagonal1,2 = minabs1 - 2+abs2 - 0
= minabs-1+abs2 = min 3
hn = h_diagonaln + h_orthogonal n
– 2 h_diagonaln h1,2
= - 3+ 3-2-3 = -3 + 9
= 6 f 1,2
= g 1,2 + h 1,2 = 2 + 6
= 8
64
Gambar III.12. Langkah ke dua pencarian BestNode pada kondisi iv
Pada gambar III.12 terdapat dua simpul yang mungkin menjadi BestNode yaitu 0,2 dengan fn=10 dan 1,2 dengan fn=8. Dari ke dua simpul yang mungkin
maka dipilihlah simpul 1,2 dengan biaya terkecil yaitu 8. Langkah ke tiga
n 2,2 : g 2,2 = 3 h_orthogonaln
= absn.x-goal.x + absn.y-goal.y h_orthogonal2,2
= abs2 - 2 + abs2 - 0 = abs0 + abs2
= 2 h_diagonaln
= minabsn.x-goal.x + absn.y-goal.y h_diagonal2,2
= minabs2 - 2+abs2 - 0 = minabs0+abs2
= min 2 hn
= h_diagonaln + h_orthogonal n – 2 h_diagonaln
h2,2 = - 2+ 2-2-2
= -2 + 6 = 4
65
f 2,2 = g 2,2 + h 2,2
= 3 + 4 = 7
n 2,1 : g 2,1 = 3 h_orthogonaln
= absn.x-goal.x + absn.y-goal.y h_orthogonal2,1
= abs2 - 2 + abs1 - 0 = abs0 + abs1
= 1 h_diagonaln
= minabsn.x-goal.x + absn.y-goal.y h_diagonal2,1
= minabs2 - 2+abs1 - 0 = minabs0+abs1
= min 1 hn
= h_diagonaln + h_orthogonal n – 2 h_diagonaln
h2,1 = - 1+ 1-2-1
= -1 + 3 = 2
f 2,1 = g 2,1 + h 2,1
= 3+2 = 5
66
Gambar III.13. Langkah ke tiga pencarian BestNode pada kondisi iv
Pada gambar III.13 terdapat dua simpul yang mungkin menjadi BestNode yaitu 2,2 dengan fn=7 dan 2,1 dengan fn=5. Dari ke dua simpul yang mungkin
maka dipilihlah simpul 2,1 dengan biaya terkecil yaitu 5. Langkah ke empat
n 2,0 : g 2,0 = 4 h_orthogonaln
= absn.x-goal.x + absn.y-goal.y h_orthogonal2,0
= abs2 - 2 + abs0 - 0 = abs0 + abs0
= 0 h_diagonaln
= minabsn.x-goal.x + absn.y-goal.y h_diagonal2,0
= minabs2 - 2+abs0 - 0 = minabs0+abs0
= min 0 hn
= h_diagonaln + h_orthogonal n – 2 h_diagonaln
h1,2 = - 0+ 0-2-0
= 0 + 0 = 0
67
f 2,0 = g 2,0 + h 2,0
= 4 + 0 = 4
Gambar III.14. Langkah ke empat pencarian BestNode pada kondisi iv
Pada gambar III.14 terdapat satu simpul 2,0 dengan fn=4 dan dikenali sebagai simpul tujuan yang berarti solusi telah ditemukan.
Gambar III.15. Hasil pencarian jalan dengan Algoritma A pada kondisi iv
Dari perhitungan di atas dipilihlah biayacost terkecil pada setiap langkahnya sehingga akan menghasilkan jalur terpendek yang terlihat pada
gambar III.15. Salah satu masalah dari algoritma A yaitu menggunakan memory yang besar untuk menyimpan simpul node sebelumnya atau path jalan
sebelumnya. Contoh kondisi ruang map yang akan dihitung dengan A pada gambar III.4 bila digambarkan dengan pohon pelacakan, maka pohonnya dapat
68
dilihat pada gambar III.16, kecuali ruang map dengan kondisi ii karena simpul yang mungkin hanya satu.
A 0,0
1,1 5
1,0 7
7 0,1
2,2 T
2
A 0,0
1,1
Penghalang
1,0
Penghalang
7 0,1
1,1
Penghalang
1,2 8
0,2 10
2,0 T
4 1,0
Penghalang
1,1
Penghalang
i
iv
2,1 5
2,2 7
1,1
Penghalang
Gambar III.16. Pohon pencarian jalan untuk masalah pada gambar III.4 dengan Algoritma A
Pada gambar III.16 terdapat simpul dengan tanda kotak yang menyatakan bahwa simpul tersebut berada di CLOSED atau pernah terpilih
sebagai BestNode, sedangkan simpul tanpa tanda kotak menyatakan simpul yang berada di OPEN. Jika simpul sudah pada kondisi CLOSED maka diabaikan,
karena simpul ini sudah diuji. Untuk kondisi i pada gambar III.16 dapat dijelaskan langkahnya sebagai berikut :
a. Langkah pertama dalam kondisi i, karena di OPEN hanya terdapat satu simpul yaitu A0,0, maka A terpilih sebagai BestNode dan dipindahkan ke
69
CLOSED. Kemudian dibangkitkan semua suksesor A0,0, yaitu simpul 1,1, 1,0 dan 0,1. Karena ke tiga suksesor tidak ada di OPEN maupun
CLOSED, maka ke tiganya dimasukkan ke OPEN. Langkah pertama ini menghasilkan OPEN = [1,1, 1,0, 0,1] dan CLOSED = [A0,0].
b. Langkah ke dua, semua suksesor 0,0 kemudian dicek nilai f nya. Ternyata nilai f melalui simpul 1,1 dari A0,0 fn = 5 lebih kecil daripada biaya dari
simpul 1,0 fn = 7 dan 0,1 fn = 7, maka simpul 1,1 terpilih sebagai BestNode. Oleh karena itu, parent harus diubah yang semula A0,0 menjadi
simpul 1,1. Selanjutnya, semua suksesor 1,1 dibangkitkan yaitu simpul T2,2, 2,1 dan 1,2. Karena simpul 2,2 yang pertama dicek dan ternyata
sama dengan simpul tujuan maka simpul 2,1 dan 1,2 tidak perlu dicek. Simpul T2,2 belum pernah ada di OPEN maupun CLOSED, maka simpul
T2,2 dimasukkan ke OPEN, kemudian dicek nilai f nya. Setelah dihitung fn = 2 dengan simpul 2,2 terpilih sebagai BestNode dan sama dengan
tujuan yang berarti solusi sudah ditemukan. Jalan dan total biaya bisa ditelusuri balik dari T menuju A karena setiap simpul hanya memiliki satu
parent. Penelusuran balik menghasilkan jalan A0,0 – 1,1 – T2,2 dengan
jumlah langkah 1 dan total simpul yang diperiksa 5. Simpul-simpul yang diperiksa tiap langkah dapat dilihat pada tabel III.2. Jalur ini merupakan jalan
yang dihasilkan oleh algoritma A search pada kondisi i.
70
Tabel III.2. Simpul yang diperiksa tiap langkah pada kondisi i Langkah
OPEN CLOSED
1 [1,1, 1,0, 0,1]
[A0,0] 2
[1,0, 0,1, T2,2] [A0,0, 1,1]
Ada beberapa istilah yang digunakan untuk menggambarkan linked list yaitu sebagai berikut :
Awal, variabel yang berisi alamat yang menunjuk lokasi simpul pertama linked list.
Akhir, sebuah simpul yang tidak menunjuk pada simpul berikutnya. Info berisi informasi tentang elemen data yang bersangkutan.
Next link fieldnext pointer field, berisi alamat dari elemen node selanjutnya yang dituju.
Null, tidak ada elemen node selanjutnya. Jika P adalah suatu variabel pointer, maka nilainya adalah alamat atau
lokasi dari variabel lain yang dituju. Linked list yang digunakan yaitu single linked list, pada penambahan data
baru menggunakan penyisipan didepan dan penghapusan data memakai hapus data diawal. Linked list untuk penyelesaian pada contoh kondisi i gambar III.5
terdiri dari 2 dua langkah, yaitu : a. Langkah 1
Penambahan data baru 0,0
Baru
info next
71
Baru
info null
0,0
Baru
info next
Push 0,0 0,0
info null
Awal Akhir
Penambahan data baru 1,1
0,0
info null
1,1
info next Awal
Baru
Push 1,1 1,1
0,0
P info
next info null
Awal Akhir
Akhir
Penambahan data baru 1,0
Awal
1,1 0,0
info next
info null
Akhir
1,0
info next
Baru
Push 1,0 1,0
1,1
P
info next
info next
Awal Akhir
0,0
Info null
Penambahan data baru 0,1
1,0 1,1
info next
info next
Awal Akhir
0,0
Info null
0,1
info next
Baru
Push 0,1
72
0,1 1,0
1,1 0,0
P Awal
info next
info Info
Info next
next null
Akhir
Node 1,0 dan 0,1 akan dihapus karena nilai fn nya lebih besar dari pada node 1,1, sehingga akan menghasilkan list sebagai berikut :
Penghapusan data 0,1
0,1 1,0
1,1 0,0
info next
info Info
Info next
next null
Akhir Posisihapus
P
0,1 1,0
1,1 0,0
Awal
info next
info Info
Info next
next null
Akhir
1,0 1,1
info next
info next
Awal Akhir
0,0
Info null
Awal
Penghapusan data 1,0
1,0 1,1
info next
info next
Awal Akhir
0,0 Info
null
1,0 1,1
info next
info next
Akhir
0,0 Info
null
Posisihapus Awal
1,1 0,0
P
info next
info null
Awal Akhir
73
b. Langkah 2 Penambahan data baru 2,2
Awal
1,1 0,0
info next
info null Akhir
2,2
info next Baru
Push 2,2 2,2
1,1
P info
next info next
Awal Akhir
0,0
Info null
List akhir
Langkah-langkah di bawah ini adalah penjelasan dari kondisi iv pada gambar III.16.
a. Langkah pertama dalam kondisi iv, karena di OPEN hanya terdapat satu simpul yaitu A0,0, maka A terpilih sebagai BestNode dan dipindahkan ke
CLOSED. Kemudian dibangkitkan semua suksesor A0,0, yaitu simpul 1,1, 1,0 dan 0,1. Karena simpul 1,1 dan 1,0 dikenali sebagai
penghalang maka tidak akan dimasukkan kedalam list, sedangkan untuk simpul 0,1 bukan penghalang dan tidak ada di OPEN maupun CLOSED,
maka dimasukkan ke OPEN. Langkah pertama ini menghasilkan OPEN = [0,1] dan CLOSED = [A0,0]. Selanjutnya, semua suksesor 0,0 kemudian
dicek nilai f nya. Ternyata nilai f melalui simpul 0,1 dengan fn = 7 sebagai BestNode dan dipindahkan ke CLOSED. Oleh karena itu, parent harus diubah
yang semula A0,0 menjadi simpul 0,1. b. Langkah ke dua semua suksesor 0,1 dibangkitkan yaitu simpul 1,2 dan
0,2. Karena belum pernah ada di OPEN maupun CLOSED, maka simpul 1,2 dan 0,2 dimasukkan ke OPEN. Langkah ke dua ini menghasilkan
74
OPEN = [1,2, 0,2] dan CLOSED = [A0,0, 0,1]. Selanjutnya, semua suksesor 0,1 kemudian dicek nilai f nya. Ternyata nilai f melalui simpul
1,2 menghasilkan fn = 8 dan simpul 0,2 menghasilkan fn = 10. Setelah dihitung terpilihlah simpul 1,2 dengan biaya terkecil sebagai BestNode dan
dipindahkan ke CLOSED. Oleh karena itu, parent harus diubah yang semula 0,1 menjadi simpul 1,2.
c. Langkah ke tiga semua suksesor 1,2 dibangkitkan yaitu simpul 2,1 dan 2,2. Karena belum pernah ada di OPEN maupun CLOSED, maka simpul
2,1 dan 2,2 dimasukkan ke OPEN kemudian dicek nilai f nya. Langkah ke tiga ini menghasilkan OPEN = [0,2, 2,2, 2,1] dan CLOSED = [A0,0,
0,1, 1,2]. Ternyata nilai f melaui simpul 2,1 menghasilkan fn = 5 dan simpul 2,2 menghasilkan fn = 7. Setelah dihitung terpilihlah simpul 2,1
dengan biaya terkecil sebagai BestNode dan dipindahkan ke CLOSED. Oleh karena itu, parent harus diubah yang semula 1,2 menjadi simpul 2,1.
d. Langkah ke empat semua suksesor 2,1 dibangkitkan yaitu simpul T2,0. Karena belum pernah ada di OPEN maupun CLOSED, maka simpul T2,0
dimasukkan ke OPEN, kemudian dicek nilai f nya. Selanjutnya, simpul T2,0 dengan fn = 4 terpilih sebagai BestNode dan sama dengan simpul tujuan,
berarti solusi sudah ditemukan. Pada akhir langkah ke empat ini, OPEN = [0,2, 2,2, T2,0] dan CLOSED = [A0,0, 0,1, 1,2, 2,1]. Jalan dan
total biaya bisa ditelusuri balik dari T menuju A karena setiap simpul hanya memiliki satu parent. Penelusuran balik menghasilkan jalan A0,0
– 0,1 – 1,2
– 2,1 - T2,0 dengan jumlah langkah 3 dan total simpul yang
75
diperiksa 7. Simpul-simpul yang diperiksa tiap langkah dapat dilihat pada tabel III.3. Jalur ini merupakan jalan yang dihasilkan oleh algoritma A
search pada kondisi iv.
Tabel III.3. Simpul yang diperiksa tiap langkah pada kondisi iv Langkah
OPEN CLOSED
1 [0,1]
[A0,0] 2
[1,2, 0,2] [A0,0, 0,1]
3 [0,2, 2,1, 2,2]
[A0,0, 0,1, 1,2] 4
[0,2, 2,2, T2,0] [A0,0, 0,1, 1,2, 2,1]
Linked list untuk penyelesaian pada contoh kondisi iv gambar III.10 terdiri dari 4 empat langkah, yaitu :
a. Langkah 1 Penambahan data baru 0,0
Baru
info null
0,0
Baru
info next
Push 0,0 0,0
info null
Awal Akhir
Baru
info next
Penambahan data baru 0,1
0,0
info null
0,1
info next
Awal
Baru
Push 0,1 0,1
0,0
P
info next
info null
Awal Akhir
Akhir
76
b. Langkah 2 Penambahan data baru 1,2
Awal
0,1 0,0
info next
info null
Akhir
1,2
info next
Baru
Push 1,2 1,2
0,1
P
info next
info next
Awal Akhir
0,0
Info null
Penambahan data baru 0,2
1,2 0,1
info next
info next
Awal Akhir
0,0
Info null
0,2
info next
Baru
Push 0,2
0,2 1,2
0,1 0,0
P Awal
info next
info Info
Info next
next null
Akhir
Node 0,2 akan dihapus karena nilai fn nya lebih besar dari pada node 1,2, sehingga akan menghasilkan list sebagai berikut :
77
Penghapusan data 0,2
0,2 1,2
0,1 0,0
info next
info Info
Info next
next null
Akhir Posisihapus
P
0,2 1,2
0,1 0,0
Awal
info next
info Info
Info next
next null
Akhir
1,2 1,0
info next
info next
Awal Akhir
0,0 Info
null
Awal
c. Langkah 3 Penambahan data baru 2,1
1,2 0,1
info next
info next
Awal Akhir
0,0
Info null
2,1
info next
Baru
Push 2,1
2,1 1,2
0,1 0,0
P Awal
info next
info Info
Info next
next null
Akhir
78
Penambahan data baru 2,2
1,2 0,1
info next
info next Awal
Akhir
0,0
Info null
2,2
info next Baru
Push 2,2 2,1
info next
2,2 2,1
1,2 0,1
0,0
P Awal
info next
info Info
Info next
next null
Akhir
info next
Node 2,2 akan dihapus karena nilai fn nya lebih besar dari pada node 2,1, sehingga akan menghasilkan list sebagai berikut :
Penghapusan data 2,2
2,2 2,1
1,2 0,1
0,0
Awal
info next
info Info
Info next
next null
Akhir
info next
2,2 2,1
1,2 0,1
0,0
info next
info Info
Info next
next null
Akhir
info next
Posisihapus Awal
P
2,1 1,2
0,1 0,0
P Awal
info next
info Info
Info next
next null
Akhir
79
d. Langkah 4 Penambahan data baru 2,0
2,1 1,2
0,1 0,0
Awal
info next
info Info
Info next
next null
Akhir
2,0 info next
Baru
Push 2,0
2,0 2,1
1,2 0,1
0,0
P Awal
info next
info Info
Info next
next null
Akhir
info next
List akhir
III.5 Analisis Kebutuhan Non Fungsional
Analisis non-fungsional merupakan analisis yang dibutuhkan untuk menentukan spesifikasi kebutuhan sistem. Spesifikasi ini juga meliputi elemen
atau komponen-komponen apa saja yang dibutuhkan untuk sistem yang akan dibangun sampai dengan sistem tersebut diimplementasikan. Analisis kebutuhan
ini juga menentukan spesifikasi masukan yang diperlukan sistem, keluaran yang akan dihasilkan sistem dan proses yang dibutuhkan untuk mengolah masukan
sehingga menghasilkan suatu keluaran yang diinginkan. Pada analisis kebutuhan sistem non fungsional ini dijelaskan analisis
mengenai analisis masukan, analisis keluaran, perangkat keras hardware, perangkat lunak software, dan pengguna user sebagai bahan analisis
80
kekurangan dan kebutuhan yang harus dipenuhi dalam perancangan sistem yang
akan diterapkan.
a. Analisis masukan Analisis masukan dilakukan untuk mengetahui masukan data apa saja yang
diperlukan oleh sistem. Masukan data yang diperlukan oleh sistem yaitu titik awal, titik tujuan, baris kotak, kolom kotak, penghalang maupun tanpa penghalang
dan nilai heuristik. b. Analisis keluaran
Analisis keluaran dilakukan untuk mengetahui keluaran dari sistem yang dibutuhkan oleh user yaitu berupa jalur terpendek dan pelacakan pencarian dari
titik awal ke titik tujuan. c. Analisis kebutuhan perangkat keras hardware
Agar aplikasi dapat berjalan dengan baik, maka dibutuhkan perangkat keras yang sesuai dengan kebutuhan aplikasi. Tabel III.4 adalah spesifikasi
minimun perangkat keras yang dibutuhkan agar dapat menjalankan aplikasi game pathfinding secara optimal.
Tabel III.4. Spesifikasi minimum perangkat keras Komputer
Spesifikasi perangkat keras
Prosesor Prosesor 1.6 Ghz
Resolusi layar 1366 x 768 pixel
Memori Memori 128 Mb
Harddisk Harddisk 20 GB
Keyboard dan mouse -
81
d. Analisis kebutuhan perangkat lunak software Penerapan algoritma A dalam pencarian jalan terpendek pada game
pathfinding memiliki kebutuhan perangkat lunak software pada tabel III.5.
Tabel III.5. Spesifikasi perangkat lunak Komputer
Spesifikasi perangkat lunak
Sistem Operasi Window Xp, Window 7
Bahasa Pemograman Borland Delphi 7.0
Dari hasil pengamatan perangkat lunak, terdapat beberapa hal penting
yang harus diperhatikan agar sistem yang akan dirancang dapat berjalan dengan baik dan sesuai dengan yang diharapkan. Pengguna diharapkan dapat memenuhi
kebutuhan perangkat lunak yang telah direkomendasikan agar aplikasi dapat berjalan dengan baik. Jika pengguna ingin membuka project-nya maka terlebih
dahulu harus menginstalkan borland delphi dan component yang mendukung. e. Analisis pengguna
Pengguna yaitu public yang dapat mengerti dan memahami komputer sehingga dapat menggunakan aplikasi yang akan dibangun.
III.6 Analisis Kebutuhan Fungsional
Pemodelan yang digunakan pada aplikasi yang akan dibuat adalah aliran data terstuktur sebagai alat bantu yaitu diagram konteks dan DFD Data Flow
Diagram.
III.6.1 Diagram Konteks
Diagram konteks atau disebut juga dengan model aplikasi fundamental yang merepresentasikan seluruh elemen aplikasi sebagai sebuah bubble tunggal
82
dengan data masukan-keluaran yang ditunjukkan oleh anak panah yang masuk dan keluar secara berurutan. Diagram konteks dari aplikasi yang akan dibangun
adalah seperti gambar III.17. [5]
Pengguna
GAME PATHFINDING
Info_Data_Baris Info_Data_Kolom
Info_PosisiTitikAwal Info_PosisiTujuan
Info_PosisiTitikAwalAcak Info_PosisiTitikTujuanAcak
Info_PosisiTitikTembok Info_PosisiTitikPohon
Info_HapusTitikTembok Info_HapusTitikPohon
Info_NilaiHeuristik Info_HasilRuteA
Info_HasilLihatCabang Info_ResetHasilLihatCabang
Info_ResetHasilRuteA Info_Map_Simpan
Data_Baris Data_Kolom
Data_PosisiTitikAwal Data_PosisiTitikTujuan
Data_PosisiTitikTembok Data_PosisiTitikPohon
Data_NilaiHeuristik Data_CariRuteA
Data_LihatCabang
Gambar III.17. Diagram Konteks III.6.2
Data Flow Diagram DFD
Data flow diagram merupakan model dari sistem untuk menggambarkan pembagian sistem ke modul yang lebih kecil. DFD sering digunakan untuk
menggambarkan suatu sistem yang telah ada atau sistem baru yang akan dikembangkan secara logika tanpa mempertimbangkan lingkungan fisik dimana
data tersebut mengalir atau lingkungan fisik dimana data tersebut akan disimpan. Salah satu keuntungan DFD adalah memudahkan pemakai atau user yang kurang
menguasai bidang komputer untuk mengerti sistem yang akan dikerjakan. [5]
83
III.6.2.1 DFD Level 0
DFD Level 0 dibuat jika pada diagram konteks masih terdapat proses yang harus dijelaskan lebih rinci. Pada DFD Level 0 terdapat proses - proses yaitu
pengaturan grid, pengaturan titik awal dan titik tujuan, penentuan penghalang, penentuan heuristik, proses pencarian rute dan penampilan menu map yang dapat
dilihat pada gambar III.18.
Pengguna 1.0
Pengaturan Grid
2.0 Pengaturan
Titik Awal dan Titik Tujuan
3.0 Penentuan
Penghalang
4.0 Penentuan
Heuristik
5.0 Pencarian
Rute
6.0 Penampilan
Menu Map Map
Data_PosisiTitikAwal Data_PosisiTitikTujuan
Data_Kolom Data_Baris
Info_PosisiTitikAwal Info_PosisiTujuan
Info_PosisiTitikAwalAcak Info_PosisiTitikTujuanAcak
Data_PosisiTitikTembok Data_PosisiTitikPohon
Data_CariRuteA Data_LihatCabang
Data_NilaiHeuristik Info_Data_Baris
Info_Data_Kolom Data_Kolom
Data_Baris
Data_PosisiTitikAwal Data_PosisiTitikTujuan
Data_PosisiTitikAwalAcak Data_PosisiTitikTujuanAcak
Data_PosisiTitikTembok Data_PosisiTitikPohon
Data_HapusTitikTembok Data_HapusTitikPohon
Data_NilaiHeuristik
Data_CariRuteA Data_LihatCabang
Data_ResetHasilLihatCabang Data_ResetHasilRuteA
Info_HasilRuteA Info_HasilLihatCabang
Info_ResetHasilLihatCabang Info_ResetHasilRuteA
Map_Simpan Request Map_Simpan
Data_Baris Data_Kolom
Data_PosisiTitikTembok Data_PosisiTitikPohon
Info_Map_Simpan Data_Baris
Data_Kolom Data_PosisiTitikTembok
Data_PosisiTitikPohon Info_PosisiTitikTembok
Info_PosisiTitikPohon Info_HapusTitikTembok
Info_HapusTitikPohon Info_PosisiTitikTembok
Info_PosisiTitikPohon Info_HapusTitikTembok
Info_HapusTitikPohon Info_Data_Baris
Info_Data_Kolom
Info_PosisiTitikAwal Info_PosisiTujuan
Info_PosisiTitikAwalAcak Info_PosisiTitikTujuanAcak
Info_NilaiHeuristik Info_NilaiHeuristik
Info_HasilRuteA Info_HasilLihatCabang
Info_ResetHasilLihatCabang Info_ResetHasilRuteA
Respon Map_Simpan
Gambar III.18. DFD Level 0 game pathfinding
84
1. Pengaturan Grid Proses pengaturan untuk menentukan berapa baris dan kolom yang telah
yang diberi nilai. 2. Pengaturan Awal dan Tujuan
Proses penempatan titik awal dan titik tujuan yang diinginkan. 3. Penentuan Penghalang
Proses pemasangan penghalang yaitu tembok dan pohon pada map . 4. Penentuan Heuristik
Proses penentuan nilai heuristik yang akan digunakan saat pencarian berlangsung.
5. Pencarian Rute Proses berlangsungnya pencarian jalur pada map.
6. Penampilan Menu Map Proses ini berisi tentang membuka map simpan, menyimpan map baru, dan
membuat map baru.
III.6.2.2 DFD Level 1 Proses 2.0 Pengaturan Titik Awal dan Titik Tujuan
Proses yang terdapat pada DFD level 1 proses 2.0 adalah proses pengaturan titik awal dan titik tujuan yang terdiri atas proses 2.1 pasang titik awal,
proses 2.2 pasang titik tujuan dan proses 2.3 acak titik awal dan titik tujuan. DFD level 1 untuk proses 2.0 dapat dilihat pada gambar III.19.
85
Pengguna
2.2 Pasang Titik
Tujuan
Data_PosisiTitikTujuan
Map
Data_PosisiTitikAwal Data_PosisiTitikAwal
2.1 Pasang Titik
Awal
2.3 Acak
Titik Awal dan Titik
Tujuan
Data_PosisiTitikTujuan Data_PosisiTitikAwal
Data_PosisiTitikTujuan Data_PosisiTitikAwalAcak
Data_PosisiTitikTujuanAcak Info_PosisiTitikAwal
Info_PosisiTitikAwalAcak Info_PosisiTitikTujuanAcak
Info_PosisiTujuan Info_PosisiTitikAwal
Info_PosisiTujuan Info_PosisiTitikAwalAcak
Info_PosisiTitikTujuanAcak
Gambar III.19. DFD Level 1 Proses 2.0 pengaturan titik awal dan titik tujuan
2.1 Pasang Titik Awal Proses untuk pemasangan titik awal pada map.
2.2 Pasang Titik Tujuan Proses untuk pemasangan titik tujuan pada map.
2.3 Acak Titik Awal dan Titik Tujuan Proses pengacakan posisi titik awal dan titik tujuan.
III.6.2.3 DFD Level 1 Proses 3.0 Penentuan Penghalang
Proses yang terdapat pada DFD level 1 proses 3.0 adalah proses penentuan penghalang yang terdiri atas proses 3.1 pasang penghalang tembok, proses 3.2
pasang penghalang pohon dan proses 3.3 hapus penghalang. DFD level 1 untuk proses 3.0 dapat dilihat pada gambar III.20.
86
Pengguna
3.2 Pasang
Penghalang Pohon
Data_PosisiTitikPohon
Map
Data_PosisiTitikTembok Data_PosisiTitikTembok
3.1 Pasang
Penghalang Tembok
3.3 Hapus
Penghalang
Data_PosisiTitikPohon Data_PosisiTitikTembok
Data_PosisiTitikPohon Data_HapusTitikTembok
Data_HapusTitikPohon Info_PosisiTitikTembok
Info_PosisiTitikPohon Info_HapusTitikTembok
Info_HapusTitikPohon
Info_PosisiTitikPohon Info_PosisiTitikTembok
Info_HapusTitikTembok Info_HapusTitikPohon
Gambar III.20. DFD Level 1 Proses 3.0 penentuan penghalang
3.1 Pasang Penghalang Tembok Proses awal meletakkan posisi tembok pada map grid yang telah
disediakan. 3.2 Pasang Penghalang Pohon
Proses awal meletakkan posisi pohon pada map grid yang telah disediakan.
3.3 Hapus Penghalang Proses menghapus baik itu penghalang tembok ataupun pohon yang telah
dibuat.
III.6.2.4 DFD Level 1 Proses 5.0 Pencarian Rute
Proses yang terdapat pada DFD level 1 proses 5.0 adalah proses pencarian rute yang terdiri atas proses 5.1 pencarian A, proses 5.2 lihat cabang dan proses
5.3 reset rute. DFD level 1 untuk proses 5.0 dapat dilihat pada gambar III.21.
87
Pengguna
5.2 Lihat Cabang
Data_HasilLihatCabang
Map
Data_HasilRuteA Data_CariRuteA
5.1 Pencarian A
5.3 Reset Rute
Data_LihatCabang Data_HasilRuteA
Data_HasilLihatCabang Data_ResetHasilLihatCabang
Data_ResetHasilRuteA Info_HasilRuteA
Info_HasilLihatCabang Info_ResetHasilLihatCabang
Info_ResetHasilRuteA
Info_HasilLihatCabang Info_HasilRuteA
Info_ResetHasilLihatCabang Info_ResetHasilRuteA
Gambar III.21. DFD level 1 Proses 5.0 pencarian rute
5.1 Pencarian A Proses pencarian rute dengan algoritma A search.
5.2 Lihat Cabang Proses memperlihatkan pelacakan cabang untuk A.
5.3 Reset rute Proses menghapus hasil rute dari pencarian A dan pelacakan cabangnya.
III.6.2.5 DFD Level 1 Proses 6.0 Penampilan Menu Map
Proses yang terdapat pada DFD level 1 proses 6.0 adalah proses penampilan menu map yang terdiri atas proses 6.1 buka map baru, proses 6.2
simpan map dan proses 6.3 buka map. DFD level 1 untuk proses 6.0 dapat dilihat pada gambar III.22.
88
Pengguna
6.1 Buat Map
Baru
6.3 Buka Map
6.2 Simpan Map
Data_Baris Data_Kolom
Data_PosisiTitikTembok Data_PosisiTitikPohon
Info_Map_Simpan
Map_Simpan
Respon Map_Simpan Data_Baris
Data_Kolom Data_PosisiTitikTembok
Data_PosisiTitikPohon Data_Baris
Data_Kolom Data_PosisiTitikTembok
Data_PosisiTitikPohon
Request Map_Simpan
Gambar III.22. DFD Level 1 Proses 6.0 penampilan menu map
6.1 Buat Map Baru Proses pembuatan map baru yang akan disimpan.
6.2 Simpan Map Proses penyimpanan map setelah dilakukan pengaturan.
6.3 Buka Map Proses membuka map yang telah disimpan sebelumnya.
III.6.3 Spesifikasi Proses
Untuk menjelaskan lebih lanjut tentang proses-proses yang ada di dalam diagram alir data atau DFD maka dibuatlah spesifikasi proses. Spesifikasi proses
merupakan deskripsi dari setiap elemen proses yang terdapat dalam aplikasi, yang meliputi nama proses, masukan, keluaran dan keterangan dari proses. Adapun
spesifikasi proses untuk diagram alir data aplikasi game pathfinding dengan
89
penerapan algoritma A untuk mencari jalan terpendek dapat dilihat pada tabel III.6.
Tabel III.6. Spesifikasi proses
No. Proses
Keterangan
1. No. Proses
1.0 Nama Proses
Pengaturan Grid Source sumber Pengguna
Deskripsi Proses pengaturan untuk menentukan nilai baris dan
kolom yang telah ditentukan. Masukan
Data baris dan data kolom. Keluaran
Info baris dan info kolom. Logika proses
1. Pengguna memasukkan nilai baris dan nilai kolom. 2. Jika nilai baris kurang dari 3 atau lebih dari 31
maka akan tampil info pesan data nilai baris tidak boleh kurang dari 3 atau info pesan data nilai baris
tidak boleh lebih dari 31.
3. Jika nilai kolom kurang dari 3 atau lebih dari 39 maka akan tampil info pesan data nilai kolom tidak
boleh kurang dari 3 atau info pesan data nilai kolom tidak boleh lebih dari 39.
4. Jika nilai baris atau nilai kolom tidak diisi maka akan tampil pesan data nilai baris atau nilai kolom
tidak boleh kosong. 5. Jika nilai baris lebih dari 31 dan nilai kolom lebih
dari 39 maka akan tampil konfirmasi pesan nilai baris tidak boleh lebih dari 31 dan nilai kolom
tidak boleh lebih dari 39.
2. No. Proses
2.0 Nama Proses
Pengaturan titik awal dan titik tujuan Source sumber Pengguna
Deskripsi Proses penempatan titik awal dan titik tujuan yang
diinginkan. Masukan
Data posisi titik awal dan titik tujuan. Keluaran
Info posisi titik awal dan titik tujuan. Logika proses
Pengguna menempatkan posisi titik awal dan posisi titik tujuan.
90
Tabel III.6. Spesifikasi proses lanjutan
No. Proses
Keterangan
3. No. Proses
3.0 Nama Proses
Penentuan penghalang Source sumber Pengguna
Deskripsi Proses pemasangan penghalang yaitu tembok dan pohon
pada map. Masukan
Data posisi titik tembok dan titik pohon Keluaran
Info posisi titik tembok dan titik pohon Logika proses
1. Pengguna menempatkan penghalang titik tembok atau titik pohon maupun keduanya.
2. Jika penghalang ditempatkan penuh pada map maka akan ada info pada status bar rute tidak
ditemukan pada saat pencarian berlangsung.
4. No. Proses
4.0 Nama Proses
Penentuan heuristik Source sumber Pengguna
Deskripsi Proses penentuan nilai heuristik yang akan digunakan
saat pencarian berlangsung. Masukan
Data nilai heuristik Keluaran
Info nilai heuristik Logika proses
1. Pengguna menentukan nilai heuristik. 2. Jika tidak ditentukan oleh pengguna maka nilai
heuristik otomatis dimulai dengan nilai 1.
5. No. Proses
5.0 Nama Proses
Pencarian rute Source sumber Pengguna
Deskripsi Proses berlangsungnya pencarian jalur pada map.
Masukan Data pencarian
Keluaran Info hasil rute
Logika proses 1. Jika pengguna memilih pencarian dengan A tanpa
mencentang “lihat pelacakan” maka akan berlangsung proses dengan perhitungan algoritma
tersebut tanpa meperlihatkan pelacakan cabangnya.
2. Jika pengguna memilih pencarian dengan A dengan mencentang “lihat pelacakan” maka akan
berlangsung proses dengan perhitungan algoritma tersebut
dengan meperlihatkan
pelacakan cabangnya.
91
Tabel III.6. Spesifikasi proses lanjutan
No. Proses
Keterangan
6. No. Proses
2.1 Nama Proses
Pasang titik awal Source sumber Pengguna
Deskripsi Proses menempatkan posisi titik awal pada map.
Masukan Data posisi titik awal
Keluaran Info posisi titik awal
Logika proses Jika pengguna menempatkan titik awal maka akan
langsung terlihat posisinya pada map.
7. No. Proses
2.2 Nama Proses
Pasang titik tujuan Source sumber Pengguna
Deskripsi Proses menempatkan titik tujuan pada map.
Masukan Data posisi titik tujuan
Keluaran Info posisi titik tujuan
Logika proses Jika pengguna menempatkan titik tujuan maka akan
langsung terlihat posisinya pada map.
8. No. Proses
2.3 Nama Proses
Acak titik awal dan titik tujuan Source sumber Pengguna
Deskripsi Proses pengacakan posisi titik awal dan titik tujuan
Masukan Data posisi titik awal dan titik tujuan
Keluaran Info posisi titik awal dan titik tujuan yang telah diacak
Logika proses Jika pengguna memilih proses acak maka posisi titik
awal dan titik tujuan akan berubah.
9. No. Proses
3.1 Nama Proses
Pasang penghalang tembok Source sumber Pengguna
Deskripsi Proses awal meletakkan posisi tembok pada map grid
yang telah disediakan. Masukan
Data posisi titik tembok Keluaran
Info posisi titik tembok Logika proses
Jika pengguna menempatkan titik tembok maka akan langsung terlihat posisinya pada map.
92
Tabel III.6. Spesifikasi proses lanjutan
No. Proses
Keterangan
10. No. Proses
3.2 Nama Proses
Pasang penghalang pohon Source sumber Pengguna
Deskripsi Proses awal meletakkan posisi pohon pada map grid
yang telah disediakan. Masukan
Data posisi titik pohon Keluaran
Info posisi titik pohon Logika proses
Jika pengguna menempatkan titik pohon maka akan langsung terlihat posisinya pada map.
11. No. Proses
3.3 Nama Proses
Hapus penghalang Source sumber Pengguna
Deskripsi Proses berlangsungnya pencarian jalur pada map.
Masukan Data pencarian
Keluaran Info hasil rute
Logika proses Jika pengguna memilih hapus penghalang maka akan
terhapus tembok maupun pohon yang telah dipilih untuk dihapus.
12. No. Proses
5.1 Nama Proses
Pencarian A Source sumber Pengguna
Deskripsi Proses pencarian rute dengan algoritma A search.
Masukan Data cari rute A
Keluaran Info hasil rute A
Logika proses Jika pengguna memilih pencarian A maka akan tampil
hasil rute A dari titik awal sampai titik tujuan.
13. No. Proses
5.2 Nama Proses
Lihat Cabang Source sumber Pengguna
Deskripsi Proses memperlihatkan pelacakan cabang untuk A.
Masukan Data lihat cabang
Keluaran Info hasil lihat cabang
Logika proses Jika pengguna memilih lihat cabang maka akan tampil
hasil pelacakan cabang dari titik awal sampai titik tujuan.
93
Tabel III.6. Spesifikasi proses lanjutan
No. Proses
Keterangan
14. No. Proses
5.3 Nama Proses
Reset rute Source sumber Pengguna
Deskripsi Proses menghapus hasil rute dari pencarian A dan
pelacakan cabang. Masukan
Data cari rute A atau data lihat cabang Keluaran
Data reset hasil rute A, data reset hasil lihat cabang, info reset hasil rute A dan info reset hasil lihat cabang.
Logika proses Jika pengguna ingin menghapus rute A atau pelacakan
cabang maka tinggal melakukan proses reset rute.
15. No. Proses
6.1 Nama Proses
Buat map baru Source sumber Pengguna
Deskripsi Proses pembuatan map baru yang akan disimpan.
Masukan Data baris, data kolom, data posisi titik tembok dan data
posisi titik pohon dari data sementara pada map. Keluaran
Data baris, data kolom, data posisi titik tembok dan data posisi titik pohon.
Logika proses Jika pengguna ingin membuat map baru yang akan
disimpan maka semua data masukan akan masuk ke proses 6.2.
16. No. Proses
6.2 Nama Proses
Simpan map Source sumber Pengguna
Deskripsi Proses penyimpanan map setelah dilakukan pengaturan.
Masukan Data baris, data kolom, data posisi titik tembok dan data
posisi titik pohon dari proses 6.1. Keluaran
Data baris, data kolom, data posisi titik tembok dan data posisi titik pohon.
Logika proses Jika pengguna ingin menyimpan map baru maka semua
data masukan akan masuk penyimpanan map simpan.
94
Tabel III.6. Spesifikasi proses lanjutan
No. Proses
Keterangan
17. No. Proses
6.3 Nama Proses
Buka map Source sumber Pengguna
Deskripsi Proses membuka map yang telah disimpan sebelumnya.
Masukan Request map simpan dari penyimpanan map simpan.
Keluaran Respon map simpan dari penyimpanan map simpan.
Logika proses Jika pengguna ingin membuka map dari penyimpanan
map simpan maka file map yang dipilih akan tampil pada map.
Berdasarkan pengolahan DFD data flow diagram yang ada maka akan digunakan dua file untuk penyimpanan yang terdiri dari file map dan file map
simpan. File map merupakan penyimpanan sementara untuk mempermudah tampilan data titik awal, titik tujuan, penghalang, dan hasil rute pada map
sedangkan file map simpan yaitu penyimpanan untuk map yang telah dibuat yang berupa dari data nilai baris, nilai kolom dan penghalang yang akan disimpan
dengan gambar bertype .map.
III.6.4 Kamus Data
Kamus data atau data dictionary adalah katalog fakta tentang data dan kebutuhan-kebutuhan informasi dari suatu sistem informasi. Kamus data untuk
diagram arus data pada game pathfinding dalam pencarian jalan terpendek dapat dilihat pada tabel III.7. [5]
95
Tabel III.7. Kamus data
Nama aliran data Pengolahan data map simpan
Digunakan pada Pengguna
– Proses 6.0 Deskripsi
Berisi penyimpanan data map Struktur data
Nilai baris Nilai kolom
Penghalang titik
tembok atau titik pohon
Berisi nilai baris, nilai kolom, penghalang : Type numeric integer [0-9], width 2
: Type numeric integer [0-9], width 2 : Image bertype .map
III.7 Perancangan Sistem
Perancangan sistem merupakan metodologi pengembangan suatu perangkat lunak yang dilakukan setelah melalui tahapan analisis. Perancangan
bertujuan untuk memberikan gambaran secara terperinci dan merupakan tahap lanjutan dari analisis sistem. Dimana dalam hal ini digambarkan rancangan sistem
yang akan dibangun sebelum dilakukan pengodean ke dalam suatu bahasa pemrograman. Desain umum yang akan diaplikasikan bertujuan untuk
memberikan gambaran secara umum kepada penggunaan tentang sistem yang akan dibangun.
III.7.1 Perancangan Komponen Game Pathfinding
Perancangan komponen pada game pathfinding terdiri dari pengguna, titik awal dan titik tujuan, penghalang dan map yang akan dijelaskan sebagai berikut :
96
1. Pengguna Game ini akan dimainkan oleh satu orang. Pengguna dapat menempatkan titik
awal, titik tujuan dan penghalang pada map yang telah disediakan dengan posisi yang diinginkan.
2. Titik awal dan titik tujuan Titik awal merupakan titik pertama jalan yang akan dicari sedangkan titik
tujuan merupakan titik akhir yang akan ditemukan. Titik awal akan digambarkan dengan gambar pinguin dan titik tujuan dengan gambar peti harta karun supaya
tampilan lebih menarik. 3. Penghalang
Penghalang yaitu suatu titik yang tidak dapat dilewati. Penghalang yang akan digunakan yaitu tembok dan pohon agar tampilan yang dihasilkan lebih menarik.
4. Map Map yang digunakan pada game pathfinding ini akan berupa kotak-kotak
dengan ordo X x Y. Terdiri dari kotak grid kecil dengan ordo minimal 3 x 3 dan maksimal 31 x 39. Dalam perancangan tampilan map awal diwakili dengan kotak
berwarna putih. Map ini merupakan tempat untuk memasangkan titik awal, titik tujuan dan penghalang serta untuk menampilkan jalan yang ditemukan. Hasil
akhir game pathfinding ditandai oleh tampilnya jalur dan performansi yang dihasilkan oleh A search.
III.7.2 Perancangan Prosedural
Bagan alir sistem flowchart system merupakan bagan-bagan yang mempunyai arus yang menggambarkan langkah-langkah penyelesaian suatu
97
masalah dan merupakan cara penyajian dari suatu algoritma, sehingga dapat menjelaskan urutan prosedur-prosedur yang ada dalam sistem. [5]
Pada gambar III.23. dijelaskan bahwa cara kerja sistem yang akan dibangun yaitu dimulai dari memasukkan data berupa titik awal, titik tujuan dan
penghalang maupun tanpa penghalang, kemudian masuk kedalam pencarian rute dengan algoritma A search. Setelah pencarian rute yang dipilih A maka akan
muncul jalan yang ditemukan oleh algoritma A, jika sekaligus dicentang “lihat
cabang pencarian” maka akan muncul pelacakan cabangnya. Setelah selesai user dapat menghapus rute dan dapat memasukkan masukan baru.
Mulai
Titik Awal
Titik Tujuan
Pencarian Rute dengan A
Tampilan Hasil Rute
Ulangi Pencarian?
Penghalang
Selesai Tidak
Ya Penghalang?
Ya Tidak
Baris Kolom
Nilai Heuristik
Gambar III.23. Flowchart pencarian rute pada game pathfinding
98
III.7.2.1 Bagan Alir Algoritma A A Star
Setelah user memilih tujuan, maka pencarian pun dipilih yaitu dengan menggunakan algoritma A. Diagram alir algoritma A dapat dilihat pada gambar
III.24. Pada gambar III.24 menjelaskan cara kerja algoritma A bekerja dalam
mencari rute paling optimum pada peta. Algoritma ini bekerja dari titik awal ke titik tujuan dengan mencari jalan dengan dengan akumulasi bobot terendah
dilambangkan dengan notasi g dijumlah dengan perkiraan jalan terendah bobotnya untuk mencapai tujuan dilambangkan dengan notasi h. Rute yang
memiliki node-node dengan nilai fn = gn + hn yang paling kecil akan dikembangkan lebih dulu, karena itu proses pemberian bobot pada node-node
sangatlah penting dalam menentukan hasil pencarian. Proses mencari node dengan nilai terkecil ini dilakukan berulang-ulang
sampai menemukan node tujuan. Apabila node yang menjadi titik tujuan telah ditemukan, program akan melakukan backtrack ke parent dari tiap node untuk
mendapatkan rangkaian node yang membentuk rute yang akan paling optimum yang diinginkan. Penjelasan lebih lengkap tentang algoritma A beserta
pseudocode-nya telah dituliskan pada bab 2.
99
Inisialisasi list OPEN = kosong,
CLOSED = kosong Masukkan node awal ke list
OPEN Set Current_Node = Best_Node
OPEN Current_Node =
Tujuan? Keluarkan Current_Node dari
OPEN, masukkan CLOSED Tidak
For i:=1 to jumlah neighor
Current_Node do Nodei dapat dilalui?
Ada dalam CLOSED?
Ada dalam OPEN? Nilai nodeig
node dalam OPEN? Masukkan nodei dalam OPEN.
Set parent nodei=Current_Node, Hitung dan simpan nilai f,g,h dengan rumus :
h_diagonaln = minabsn.x-goal.x + absn.y-goal.y h_orthogonaln = absn.x-goal.x + absn.y-goal.y
hn = h_diagonaln + h_orthogonal n – 2 h_diagonaln
fn=gn+hn i
OPEN = nil? Ya
Tidak Ya
Tidak
Tidak
Selesai Rute tidak ada
Ya Backtrack untuk
menampilkan rute Ya
Tidak
Set parent nodei=Current_Node
Kalkulasi ulang nilai g dan f Ya
Ya Tidak
Mulai Pencarian Rute dengan A
Gambar III.24. Flowchart algoritma A Search
100
III.7.3 Perancangan Struktur Menu
Perancangan struktur menu berisikan menu dan submenu yang berfungsi memudahkan user didalam menggunakan sistem. Pada gambar III.25 dijelaskan
perancangan struktur menu aplikasi game pathfinding.
Menu utama
File map Panduan
Map baru Buka
Simpan Keluar
Tentang aplikasi
Gambar III.25. Struktur menu
III.7.4 Perancangan Antarmuka
Perancangan antarmuka bertujuan untuk memberikan gambaran tentang aplikasi
yang akan
dibangun, sehingga
akan mempermudah
dalam mengimplementasikan aplikasi serta akan memudahkan pembuatan aplikasi.
Perancangan antarmuka aplikasi game pathfinding terbagi menjadi tiga rancangan antarmuka yaitu rancangan antarmuka tampilan utama, rancangan antarmuka
panduan dan rancangan antarmuka tentang aplikasi.
101
a. Rancangan tampilan utama
Rancangan antarmuka tampilan utama digunakan untuk menampilkan aplikasi utama. Pada rancangan antarmuka terdapat tombol-tombol yang
mempunyai fungsi tertentu yang berguna untuk menjalankan aplikasi. Rancangan antarmuka utama dapat dilihat pada gambar III.26.
T01
Navigasi : Isi nilai baris antara 3 sampai dengan 31
Isi nilai kolom antara 3 sampai dengan 39 Klik tombol OK untuk menampilkan baris
dan kolom yang telah diberi nilai Klik tombol Awal untuk menempatkan titik
awal pada map Klik tombol Tujuan untuk menempatkan
titik tujuan pada map Klik tombol Tembok untuk menempatkan
penghalang pada map Klik tombol Pohon untuk menempatkan
penghalang pada map Klik checkbox Lihat Cabang Pencarian
untuk menunjukkan jalur pelacakan A Klik tombol A untuk melakukan pencarian
rute menggunakan algoritma AA star Klik tombol Map Baru untuk membuat map
baru Klik tombol Reset untuk mereset
pencarian Klik tombol Acak untuk menempatkan titik
awal dan titik tujuan secara acak Geser kursor Nilai Heuristik untuk
menentukan nilai heuristik Klik menu File map untuk menampilkan
submenu Klik menu Bantuan untuk menuju T02
Klik menu Tentang aplikasi untuk menuju T03
File Map
Rute A A Star
Panduan
image
Map
Baris Kolom
OK
Awal Tujuan
Status Bar
Hapus Tembok
Pohon
Penghalang
Pencarian Rute
A Lihat Cabang
Pencarian
Keterangan : Ukuran 1100x719 sesuai dengan skin Delphi, font High tower text, verdana size 9, size 10 dan size 11
dengan warna hitam
Map Baru Reset
Acak Nilai Heuristik :
1
1 2
3 4
5 6
7 8
9 10
14 15
16
12 13
Tentang aplikasi
11
Gambar III.26. Rancangan antarmuka menu utama
Keterangan antarmuka tampilan utama dijelaskan pada tabel III.8.
Tabel III.8. Keterangan antarmuka tampilan utama
No. Nama Background dan
font Keterangan
1. E_Baris
Skin delphi + verdana size 10
hitam Tempat pengisian nilai baris
2. E_Kolom
Skin delphi + verdana size 10
hitam Tempat pengisian nilai kolom
102
Tabel III.8. Keterangan antarmuka tampilan utama lanjutan
No. Nama Background dan
font Keterangan
3. Tbl_Grid
Skin delphi + high tower text
size 9 hitam Proses untuk menampilkan
nilai baris dan nilai kolom pada map
4. SbStart
Skin delphi + gambar .bmp +
high tower text size 9 hitam
Proses untuk memasangkan titik awal pada map
5. SbEnd
Skin delphi + gambar .bmp +
high tower text size 9 hitam
Proses untuk memasangkan titik tujuan pada map
6. SbWalls
Skin delphi + gambar .bmp +
high tower text size 10 hitam
Proses untuk memasangkan titik tembok pada map
7. SbPohon
Skin delphi + gambar .bmp +
high tower text size 10 hitam
Proses untuk memasangkan titik pohon pada map
8. SbClear
Skin delphi + gambar .bmp +
high tower text size 10 hitam
Proses untuk
menghapus penghalang pada map
9. btnAStarFindPath
Skin delphi + high tower text
size 10 hitam Proses untuk menampilkan
jalur dengan A pada map
10. CB_ShowSearch Skin delphi +
high tower text size 11 hitam
Proses untuk menunjukkan pelacakan pencarian dengan
A
11. btnClear Skin delphi +
high tower text size 10 hitam
Proses membuat map baru
103
Tabel III.8. Keterangan antarmuka tampilan utama lanjutan
No. Nama Background dan
font Keterangan
12. btnRandomize Skin delphi +
high tower text size 10 hitam
Proses mengacak posisi titik awal dan titik tujuan
13. btnReset Skin delphi +
high tower text size 10 hitam
Proses untuk menghapus jalur yang telah ada pada map
14. tbHeuristic Skin delphi
Proses menggeserkan kursor untuk memilih nilai heuristik
yang akan digunakan 15. StatusBar1
Skin delphi + hitam
Proses untuk menampilkan status proses yang telah
dilakukan pengguna 16. sgMap
Skin delphi Tempat untuk pemasangan
posisi titik awal, titik tujuan, penghalang dan menampilkan
jalur pencarian
b. Rancangan tampilan menu file map
Pada rancangan antarmuka tampilan file map terdapat fungsi-fungsi yaitu membuat map baru, buka map, simpan map dan keluar aplikasi. Rancangan
antarmuka menu file map dapat dilihat pada gambar III.27.
104
T01 Navigasi :
Klik Map baru atau Ctrl+N untuk membuat map baru
Klik Buka atau Ctrl+O untuk membuka map yang sudah disimpan
Klik Simpan atau Ctrl+S untuk menyimpan map baru
Klik Keluar untuk keluar aplikasi
File Map Rute A A Star
Panduan image
Map
Baris Kolom
OK Awal
Tujuan
Status Bar Hapus
Tembok Pohon
Penghalang
Pencarian Rute A
Lihat Cabang Pencarian
Keterangan : Ukuran 1100x719 sesuai dengan skin Delphi, font High tower text, verdana size 9, size 10 dan size 11
dengan warna hitam
Map Baru Reset
Acak Nilai Heuristik :
1
1 2
3 4
5 6
7 8
9 10
14 15
16
12 13
Tentang aplikasi
11
Map baru Ctrl+N Buka Ctrl+O
Simpan Ctrl+S Keluar
Gambar III.27. Rancangan antarmuka menu file map
c. Rancangan tampilan panduan
Rancangan antarmuka tampilan panduan digunakan untuk menampilkan data panduan yang bermanfaat membantu pengguna untuk mengetahui fungsi
tombol yang terdapat pada aplikasi. Rancangan antarmuka panduan dapat dilihat pada gambar III.28.
T02
Isi panduan aplikasi
Keluar
Navigasi : Klik tombol keluar untuk
menuju ke T01
Keterangan : Ukuran 977 x 529 sesuai dengan skin Delphi, font High tower text size 12,
times new roman size 10 dengan warna hitam 2
image
1
3
Gambar III.28. Rancangan antarmuka panduan
105
Keterangan antarmuka panduan dijelaskan pada tabel III.9.
Tabel III.9. Keterangan antarmuka panduan
No. Nama Background dan font
Keterangan 1.
Image Gambar .jpg
Tampilan untuk gambar 2.
Panel_IsiBantuan Gambar .jpg + high
tower text size 12 hitam Tampilan panduan
penggunaan aplikasi 3.
Tbl_KeluarBantuan Skin delphi + gambar
.bmp + times new roman size 10 hitam
Proses keluar dari T02 menuju T01
d. Rancangan tampilan tentang aplikasi
Rancangan antarmuka tampilan tentang aplikasi digunakan untuk menampilkan data tentang aplikasi. Rancangan antarmuka tentang aplikasi dapat
dilihat pada gambar III.29.
T03
Isi tentang aplikasi
Keluar
Navigasi : Klik tombol keluar untuk
menuju ke T01
Keterangan : Ukuran 469 x 425 sesuai dengan skin Delphi, font High tower text size 12,
times new roman size 10 dengan warna hitam
image
1
2
3
Gambar III.29. Rancangan antarmuka tentang aplikasi
Keterangan antarmuka tentang aplikasi dijelaskan pada tabel III.10.
106
Tabel III.10. Keterangan antarmuka tentang aplikasi
No. Nama Background dan font
Keterangan 1.
Image Gambar .jpg
Tampilan untuk gambar 2.
Panel_IsiAbout Gambar .jpg + high
tower text size 12 hitam Tampilan isi tentang
aplikasi 3.
Tbl_KeluarAbout Skin delphi + gambar
.bmp + times new roman size 10 hitam
Proses keluar dari T03 menuju T01
e. Rancangan tampilan pesan Pada gambar III.30 adalah perancangan pesan yang muncul sebagai informasi
kepada pengguna dalam mengoperasikan sistem.
OK Nilai baris atau nilai kolom tidak boleh bernilai kurang dari 3
X
Konfirmasi
X
OK Nilai baris tidak boleh lebih dari 31
X
Konfirmasi
X
OK Nilai kolom tidak boleh lebih dari 39
X
Konfirmasi
X M01
M02
M03
OK Nilai baris atau nilai kolom tidak boleh kosong
X
Konfirmasi
X M04
OK Nilai baris tidak boleh lebih dari 31 dan Nilai kolom tidak
boleh lebih dari 39
X
Konfirmasi
X M05
Gambar III.30. Rancangan antarmuka pesan
107
f. Jaringan semantik
Perancangan jaringan semantik menggambarkan alur informasi dari setiap antarmuka aplikasi yang dijelaskan pada gambar III.31.
T01
T02 T03
M01 M02
M03 M04
M05
Gambar III.31. Jaringan semantik
Keterangan : T01 : Tampilan utama
T02 : Tampilan panduan T03 : Tampilan tentang aplikasi
M01 : Message konfirmasi nilai baris tidak boleh lebih dari 31 M02 : Message konfirmasi nilai kolom tidak boleh lebih dari 39
M03 : Message konfirmasi nilai baris atau nilai kolom kurang dari 3 M04 : Message konfirmasi nilai baris atau nilai kolom tidak boleh
kosong M05 : Message konfirmasi nilai baris tidak boleh lebih dari 31 dan
nilai kolom tidak boleh lebih dari 39
108
BAB IV IMPLEMENTASI DAN PENGUJIAN