PENERAPAN ALGORITMA GENETIKA
PADA GAME PROJECTILE ATTACK
Naufal
Irwan(09650177)
Jurusan Teknik informatika
Fakultas Sains Dan Teknologi
Universitas Islam Negeri Maulana Malik Ibrahim Malang
Abstrak
Game sebagai media hiburan
telah berkembang dengan pesat seiring dengan berkembangnya juga teknologi.
Salah satu unsur yang berperan penting dalam sebuah game adalah Algoritma Genetika. Dengan Algoritma Genetika,
diharapkan elemenelemen dalam game
dapat di jalankan atau di operasika lebih sempurna. Dalam permainan Projectile Attack ini penulis
menerapkan konsep Algoritma Genetika
dalam menentukan Titik Jarak Objek
tembak (pesawat) sebagai Sasaran .
Di dalam perancangan game ini, penulis menggunakan perangkat lunak
NetLogo 3D 4.1.3. Diharapkan dengan pembuatan game ini akan memberikan wacana
baru tentang game dan menambah
pengetahuan penulis tentang cara membuat suatu game.
Kata Kunci: Game,
Algoritma
Genetika, NetLogo 3D 4.1.3.
I.
PENDAHULUAN
1.1.Latar Belakang
Game komputer merupakan salah satu
aplikasi software yang saat ini banyak di kembangkan. Dengan jenis yang
macam-macam dan tampilan yang menarik, game komputer termasuk software yang
diminati oleh berabgai kalangan. Selain tampilan dan aplikasinya yang sangat
menarik, game komputer juga disinyalir dapat menjadi salah satu sarana
refresing yang cukup menyenangkan terutama bagi orang yang telah terbiasa
menggunakan komputer.
Game Projectile
Attack merupakan game sederhana yang
bertujuan bagaimana cara untuk melakukan
tembakan pada objek yang telah di siapkan (pesawat) dengan beberapa penghalang
(tembok) yang bertujuan untuk mengenai
objek tersebut, apabila objek tersebut terkena tembakan peluru dari tank maka
kesimpulan nya adalah permainan tersebut menang, dengan adanya titik penanda
jarak antara objek yang telah di implementasikan dalam game ini sedikit
memudahkan user untuk mengenai sasaran
atau objek tersebut.
NetLogo adalah sebuah bahasa
pemrograman yang multi-agent dan lingkungan pemodelan untuk mensimulasikan
fenomena alam dan sosial yang kompleks. NetLogo dirancang untuk riset dan
pendidikan dan digunakan oleh berbagai disiplin ilmu yang luas dan level
pendidikan.
Netlogo
dapat digunakan untuk memodelkan sistem yang komplek. User (atau istilah di
netlogonya adalah Observer) dapat memberikan instruksi kepada ratusan atau
ribuan agen untuk beroperasi secara independen. Bahasa pemrograman NetLogo
ini dikembangkan dari bahasa pemrograman Logo untuk kepentingan riset dan
pendidikan.
Netlogo
dibuat oleh Uri Wilensky pada tahun 1999 dan sejak saat
itu terus dikembangkan di-Center for Connected Learning and Computer-Based
Modeling.
1.2. Tujuan
Tujuan dalam tugas akhir ini adalah membuat
aplikasi permainan
Projectile Attack dengan sistem penanda jarak dari suatu objek (pesawat)
menggunakan Algoritma Genetika.
1.3. Batasan Masalah
Agar tidak menyimpang dari pokok pembahasan, pada Tugas Akhir ini Penulis
membuat
batasan
masalah pada hal-hal sebagai berikut.
1.
Software
yang digunakan adalah NetLogo 3D 4.1.3.
2.
Permainan
Projectile Atacck dibagun dengan menggunakan NetLogo 3D 4.1.3.
3.
Perangkat
lunak Game Projectile Attack ini dirancang untuk berjalan diatas sistem operasi
windows
4.
Penerapan
Algoritma Genetika (penentuan titik jarak atara Objek)
II.
PEMBAHASAN
2.1. NetLogo 3D 4.1.3
NetLogo adalah sebuah bahasa
pemrograman yang multi-agent dan lingkungan pemodelan untuk mensimulasikan
fenomena alam dan sosial yang kompleks. NetLogo dirancang untuk riset dan
pendidikan dan digunakan oleh berbagai disiplin ilmu yang luas dan level
pendidikan.
Netlogo
dapat digunakan untuk memodelkan sistem yang komplek. User (atau istilah di
netlogonya adalah Observer) dapat memberikan instruksi kepada ratusan atau
ribuan agen untuk beroperasi secara independen. Bahasa pemrograman NetLogo
ini dikembangkan dari bahasa pemrograman Logo untuk kepentingan riset dan
pendidikan.
Netlogo
dibuat oleh Uri Wilensky pada tahun 1999 dan sejak saat
itu terus dikembangkan di-Center for Connected Learning and Computer-Based
Modeling.
2.2. Game Projectile Attack
Game Projectile
Attack merupakan game sederhana yang
bertujuan bagaimana cara untuk melakukan
tembakan pada objek yang telah di siapkan (pesawat) dengan beberapa penghalang
(tembok) yang bertujuan untuk mengenai
objek tersebut, apabila objek tersebut terkena tembakan peluru dari tank maka
kesimpulan nya adalah permainan tersebut menang, dengan adanya titik penanda
jarak antara objek yang telah di implementasikan dalam game ini sedikit
memudahkan user untuk mengenai sasaran
atau objek tersebut.
a. Flowcart
b. Gambar
Game
Gambar 1. Tampilan awal ketika
program (game) di buka atau setelah di jalankan.
Gambar 2. Tembakan ke ara objek yang
meleset.
Ket :
Dapat
di lihat dengan jelas titik atau tanda yang berwarna kuning, dima tanda
tersebut sebagai penanda bahwa skala Angle masih kurang tepat untuk mengenai
sasaran (pesawat) sehinga peran User untuk menggerakan skala Angle nya sangat
di butuhkan supaya tembakan peluru dari Tank dapat mengenai sasaran (pesawat)
tersebut.
Gambar 3. Sasaran dapat di lumpuhkan
(kena sasaran).
Ket :
Setelah
User menentukan skala Angle berdasarkan keterangan dari titik yang berwarna
kuning seperti yang terlihat pada gambar
2, maka Skala yang tepat telah di temukan berdasarkan keterangan tersebut
sehingga User dapat memenangkan permainan ini.
2.3.Source Code Game
breed [
clouds cloud ]
breed [
targets target ]
breed [
tanks tank ]
breed [
guns gun ]
breed [
shells shell ]
globals [
target-xcor
target-ycor
dest-xcor
dest-ycor
jarak
jmin
x-pendek
y-pendek
x-vel
y-vel
velocity previous-wall-height
previous-wall-pos
]
;======================================================================
;Untuk Memasang Game
to setup
clear-all
set-default-shape tanks "tank"
set-default-shape guns "gun"
set-default-shape clouds "cloud"
set-default-shape shells "ball"
ask patches [ set pcolor 97 ]
ask patches with [ pycor < -15 ]
[ set pcolor black ]
;=====================================================================
; next we create the tank, it's gun, and the
aiming arrow
;Selanjutnxa Membuat sebuah tank, sebuah pistol dan sebuah
panah penunjuk...
create-tanks 1
[
set heading angle
setxy -16 -14.2
set color yellow - 2
set size 3
hatch-guns 1 ; the tank's gun/nozzle
[
set size 1
set color green - 30
; this confusing line of code creates a
directed "tie" link
; between the tank andt its gun
ask myself [ create-link-to myself [ tie hide-link ]]
;Panah Turtle
;===============================================================
hatch 1 ; the "aiming arrow"
[
set breed turtles
fd 1
set color red - 1
; and now we create a directed
"tie" link between
; the gun and its aiming arrow
ask myself [ create-link-to myself [ tie
hide-link ]]
]
]
]
;======================================================================
;Membuat sebuah Awan
create-clouds 1
[
set shape "cloud"
setxy 0 15
set color 8
set size 3.5
set heading 90
set jarak -15 ; Memberikan jarak -15/ untuk
menandai posisi vertical dari target
]
;=====================================================================
;membuat sebuah
target atau heli
create-targets 1
[
set
color black
set shape "heli"
setxy 15 (random 20) - 15
set size 2
set dest-xcor xcor
set dest-ycor ycor
set jmin 100
]
;====================================================================
; Membuat sebuah tembok
ask patches with [ pycor > -16 ]
[
ifelse (pycor < wall-height - 15 and
pxcor = wall-position ) ; nilai 0 membuat tembok tembus peluru
[ set pcolor red ]
[ set pcolor 97 ]
]
set previous-wall-height wall-height
set previous-wall-pos wall-position
end
;====================================================================
;Aksi untuk tombol go, untuk memulai Game
Projectile Attack
to go
if not any? targets [ stop ]
ask tanks [ set heading angle ]
if ( previous-wall-height != wall-height or
previous-wall-pos != wall-position )
[
ask patches with [ pycor > -16 ]
[ ifelse (pycor < wall-height - 15 and
pxcor = wall-position )
[ set pcolor red ]
[ set pcolor 97 ]
]
set previous-wall-height wall-height ; Atur
ulang tinggi tembok
set previous-wall-pos wall-position ; Atur ulang posisi tembok
]
every .05 ; kecepatan di medan perang
[
ask shells
[
setxy (xcor + x-vel) (ycor + y-vel)
set y-vel (y-vel - .01)
;set x-vel (x-vel - .02)
set target-xcor xcor
set target-ycor ycor
set jarak sqrt((target-xcor - dest-xcor)
^ 2 + (target-ycor - dest-ycor) ^ 2 )
if (jarak <= jmin )
[
set jmin jarak
set x-pendek xcor
set y-pendek ycor
set heading angle
]
; NOTE: this is *NOT* modeling a
realistic wind effect on a projectile.
; Instead, we just treat wind like
gravitational acceleration along x-axis
if (wall-block-wind? = false or
(wall-block-wind? = true and (ycor
> wall-height - 15) or ((xcor - wall-position) * wind < 0)))
[ set x-vel (x-vel + (wind / 10000)) ]
set velocity sqrt (( x-vel ^ 2 ) + (y-vel
^ 2))
if (velocity > 1)
[
set x-vel x-vel / velocity
set y-vel y-vel / velocity
set velocity 1
]
check-shell
]
ask clouds [ setxy (xcor + wind / 100)
(ycor) ]
]
display
end
;====================================================================
;Aksi untuk sebuah peluru dengan tujuan ke heli
to fire
if not any? shells
[
ask tanks
[
hatch-shells 1
[
set size 1
set color black
set x-vel ( sin angle * ( Power / 90 ))
set y-vel ( cos angle * ( Power / 90 ))
set velocity Power / 90
]
]
]
end
; This
procedure uses a clever hack to simulate having no ceiling for the projectile
;
Basically, if the projectile goes up above the ceiling, it actually wraps
around,
; but it
becomes hidden, until it comes back down again.
Obviously, this method
; isn't
bulletproof, but it works pretty well for the purposes of this game.
to
check-shell
if ( pycor = 17 and hidden? = false )
[ hide-turtle ]
if ( pycor = 17 and hidden? = true )
[ show-turtle ]
if ( hidden? = false )
[
if ( xcor > 17 or ycor < -15 or
pcolor = gray )
[
;===============================================================
;Skrip untuk memberikan penanda titik target berada..!
ask patch x-pendek y-pendek [ set
pcolor yellow ]
;ask patch x-vel y-vel [set pcolor
red]
die ]
if ( any? targets-here )
[
ask patches in-radius 2 [ set pcolor
blue ]
ask patches in-radius 1 [ set pcolor
red ]
ask targets-here [ die ]
die
]
;set
set pcolor scale-color sky velocity 2 0
]
end
;
Copyright 2008 Uri Wilensky. All rights reserved.
; The full
copyright notice is in the Information tab.
Info :
Untuk dapat melakukan percobaan menjalankan game ini maka
source code tersebut harus di copy dan di paste pada NetLogo 3D 4.1.3
_______ SELAMAT MENCOBA ______
2.4.
Prosedur Permainan Game
1.
Bukalah game pada NetLogo 3D 4.1.3
2.
Klik tombol SETUP
3.
Klik tombol GO
4.
Klik tombol FIRE untuk memulai
menembak sasaran
5.
Apabila posisi Angle nya / posisi
tembakan Tank tidak sesuai dengan arah sasaran (pesawat) maka Angle nya dapat
di sesuaikan dengan cara di geser maju atau mundur.
6.
Kemudian perhatikan kekuatan Power
nya, apabila jarak sasaran (pesawat) jauh maka power nya bisa juga di naikan
sesuai dengan perkiraan User begitu pula sebaliknya apabila dekat dengan
sasaran power di turunkan sesuai dengan perkiraan User pula.
7.
Selanjutnya apa bila sudah merasa
Pas maka User bisa melakukan tembakan(FIRE), kalau tidak kena sasaran maka akan
muncul tanda berwarna Kuning, nah itu merupakan bantuan (GA) untuk
memberitahukan kepada User bahwa jarak angle/power masih belum tepat, berarti
user hanya melakukan perubahan pada Angle/power nya saja
8.
Apabila kena sasaran nerarti anda
MENANG…!!!!!
9.
Selamat mencoba semoga anda terhibur
2.5. Algoritma Genetika
Algoritma genetik adalah
teknik pencarian yang di dalam ilmu komputer untuk menemukan penyelesaian
perkiraan untuk optimisasi dan masalah pencarian. Algoritma genetik adalah
kelas khusus dari algoritma evolusioner dengan menggunakan teknik yang
terinspirasi oleh biologi evolusioner seperti warisan, mutasi, seleksi alam dan
rekombinasi (atau crossover)
Algoritma Genetik pertama kali
dikembangkan oleh John Holland pada tahun 1970-an di New York, Amerika Serikat.
Dia beserta murid-murid dan teman kerjanya menghasilkan buku berjudul
"Adaption in Natural and Artificial Systems" pada tahun 1975.
Algoritma Genetik khususnya
diterapkan sebagai simulasi komputer dimana sebuah populasi representasi
abstrak (disebut kromosom) dari
solusi-solusi calon (disebut individual) pada sebuah masalah optimisasi akan
berkembang menjadi solusi-solusi yang lebih baik. Secara tradisional,
solusi-solusi dilambangkan dalam biner sebagai string '0' dan '1', walaupun dimungkinkan
juga penggunaan penyandian (encoding) yang
berbeda. Evolusi dimulai dari sebuah populasi individual acak yang lengkap dan
terjadi dalam generasi-generasi. Dalam tiap generasi, kemampuan keseluruhan
populasi dievaluasi, kemudian multiple individuals dipilih dari populasi
sekarang (current) tersebut secara stochastic (berdasarkan
kemampuan mereka), lalu dimodifikasi (melalui mutasi atau rekombinasi) menjadi
bentuk populasi baru yang menjadi populasi sekarang (current) pada iterasi
berikutnya dari algoritma.
2.6.
Saran
Berdasarkan pengujian terhadap Permainan Projectile Attack
yang telah dibuat, dapat diberikan beberapa saran sebagai berikut.
1.
Aplikasi permainan Projectile Attack ini dapat dikembangkan lebih
lanjut dengan permainan untuk melakukan penyesuaian otomatis pada Angle/Power.
2.
Aplikasi dapat dikembangkan lebih lanjut agar dapat dimainkan oleh
beberapa pemain secara bersamaan dalam satu PC/Laptop.
III.
KESIMPULAN
Game komputer merupakan salah satu
aplikasi software yang saat ini banyak di kembangkan. Dengan jenis yang
macam-macam dan tampilan yang menarik.
Game
Projectile Attack merupakan game sederhana yang bertujuan bagaimana cara untuk melakukan tembakan pada
objek yang telah di siapkan (pesawat) dengan beberapa penghalang (tembok) yang bertujuan untuk mengenai objek tersebut,
apabila objek tersebut terkena tembakan peluru dari tank maka kesimpulan nya
adalah permainan tersebut menang, dengan adanya titik penanda jarak antara
objek yang telah di implementasikan dalam game ini sedikit memudahkan user
untuk mengenai sasaran atau objek tersebut.
NetLogo adalah sebuah bahasa pemrograman
yang multi-agent dan lingkungan pemodelan untuk mensimulasikan fenomena alam
dan sosial yang kompleks. NetLogo dirancang untuk riset dan pendidikan dan
digunakan oleh berbagai disiplin ilmu yang luas dan level pendidikan.
Algoritma genetik adalah teknik pencarian yang di
dalam ilmu komputer untuk menemukan penyelesaian perkiraan untuk optimisasi dan
masalah pencarian.
DAFTAR PUSTAKA
http://www.iotataubeta.info/index.php/NetLogo
/show/88
0 komentar:
Posting Komentar