IMPLEMENTASI ALGORITMA A* DALAM PENCARIAN RUTE TERPENDEK PADA GAME “GRASSHOPPER vs HUNTER”
TUGAS AKHIR
Diajukan Untuk Memenuhi
Persyaratan Guna Meraih Gelar Sarjana Strata 1 Teknik Informatika Universitas Muhammadiyah Malang
Disusun oleh :
INGGAR BAYU SASONGKO 08560366
JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNIK
UNIVERSITAS MUHAMMADIYAH MALANG
2013
LEMBAR PENGESAHAN
IMPLEMENTASI ALGORITMA A* DALAM PENCARIAN RUTE TERPENDEK PADA GAME “GRASSHOPPER vs HUNTER”
TUGAS AKHIR
Sebagai Persyaratan Guna Meraih Gelar Sarjana Strata 1 Teknik Informatika Universitas Muhammadiyah Malang
Disusun Oleh:
INGGAR BAYU SASONGKO 08560366
Tugas Akhir ini telah diuji dan dinyatakan lulus melalui sidang majelis penguji pada tanggal 26 Oktober 2013
Menyetujui
Penguji I Penguji II
(Gita Indah Marthasari, ST) (Diah Risqiwati, ST) NIP. 0720038101
Mengetahui Kajur Informatika
(Eko Budi Cahyono, S.Kom, MT) NIDN. 0717027001
LEMBAR PERSETUJUAN
IMPLEMENTASI ALGORITMA A* DALAM PENCARIAN RUTE TERPENDEK PADA GAME “GRASSHOPPER vs HUNTER”
TUGAS AKHIR
Sebagai Persyaratan Guna Meraih Gelar Sarjana Strata 1 Teknik Informatika Universitas Muhammadiyah Malang
Menyetujui
Pembimbing I Pembimbing II
(Yuda Munarko, S.Kom, M.Sc.) (Hardianto Wibowo, S.Kom)
NIDN. 0706077902 NIDN. 0721038602
LEMBAR PERNYATAAN
Yang bertanda tangan dibawah ini :
NAMA : INGGAR BAYU SASONGKO
NIM : 08560366
FAK./JUR. : TEKNIK/INFORMATIKA
Dengan ini saya menyatakan bahwa Tugas Akhir dengan judul
“IMPLEMENTASI ALGORITMA A* DALAM PENCARIAN RUTE TERPENDEK PADA GAME “GRASSHOPPER vs HUNTER”” beserta isinya adalah karya saya sendiri dan bukan merupakan karya tulis orang lain, baik sebagian maupun seluruhnya, kecuali dalam bentuk kutipan yang telah disebutkan sumbernya.
Demikian surat pernyataan ini saya buat dengan sebenar-benarnya.
Apabila kemudian ditemukan adanya pelanggaran terhadap etika keilmuan dalam karya saya ini, atau ada klaim dari pihak lain terhadap keaslian karya saya ini maka saya siap menanggung segala bentuk resiko/sanksi yang berlaku.
Mengetahui, Malang, 18 Oktober 2013
Dosen Pembimbing Yang Membuat Pernyataan
(Yuda Munarko, S.Kom, M.Sc.) (Inggar Bayu Sasongko) NIDN. 0706077902 NIM. 08560366
iii
LEMBAR PERSEMBAHAN
Tugas Akhir ini penulis menyadari bahwa penyusunan dan pembuatan karya sederhana ini tidak lepas dari berbagai pihak, oleh karena itu dengan segala kerendahan hati, penulis menyampaikan terima kasih kepada :
1. Allah Subhanahu Wa Ta’ala yang tiada henti memberikan rahmat dan hidayah-Nya serta menerangi setiap langkah saya.
2. Rosulullah Muhammad SAW, suri tauladannya, panutan terbaikku, dan tokoh idolaku.
3. Ibu saya tercinta, bapak saya yang memberikan segala sesuatu yang saya butuhkan, doa tulus untuk saya, pengorbanan, motivasi, kesabaran, ketabahan dan tetes air matamu yang terlalu mustahil untuk dinilai, walaupun jauh, engkau sebaik-baik panutan meski tidak terlalu sempurna.
4. Bapak Yuda Munarko, S.Kom, M.Sc. selaku dosen pembimbing I dan Bapak Hardianto Wibowo, S.Kom selaku dosen pembimbing II yang senantiasa telah banyak memberikan pengarahan dan bimbingannya selama dalam penyelesaian penulisan Tugas Akhir ini.
5. Seluruh dosen pengajar di Jurusan Teknik Informatika yang telah menjadi membimbing saya dalam menuntut ilmu sehingga saya bisa menjadi seseorang yang lebih baik.
6. Adik-adik saya Manggar Respati Kusuma dan M. Rafi Rizqullah atas kebersamaan, dukungan, doa, kasih sayang, dan perhatian kalian padaku, semoga selalu menjadi yang terbaik, dan keluarga besar saya yang selalu memberikan semangat, dorongan, dan saran-saran dalam menyelesaikan Tugas Akhir ini.
iv
7. Teman-teman seperjuangan di Universitas Muhammadiyah Malang, khususnya jurusan Informatika (Nizar, Bibil, Arif, Rifan, Irfan, Azam, Firdi, Reza P., Faris, Sultan, Jo *cempe dan cempewati dan teman-teman kelas G lainnya) dan sahabat saya dari SMK sampai lulus kuliah, Nur, terima kasih atas support dan semangat kebersamaan kalian.
8. Teman baik dan tutor saya saat masa mahasiswa baru sampai sekarang Nizar Hidayat, terima kasih sudah membantu dengan sabar.
9. Musisi-musisi band Ether (Angga, Arif, Nur, Anjar) yang telah senantiasa membantu saya dalam menyalurkan hobi bermusik, Thanks, Keep Rockin’.
10. Teman-teman ngopi (Egi, Sipul, Rofiq, Gondrong, anak-anak ex-Keiko) yang selalu menemani saya di saat suka dan duka, terima kasih atas kebersamaan kalian dalam men-support saya.
11. Teman dekat saya Marcelina Rachmawati yang telah memberi semangat dan kasih sayang, terima kasih banyak.
12. Teman kos Rizal Jambrong, Siraj, Willy, Arifin, beserta Ibu-Bapak Kos yang telah ikut membantu dan doa, terima kasih atas segala sesuatu yang telah diberikan selama ini.
Malang, 30 Januari 2013
Penulis
Hamzah Rais
v
MOTTO
“Jadilah seperti karang di lautan yang kuat dihantam ombak dan kerjakanlah hal yang bermanfaat untuk diri sendiri dan orang lain, karena hidup hanyalah sekali.
Ingat hanya pada Allah apapun dan di manapun kita berada kepada Dia-lah tempat meminta dan memohon.”
“Jenius adalah 1 % inspirasi dan 99 % keringat. Tidak ada yang dapat menggantikan kerja keras”
“Stop saying I WISH, start saying I WILL”
vi
KATA PENGANTAR
Assalamu'alaikum Wr. Wb.
Dengan memanjatkan puji syukur kehadirat Allah SWT atas limpahan rahmat yang telah diberikan sehingga Penulis dapat menyelesaikan Tugas Akhir yang berjudul Implementasi Algoritma A* dalam Pencarian Rute Terpendek pada Game “Grasshopper vs Hunter”.
Penulis menyadari sepenuhnya bahwa penulis Tugas Akhir ini masih banyak kekurangan, oleh karena itu penulis mengharapkan saran dan kritik yang membangun agar tulisan ini bermanfaat bagi perkembangan ilmu kedepannya.
Akhir kata penulis mengucapkan terima kasih kepada semua pihak yang telah membantu sehingga tugas akhir ini terselesaikan.
Wassalamu’alaikum Wr. Wb.
Malang, 18 Oktober 2013 Penulis
Inggar Bayu Sasongko
vii DAFTAR ISI
Halaman Judul Lembar Persetujuan Lembar Pengesahan
Lembar Pernyataan Keaslian
Abstrak ... i
Abstract ... ii
Lembar Persembahan ... iii
Motto ... v
Kata Pengantar ... vi
Daftar Isi ... vii
Daftar Gambar ... ix
Daftar Tabel ... xi
BAB I PENDAHULUAN 1.1 Latar Belakang Masalah ... 1
1.2 Rumusan Masalah ... 2
1.3 Tujuan ... 2
1.4 Batasan Masalah ... 3
1.5 Metodologi ... 3
1.5.1 Studi Literatur ... 3
1.5.2 Perancangan Sistem ... 3
1.5.3 Implementasi Sistem ... 3
1.5.4 Pengujian Sistem ... 3
1.5.5 Pengujian dan Analisa Hasil Program ... 3
1.6 Sistematika Penulisan ... 4
BAB II LANDASAN TEORI 2.1 Game ... 6
2.1.1 Gambaran Umum ... 6
2.1.2 Gameplay ... 7
2.1.3 Game Pathfinding ... 8
2.1.4 Artificial Intelligence ... 8
2.2 Algoritma A* ... 9
2.3 2D Collision Detection... 12
2.4 Java ... 13
2.4.1 Pengantar Java ... 13
2.4.2 Sejarah Java ... 14
2.4.3 Kelebihan Java ... 15
viii
BAB III ANALISA DAN PERANCANGAN SISTEM
3.1 Gambaran Umum ... 18
3.2 Analisa Kebutuhan ... 20
3.2.1 Kebutuhan Hardware ... 21
3.2.2 Kebutuhan Software ... 21
3.3 Perancangan Sistem ... 21
3.3.1 Use Case Diagram ... 22
3.3.2 Activity Diagram ... 23
3.3.3 Sequence Diagram ... 25
3.3.4 Class Diagram ... 29
3.3.5 Finite State Machine (FSM) ... 30
3.4 Perancangan Interface ... 31
BAB IV IMPLEMENTASI DAN PENGUJIAN 4.1 Implementasi Kode Program ... 35
4.1.1 Menampilkan Menu Awal ... 36
4.1.2 Menggerakkan Grasshopper ... 36
4.1.3 Collision Detection ... 36
4.1.4 Implementasi Algoritma A* ... 37
4.1.5 Penambahan Fitur Skill ... 40
4.2 Pengujian Sistem ... 41
4.2.1 Pengujian A* Pathfinding ... 41
4.2.1.1 Pengujian Path dengan Penghitungan Manual 41 4.2.1.2 Pengujian Path pada Kedua Hunter ... 48
4.2.2 Pengujian Escaping Skills ... 50
4.2.2.1 Dash ... 51
4.2.2.2 Freeze ... 52
4.2.2.3 Spin Aura ... 53
4.2.3 Pengujian Game State ... 54
4.2.3.1 Menu Awal ... 54
4.2.3.2 Tampilan Kalah ... 55
4.2.3.3 Tampilan Menang ... 56
BAB V KESIMPULAN DAN SARAN 5.1 Kesimpulan ... 59
5.2 Saran ... 59 DAFTAR PUSTAKA
BIODATA PENYUSUN
xi
DAFTAR TABEL
Tabel 3.1 Objek dan karakter dalam game Grasshopper vs Hunter ... 20
ix
DAFTAR GAMBAR
Gambar 2.1 a) Peta permainan sederhana b) Solusi path ... 11
Gambar 3.1 Use case diagram ... 22
Gambar 3.2 Activity diagram Memulai Permainan ... 23
Gambar 3.3 Activity diagram Mengendalikan Grasshopper ... 24
Gambar 3.4 Activity diagram Menggunakan Escaping Skills ... 25
Gambar 3.5 Activity diagram Keluar Permainan ... 25
Gambar 3.6 Sequence diagram Memulai permainan ... 26
Gambar 3.7 Sequence diagram Mengendalikan grasshopper ... 27
Gambar 3.8 Sequence diagram Menggunakan escaping skills... 28
Gambar 3.9 Sequence diagram Keluar permainan ... 29
Gambar 3.10 Class diagram dalam game grasshopper vs hunter ... 29
Gambar 3.11 State Machine (FSM) dari karakter Hunter ... 31
Gambar 3.12 Rancangan interface Tampilan Menu Awal ... 32
Gambar 3.13 Rancangan interface Tampilan Permainan grasshopper vs hunter 33 Gambar 3.14 Interface Tampilan game jika player kalah ... 34
Gambar 3.15 Interface Tampilan game jika player menang ... 34
Gambar 4.1 Class-Class Pada Game Grasshopper vs Hunter ... 35
Gambar 4.2 Potongan Class Game untuk menampilkan screen Menu awal 36 Gambar 4.3 Potongan Class Grasshopper untuk menggerakkan karakter grasshopper ... 36
Gambar 4.4 Potongan Class Tile untuk mengecek collision antara grasshopper dengan wall ... 37
Gambar 4.5 Potongan Class AStar untuk penghitungan algoritma A* ... 37
Gambar 4.6 Potongan Class AStar untuk menentukan node yang dimasukkan ke dalam Open List ... 38
Gambar 4.7 Potongan Class Astar untuk menentukan node yang dimasukkan ke dalam Closed List dan penelusuran path ... 39
Gambar 4.8 Potongan Class Grasshopper untuk skill Dash ... 40
Gambar 4.9 Potongan Class Grasshoper untuk skill Spin Aura ... 40
Gambar 4.10 Potongan Class Enemy untuk skill Freeze ... 40
Gambar 4.11 Peta manual koordinat start dan goal ... 41
Gambar 4.12 Screenshot posisi awal... 47
Gambar 4.13 Screenshot hunter sampai pada posisi grasshopper ... 47
x
Gambar 4.14 Screenshot kedua hunter saat bergerak dari koordinat yang sama 48 Gambar 4.15 Screenshot kedua hunter saat bergerak dengan path yang berbeda49 Gambar 4.16 Potongan kode program untuk pemanggilan fungsi pathfinding
pada hunter 1 ... 49
Gambar 4.17 Potongan kode program untuk pemanggilan fungsi pathfinding pada hunter 2 ... 50
Gambar 4.18 Screenshot saat skill belum diaktifkan ... 50
Gambar 4.19 Screenshot saat skill dash diaktifkan ... 51
Gambar 4.20 Screenshot saat skill freeze diaktifkan ... 52
Gambar 4.21 Screenshot saat skill spin aura diaktifkan ... 53
Gambar 4.22 Screenshot Menu Awal ... 54
Gambar 4.23 Screenshot Collision Grasshopper dengan Hunter ... 55
Gambar 4.24 Screenshot Tampilan Kalah ... 56
Gambar 4.25 Screenshot Kunci lengkap dan player menuju Exit Door yang telah aktif ... 57
Gambar 4.26 Screenshot Tampilan Menang ... 58
DAFTAR
PUSTAKA[1] Putrady Ecky, 2009, “Penerapan Algoritma A* Sebagai Algoritma Pencari Jalan Dalam Game”, Makalah IF2091 Strategi Algoritmik Institut Teknologi Bandung.
[2] Igor Bonny Tua Panggabean, Yoseph Suryadharma, Prasetyo Nugroho, 2006, “Penyelesaian Permasalahan 8 Puzzle Dengan Menggunakan Algoritma A* (A Star)”, Laboratorium Ilmu dan Rekayasa Komputer, Institut Teknologi Bandung.
[3] Matthews, James, 2002, “Basic A* Pathfinding Made Simple”, AI Game Programming Wisdom, Charles River Media.
[4] Fabricatore, Carlo, 2007, Gameplay and Game Mechanics Design : A Key to Quality in Videogames, OECD, CERI.
[5] Juan José Jiménez, Rafael J. Segura, Francisco R. Feito, 2003, “Efficient Collision detection between 2D Polygon”, Departamento de Informática.
E.P.S.J. Universidad de Jaén, Av. Madrid, 35, Spain (23071), Jaén, Jaén [6] Game Programming, Collision detection, IT Telkom,
http://gameprogramming.blog.ittelkom.ac.id/blog/files/2009/09/11307011 4-collision-detection-game-programming.docx, diakses tanggal 18 April 2013.
[7] Ross Graham, Hugh McCabe, Stephen Sheridan, 2006, Pathfinding in Computer Games, School of Informatics & Engineering, Institute of Technology Blanchardstown.
[8] Ramadhani, Aristama, 2008, “Menggerakkan Karakter Game Menggunakan Algoritma Breadth-First Search (BFS) dan Algoritma A*
(A Star)”, Makalah IF2251 Strategi Algoritmik, Institut Teknologi Bandung.
[9] Laksono, Adi Chandra, 2012, “Gerak Pekerja Pada Game Real Time Strategy (RTS) Menggunakan Metode Finite State Machine (FSM)”, Jurusan Teknik Informatika, Fakultas Teknik, Universitas Trunojoyo Madura.