Wednesday, July 12, 2017

Matches One Piece

Matches One Piece
Wafiddin Naufal
Jurusan Teknik Informatika, Fakultas Teknologi Industri
Universitas Gunadarma

PENDAHULUAN
Game merupakan jenis hiburan yang disukai oleh semua orang di semua usia, baik anak-anak sampai dewasa ataupun tua. Selain digunakan untuk menghilangkan kepenatan dalam beraktivitas, sebuah permainan juga dapat berfungsi untuk melatih pola pikir seseorang untuk mencari solusi memecahkan suatu permasalahan yang ada di sebuah game. Sekarang banyak permainan baru yang memanfaatkan teknologi modern dalam pembuatannya dan penggunaannya.
Banyaknya jumlah dari jenis permainan yang muncul, menyebabkan adanya pengelompokan genre dari permainan. Genre permainan juga bertambah mengikuti perkembangan jaman, ada genre action games, strategy games, role playing games, sport games, vehicle simulations, construction and management simulations, adventure games, artificial life and puzzle, dan online gaming.
Dari beberapa genre permainan yang telah disebutkan tadi, Saya tertarik dengan genre strategy game yaitu Matches One Piece. Permainan Matches One Piece ini merupakan permainan sederhana yang dikembangkan dari permainan Matches pada Strawberry Prolog. Permainan ini melatih dan mengasah otak user untuk berpikir mengenai strategy yang digunakan agar dapat mengalahkan komputer. Komputer yang merupakan AI bertugas untuk menyulitkan kita dalam memenangkan permainan Matches One Piece. Komputer juga diberi kemampuan untuk memenangkan permainan. Ai yang saya buat memiliki tingkat kesulitan (level) yang berbeda-beda seperti Easy Medium dan Hard.

PEMBAHASAN
Prolog adalah bahasa pemrograman logika atau di sebut juga sebagai bahasa non-procedural. Namanya diambil dari bahasa Perancis programmation en logique(pemrograman logika). Bahasa ini diciptakan oleh Alain Colmerauer dan Robert Kowalskisekitar tahun 1972 dalam upaya untuk menciptakan suatu bahasa pemrograman yang memungkinkan pernyataan logika alih-alih rangkaian perintah untuk dijalankankomputer.

-          Permainan Matches One Piece
Matches One Piece ini merupakan sebuah permainan yang telah di kembangkan dari permainan matches yang ada pada Strawberry Prolog, di dalam permainan matches yang sebenarnya adalah objek korek api yang terdiri dari 1 sampai 15 korek api dan tidak ada tingkatanya, akan tetapi Matches One Piece ini saya menggunakan objek dari gambar atau karakter anime yang ada di One Piece yang terdiri dari beberapa objek sesuai dengan tingkatannya.

-          Keadaan awal (Initial state)
Matches ini memiliki splash screen di awal pada saat kita menjalankan programnya. Pada tampilan awal saat permainan dijalankan User akan melihat interface Splash Screen Selanjutnya pada saat loading screen selesai maka akan tampil sebuah Menu Utama yang bernama “Welcome to One Piece” yang berisi button – button yakni  Play, dan Exit. Pada saat berada di window permainan terdapat 4 buah Menu Bar yaitu :
a)      Start Level digunakan untuk memilih level yang terdiri dari 3 tingkatan yakni ada easy, medium, dan hard yang objeknya berbeda beda jumlahnya dan memiliki timer yang berbeda-beda pula.
b)      Options digunakan untuk merubah pengaturan yang mana jika user ingin menang dan siapakah yang akan jalan terlebih dahulu
c)       Rules digunakan untuk mengetahui aturan dari permainan game ini
d)      Back ini digunakan untuk kembali ke menu utama




-          Goals
Tujuan atau goals dari game ini adalah untuk mencari siapa yang terlebih dahulu selesai dan siapa yang terakhir selesai mengambil objeknya, maksudnya adalah tujuan goal disini ada 2 yakni :
  
1.       jika tidak memilih option “Yang Terakhir Menang” atau langsung memilih level saja tanpa memilih option mana yang akan digunakan maka yang mengambil terakhir yang akan kalah
2.       jika memilih option terlebih dahulu dan memilih “Yang Terakhir Menang” maka yang mengambil objek terakhir adalah pemenangnya. 



-          Aturan permainan Matches One Piece
1.       Pilih level dengan cara klik menu “Start Level”, Kemudian pilih level sesuai yang kalian mau:
       “Easy” waktunya 30 detik
       “Medium” waktunya 25 detik
       “Hard” waktunya 20 detik
2.       Pilih option untuk mengatur siapa yang jalan terlebih dahulu dan siapa yang akan menang,dengan cara klik Option lalu pilih: 
       Pilih Komputer Pertama Jalan
       Pilih Yang Terakhir Menang
       Atau pilih kedua-duanya
Perintah ini digunakan untuk menentukan siapa yang jalan terlebih dahulu, apakah player atau AI, kemudian siapa yang akan menang bisa di tentukan dengan cara menceklisnya.

-          Tahap pembuatan
Pada tahap pembuatan permainan ini menggunakan game engine Strawberry Prolog, lalu masukkan source code pada Strawberry Prolog seperti berikut :

Syntaks dibawah ini digunakan untuk menampilkan gambar loading, background, icon, rules, dan backsound. Untuk gambar berekstensi .bmp dan untuk backsound berekstensi .Mp3.
?-
  G_Comp_First=0,
  G_Take_Last=0,
  G_level=0,
  G_scorePlayer=0,
  G_scoreAI=0,
  G_loading is bitmap_image("one piece/onepiece1.bmp",_),
  G_pilihan is bitmap_image("one piece/onepiece2.bmp",_),
  G_background is bitmap_image("one piece/onepiece8.bmp",_),
  G_icon is bitmap_image("one piece/lambang1.bmp","one piece/lambang1.bmp"),
  G_clean1 is bitmap_image("one piece/clean3.bmp",_),
  G_rules is bitmap_image("one piece/onepiece6.bmp",_),
  G_x is server("MediaPlayer.MediaPlayer.1"),


Syntaks dibawah digunakan untuk membuat button play pada saat kita berada di home.

%Button Play
play(press):-
close_window(G_splash),
  G_x.'Open'("one piece/one_piece_ost_2.wav"),
pen(0,0),
window(G_func,_,win_func(_),"One Piece",200,100,970,600),
update_window(_).


Syntaks dibawah digunakan untuk membuat tombol exit.

%Button Exit
exit(press):-
ask.
ask:-
     yes_no("Exit", "Are You Sure ?", ?),
     !, message("Yes", "Thank You",!),
     beep(G_bye),
     close_window(G_splash).
     end.
ask:-
     message("No", "Let's Play", !).

win_splash(close):-
execute("hilang.bat"),
close_window(G_splash).


Syntax dibawah digunakan untuk membuat pilihan menu yang terdiri atas Easy, Medium, Hard.

%Menu Start Level
menu_start(init):-
     menu(normal, _, _, menu_easy(_), "&Easy"),
     menu(normal, _, _, menu_Medium(_), "&Medium"),
     menu(normal, _, _, menu_Hard(_), "&Hard"),

G_timer is set_timer(_,1,time_func).

time_func(end):-
     G_waktu2:=G_waktu2-1,
     E:=printq(G_waktu2),
     font(10,20,"Calibri"),
     text_out(20,110,E),
    
     (G_waktu2=9->
     draw_bitmap(20,110,G_clean1,_,_),
     D:=printq(G_waktu2),
     font(10,20,"Calibri"),
     text_out(20,110,D)),

     G_waktu2=0->
     G_scoreAI := G_scoreAI + 1,
     G_scorePlayer := G_scorePlayer + 0,
     G_waktu2:=kill_timer(_,G_timer),
     beep(G_kalah),
     message("Warning!!","Out of Time",i),
     message("Oops","You Are Looser !!",s),
     draw_bitmap(20,110,G_tutup,_,_),
     draw_bitmap(20,110,G_clean1,_,_),
fail.

Syntax dibawah digunakan untuk menampilkan Background dan papan score pada saat bermain.

%Background dan papan score
win_func(paint):-
  draw_bitmap(0,0,G_background,_,_),
  font(8,20,"Algerian"),
  text_out(20, 20, print("Score")),
  text_out(20, 50, print("You : " + G_scorePlayer)),
  text_out(20, 80, print("Computer : " + G_scoreAI)),
  pos(Pos),
  el(Pos,El,N),
  for(I,1,El),
  X is 70+100*N,
  Y is 500-70*I, %530= posisi point, 45=jarak%
  draw_bitmap(X,Y,G_icon,_,_),
fail.


Syntax dibawah digunakan untuk deklarasi area mouse.

%Mouse
win_func(mouse_click(X,Y)):-
  X1 is (X- 60)//100,
  Y1 is (520-Y)//45,
  X1=<8,X>=40,
  pos(Pos),
  el(Pos,El,X1),
  El>Y1,
  replace(Pos2, Pos, Y1, X1),
  (Pos2=[0,0,0,0,0,0,0,0]->
    set(pos(Pos2)),
    end(0)
  else
    wait(0.5),
    play(Pos3, Pos2),
    (Pos3=[0,0,0,0,0,0,0,0]->
      end(1)),
    set(pos(Pos3))),
  update_window(_).

win_func(mouse_click(X,Y)):-
  beep.


Syntax dibawah merupakan inti dari AI pada permainan Matches One Piece ini.

%AI
play(Pos3, Pos2):-
  G_Take_Last=0,
  count_successes(not_trivial(Pos2))<G_level,
  find_max(Pos2,Max,N),
  New is (Max>1,count_successes(not_empty(Pos2)) mod 2=:=1 -> 1 else 0),
  replace(Pos3, Pos2, New, N).
play(Pos3, Pos2):-
  el(Pos2,A, N),
  R:=0,
  add_xor(R,Pos2,N),
  R<A,
  replace(Pos3, Pos2, R, N).
play(Pos3, Pos2):-
  find_max(Pos2,Max,N),
  Max2 is (Max>1, random(2)=:=0 ->
    Max - 2
  else
    Max - 1),
  replace(Pos3, Pos2, Max2, N).

not_empty(Pos):-
  el(Pos,A, _),
  A>0.
not_trivial(Pos):-
  el(Pos,A, _),
  A>1.

el([H|T],H,0).
el([H|T],El,N):-
  el(T,El,N1),
  N is N1+1.

replace([H|T],[_|T],H,0).
replace([H|T2],[H|T],El,N):-
  replace(T2,T,El,N1),
  N is N1+1.

find_max([H],H,0).
find_max([H|T],A, N) :-
  find_max(T,A1,N1),
  (A1<H->
    A is H,
    N is 0
  else
    A is A1,
    N is N1+1).

add_xor(_,[],_):-!.
add_xor(R,[H|T],0):- !,
  add_xor(R, T, -1).
add_xor(R,[H|T],N):-
  N1 is N- 1,
  R:=R xor H,
  add_xor(R, T, N1).


PENUTUP
Game Matches One Piece ini adalah sebuah game yang berbasis AI (Artificial Intelligence) atau kecerdasan buatan yang mana game ini membutuhkan proses pemikiran atau melatih berfikir dan mengambil keputusan yang tepat agar user bisa mengalahkan AI, karena di game ini di tambahkan program tingkat kesulitan sehingga AI dapat berfikir untuk mengambil keputusan yang tepat juga dalam melawan user untuk mengambil objek yang ada, yang tujuannya untuk mengalahkan user, sehingga game ini dapat melatih kita cara berfikir yang tepat dan melatih juga untuk ketepatan waktu, karena di game matches one piece ini di berikan waktu sesuai tingkatannya sehingga jika kita bisa memanage waktu agar tidak habis waktunya dan kita di latih berfikir cepat dan tanggap dalam menyelesaikan tantangannya, sehingga prinsip yang ada di game ini dan makna yang ada di game ini dapat di terapkan di kehidupan sehari-hari  dalam menyelesaikan masalah, mau itu projek yang di kasih jangka waktu atau deadline ataupun masalah yang lainnya.
Permainan ini dibuat menggunakan game engine Strawberry Prolog untuk melengkapi tugas akhir dari mata kuliah Pengantar Teknologi Game

Daftar pustaka
1.       http://riskawuni.blogspot.co.id/2011/11/game-matches-pada-strawberry-prolog.html (diakses pada tanggal 10 Juli 2017)
2.       http://www.kepobro.com/2016/11/modifikasi-game-matches-di-strawberry-prolog.html (diakses pada tanggal 10 Juli 2017)
3.       http://task-campus.blogspot.co.id/2012/05/algoritma-matches-strawberry-prolog.html (diakses pada tanggal 10 Juli 2017)



1 comment: