Minggu, 16 Desember 2012

GAME PROJECTILE ATTACK

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

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Best Web Host