Senin, 30 Juni 2014

PEMBUATAN GAME FIGHTER COPO DENGAN BAHASA PROLOG

ABSTRAKSI
Game sebagai media hiburan telah berkembang dengan pesat seiring dengan berkembangnya juga teknologi. Salah satu unsur yang berperan penting dalam sebuah game adalah kecerdasan buatan. Dengan kecerdasan buatan, diharapkan elemen-elemen dalam game dapat berperilaku sealami mungkin layaknya manusia, salah satu contoh game yang menggunakan kecerdasan buatan adalah Fighter game.

Fighter game adalah permainan video game yang memperlihatkan pertarungan dua tokoh meskipun ada beberapa game yang menciptakan pertandingan dengan jumlah kontestan lebih dari dua, tetapi pada dasarnya kondisi yang diciptakan adalah pertarungan disebuah arena atau tempat secara langsung. atau petarungan yang berusaha saling mengalahkan. Gerakan tokoh dalam sebuah faighter game sangat penting untuk menunjukkan tindakan atau karakter yang dimainkan. Saat ini banyal fighter game yang menampilkan pertarungan berbasis seni beladiri. Gerakan-gerakan fighter adalah pukulan dan tendangan.

I.                  PENDAHULUAN
Jika kita menyimak kilas balik sejarah pembuatan game dan mesinnya, ternyata cukup menarik untuk diperhatikan. Mungkin tidak banyak orang-orang yang mengetahui siapa pelopor mesin game atau bagaimana persaingannya antar perusahan game. Lewat kilas balik kita bisa terheran-heran, terkagum-kagum dan tersenyum lucu melihat bentuk-bentuk mesin game bahkan gamenya sendiri.

Memang tidak sedikit orang-orang khususnya orang tua dan guru yang berpikiran kolot meremehkan bahkan menganggap game itu tidak berguna sama sekali. Padahal mereka tidak sadar akan kesalahan mereka yang berakibat fatal karena hanya memandang game dengan sebelah mata bahkan tertutup mata mereka secara keseluruhan.

Dewasa ini, banyak orang – orang bahkan mungkin anda menganggap game itu terkesan kekanak – kanakan. Tapi jika anda berfikiran seperti itu, itu sebetulnya merupakan sesuatu kesalahan yang sangat besar dan fatal. Tahukah anda bahkan ada orang yang berumur lebih dari enam puluh tahun yang masih bermain game? Padahal jikalau seandainya kita pikir, itu merupakan usia yang sangat tua bahkan lansia untuk bermain game. Tetapi di Indonesia ini kamipun bingung dan bimbang kenapa masih saja ada orang yang menganggap game itu kekanak – kanakan. Mungkin itu karena mereka cuma mengambil dampak negatif saja dari game tersebut. Padahal sebetulnya, game itu sangat penting peranannya dalam kehidupan sehari – hari anda,Contohnya, dikehidupan sehari-hari banyak sekali terjadinya perkelahian dan menimbulkan banyak korban, untuk berupaya mencegah kejadian itu terus terulang makanya kami membuat game fighter untuk melampiaskan perkelahiannya didalam virtual game agar tidak menimbulkan korban

Secara tidak langsung game dapat menumbuhkan dan melatih kreatifitas,daya ingat,inovasi,misalnya pada saja seseorang yang biasa memainkan game strategi,ketika dia dihadapkan dengan suatu masalah di kehidupannya maka secara tidak langsung naluri gamers dirinya akan dipanggil untuk menentukan strategi apa yang dipakai dalam menghadapi masalah yang dihadapinya agar masalahnya dapat diselesaikan dengan cepat dan efisien juga tidak menimbulkan kerugian bagi dirinya dan orang lain.

Dalam rangka memperoleh informasi dan mendapatkan data yang diingkan,penulis telah melakukan interview dengan para gamer,penulis juga mengambil beberapa referensi  dari buku-buku dan tutor pemrograman.
Bahasa pemrograman yang digunakan dalam pembuatan video game ini adalah Bahasa pemrograman Prolog,text editor yang digunakan adalah Strawbery prolog 2.9
-          Membuat media hiburan
-          Melatih kreatifitas,daya ingat,dan inovasi
-          Merubah sudut pandang orang tentang game bahwa tidak selamanya bermain video game itu bernilai negatif,banyak nilai-nilai positifnya jika kita tidak memandang sebelah mata




II.               Pembahasan
2.1 Algoritma

Algoritma greedy merupakan jenis algoritma yang menggunakan pendekatan penyelesaian masalah dengan mencari nilai maksimum sementara pada setiap langkahnya. Nilai maksimum sementara ini dikenal dengan istilah local maximum. Pada kebanyakan kasus, algoritma greedy tidak akan menghasilkan solusi paling optimal, begitupun algoritma greedy biasanya memberikan solusi yang mendekati nilai optimum dalam waktu yang cukup cepat

Pada game Fighter copo ini mengguna AI (Artificial Intelegence) dengan menerapkan algoritma greedy dinama AI akan mencari poin sebanyak-banyaknya dengan tujuan menjatuhkan lawan,AI akan mergerak maju sampai mencapai batas jarak untuk melancarkan serangan

Yang dilakukan AI :

1.      Pengecekan Status Jarak, jika si AI akan mebergerak terus sampai mencapai batasan melancarkan serangan.
2.      Pengecekan HP, jika HP dari lawan masih ada maka AI akan terus melancarkan serangan sampai HP lawan benar-benar habis.

Berikut ini adalah algoritma yang digunakan untuk Command Skill secara umum:
1.      Inisialisai Target.
2.      Pemberian nilai animasi dan efek suara.
Berikut ini adalah algoritma yang digunakan untuk Command Skill yang bersifat offensif, yaitu Skill yang mengurangi HP(Target), mengurangi MP(Target),Penghitungan efek Skill yang tergantung dari SPR(Caster) dikurangi SPR(Target) atau STR(Caster) dikurangi DEF(Target) :
-          Penghitungan point dari efek Skill(Tendang dan Pukul).
-          Penambahan atau pengurangan HP atau MP.
-          Pengecekan HP, jika HP melebihi MaxHP, maka HP sama dengan MaxHP. Jika HP kurang dari 0, maka HP sama dengan 0.
-          Pengecekan MP, jika MP melebihi MaxMP, maka MP sama dengan MaxMP. Jika MP kurang dari 0, maka MP sama dengan 0.

2.2 RULES

Ada beberapa aturan dalam permainan ini, antara lain :

1.    Permainan terdiri dari beberapa option yaitu easy,normal,hard,setiap option AI memiliki   kecepatan,kekuatan,dan serangan yang berbeda-beda tergantung pada lvl yang dipilih
2.      Diawal permainan kedua petarung dibekali HP yang sama .
3.      Pemain ataupun komputer harus melancarkan serangan berupa pukulan atau tendangan dengan tujuan memperoleh poin sebanyak-banyaknya guna meraih kemenangan
4.  pemain dan komputer(AI) diberi kesempatan melancarkan serangan untuk mendapatkan poin hingga HP=0,juka ada petarung yang Hpnya=0 maka pertarungan selesai
5.Di akhir pertarungan kemenangan diberikan kepada petarung yang memiliki poin terbanyak dan berdiri paling akhir.

2.3 GOAL

            Tujuan (goal) untuk menyelesaikan permainan ini adalah mencari Pemenang dalam pertarungan satu lawan satu.

Terdapat beberapa kondisi yang mungkin terjadi pada permainan ini, yaitu :
1.      KONDISI MENANG
Kondisi menang terjadi apabila petarung memperoleh poin terbanyak dan berdiri paling akhir dalam pertandingan.

2.      KONDISI KALAH
Kondisi kalah dapat terjadi karena HP=0 dan poin yang diperoleh tidak lebih banyak dari lawan.

2.4 TEKNIK PEMBUATAN

Dalam pembuatan game fighter copo ini menggunakan text editor strawberry prolog, adapun tampilan text editor strawberry prolog adalah berikut:

Sebelum kita masuk pada step codingan terlebih dahulu kita harus menyiapkan beberapa file image yang dibutuhkan dan menyimpannya pada satu folder agar mudah untuk memanggilnya dan adapun extension imagenya adalah bmp.
Setelah selesai menyiapkan file-file yang dibutuhkan masuk pada step codingan pada step ini terbagi dari beberapa bagian yaitu pertama kita akan memasukan sintak yang akan memanggil image yang telah kita simpan di folder sintaknya sebagai berikut:
G_bc is bitmap_image("gambar\\bg_score.bmp",_), %ini gambar score menang
     G_bclose is bitmap_image("gambar\\bg_score_lose.bmp",_), %ini gambar score kalah
     G_title is bitmap_image("gambar\\latar103.bmp",_),
                   %ini gambar awal
Sintaks diatas memanggil file image bg_score.bmp yang tersimpan pada folder gambar

    
Kemudian step selanjutnya mendeklarasikan nilai variabel yang dibutuhkan
G_x1:=30, %posisi x jagoan
     G_y1:=355,    %posisi y jagoan

     G_x1lawan:=650,    %posisi x lawan
     G_y1lawan:=355,    %posisi y lawan
Sintak diatas menentukan posisi jagoan dan posisi lawan pada sumbu x dan y

Selanjutnya membuat fungsi yang nantinya akan kita panggil sintaknya seperti dibawah ini
func_20(init):-
          G_x1:=30, %posisi x jagoan
          G_y1:=355,    %posisi y jagoan

          G_x1lawan:=650,    %posisi x lawan
          G_y1lawan:=355,    %posisi y lawan

          G_waktu:=30,  %lamanya waktu dalam 1/detik

          G_darah1:=320, %ini nyawa jagoan
          G_darah2:=300, %ini nyawa lawan

          G_jarak:=0.   %ini jarak kedua permain

Lalu mebuat fungsi tampilan option
win_func(init):-
         
         
         
          button(_,_,mulai_game(_),"MULAI",275,400,250,40),
          button(_,_,about(_),"TENTANG",275,450,250,40),
          button(_,_,keluar_game(_),"KELUAR",275,500,250,40)
sintak diatas berfungsi membuat beberapa button mulai,tentang dan keluar dengan ukuran yang telah ditetapkan diatas tampilannya sebagai berikut :


membuat fungsi menubar,bantuan dan about
menu_bar(init):-
    
          menu( pop_up, _, _, menu_pilihan(_),"&Pilihan"),
          menu( normal, _, _, menu_bantuan(_), "&Bantuan"),
          menu( normal, _, _, menu_tentang(_), "&Tentang").

menu_bantuan(press):-
              message("cara bermain","Tekan tombol Kanan untuk berjalan kekanan, tombol kiri untuk berjalan kekiri, dan tombol Q untuk memukul,tombol W untuk menendang",i).

menu_tentang(press):-
              message("Fighter COPO","FIGHter copo adalah arena pertarungan para kesatria Copo demi menjadi kesatria copo sejati",i).
sintak diatas berfungsi membuat text yang terdapat pada button bantuan dan tentang,text ini akan tampil bila terdapat action pada button-button tersebut,tampilannya sebagai berikut :


setelah semuah step kita selesaikan selanjutnya kita membuat fungsi tingkat kesulitan pada game sintaknya seperti berikut:

%---------------- Easy --------------------%

          win_func3(press):-          
          close_window(G_layar1_1),

          G_level := 1,        
          mulai_game1(_).        
         
          %---------------- Normal--------------------%  

          win_func4(press):-
          close_window(G_layar1_1),

          G_level := 2,
          mulai_game112(_).

          %---------------- Hard --------------------%
         
          win_func5(press):-
          close_window(G_layar1_1),

          G_level := 3,
          mulai_game112(_).
sintak tersebut berfungsi membuat fungsi option yang mana nanti akan dipanggil dari fungsi awal,tampilannya sebagai berikut :



Setelah itu kita dapat membuat fungsi timer seperti berikut
%------------------------ FUNGSI TIMER HABIS---------------------------------  %
     time_check(end):-
          (G_waktu=0->
              close_window(G_layar2),
              window(G_layar2_1,_,win_func_hasil(_),"Fighter Dragon",250,100,610,430)).
Sintak timer ini berfungsi sebagai penghenti jalannya fungsi yang dipanggil bila waktu sama dengan null

Kemudian pada fungsi lawan gerak kita gunakan sintak sebagai berikut

lawan_berkurang(end):-
          (G_x1lawan >= 650 ->
              G_x1lawan := 650),
          (G_jarak>200->                            
         
          G_x1lawan:=G_x1lawan-50,update_window(_)  
          ),                
                   %jika jarak lebih dari 200
          (G_jarak=<200->                                
         
          G_x1lawan:=G_x1lawan+50,tendangmusuh1(_),update_window(_)
          ),
          (G_jarak=<130->                                
         
          G_x1lawan:=G_x1lawan+50,pukulmusuh1(_),update_window(_)  
          ),                                    %jika jarak kurang dari 190
         
          (G_darah1=<0->
          %G_darah1:=320,
          %G_darah2:=300,
          %G_x1lawan:=650,G_x1:=30,
          close_window(G_layar2),
              G_Hcond := 2,
          window(G_layar2_1,_,win_func_hasil(_),"Fighter Dragon",250,100,610,430)
          %message("LOSE","PERMAINAN BERAKHIR\nAnda dinyatakan KALAH",s)     
          ),
          (G_darah2>=600->
          %G_darah2:=300,
          %G_darah1:=320,
          %G_x1lawan:=650,G_x1:=30,
          %message("WINNER","PERMAINAN BERAKHIR\nAnda dinyatakan MENANG",i)
          close_window(G_layar2),
              G_Hcond := 1,
              window(G_layar2_1,_,win_func_hasil(_),"Fighter Dragon",250,100,610,430)
          ).
Tampilannya sebagai berikut :



Dalam pembuatan game ini agar dapat berjalan dengan baik maka kita harus menyatukan semuah file yang dibutuhkan ke dalam satu folder baik itu file image maupun file codingan.




    


           
III.                  Penutup
 3.1    Kesimpulan
 Game telah mengalami perkembangan yang pesat, baik game online ataupun video game sama-sama memiliki peminat yang besar. Game memang mempunyai banyak manfaat bagi pelajar untuk menunjang daya pikirnya. Namun bila dalam pemakaian tidak dikontrol dapat mengakibatkan kebiasaan dan menimbulkan manfaat buruk nantinya.
 3.2    Saran
Berdasarkan pembahasan masalah yang ada diatas, disarankan bagi pelajar agar :
1.      Mengurangi intensitas bermain game
2.      Mencari kesibukan lain agar terlepas dari kecanduan bermain game
3.      Meningkatkan prestasi akademik
4.      Berhati-hatilah dengan radiasi media visual video game, karena bisa mengganggu kerja tubuh dan otak
5.      Pintar memilih waktu dan jenis permainan, yang lebih edukatif


IV.    Daftar pustaka