WELCOME TO

Artikel
Home » » Membuat Game Sederhana dengan Strawberry Prolog

Membuat Game Sederhana dengan Strawberry Prolog

Written By Unknown on Tuesday, May 27, 2014 | 10:45:00 PM



“ Game Steal”



Penjelasan Konsep  Game

Kami akan membuat sebuah game dengan konsep game Matches yang memakai korek api pada game tersebut ,namun di game yang akan kami buat memakai ikon gedung bank.
Steal mempunyai arti mencuri, Konsep permainannya sama seperti game Matches bedanya jika di game Matches mengambil korek secara bergantian tetapi di game yang kami buat yaitu Steal ,mengambil gedung banknya. ibaratnya kita sebagai perampok yang ingin merampok bank-bank tersebut namun ada perampok lain yang beraksi yang merupakan AI dari game tersebut, aturan mainnya kita jangan sampai mencuri bank yang terakhir tersisa karena jika kita menjadi pencuri terakhir maka kita akan tertangkap polisi. dalam game steal ini  juga terdapat timer waktunya maka kita harus cepat-cepat mencuri bank-bank tersebut dengan strategi yang tepat agar tidak menjadi pencuri terakhir, dan jika waktu habis maka polisi datang dan dinyatakan game berakhir.




 Software  Yang  Digunakan 


Game Steal ini menggunakan bahasa pemrograman Prolog. Dan di sini kami menggunakan Strawberry Prolog sebagai program editor. Alasan kami menggunakan strawberry prolog ini karena menurut kami ini mudah untuk digunakan.



Cara Pembuatannya

Acuan untuk membuat game “Steal” adalah pembuatan papan permainannya. Di sini kami menggunakan gambar icon Gedung Bank yang berukuran 56x60 sebagai pengganti “korek api” pada Matches. Game Steal merupakan Permainan Mental yang dimainkan seorang pemain melawan AI komputer. Pada game ini akan menampilkan Bank-bank yang tersusun dari enam dari setiap levelnya. Game ini akan mengasah otak pemainnya. Pemain dipaksa untuk menerapkan strategi yang tepat untuk memenangkan game ini. Permainan ini hanya dapat dimainkan oleh satu pemain, sedangkan Komputer bertindak sebagai lawan dari pemain.
Untuk membuatnya terlebih dahulu install aplikasi Strawberry Prolog
jika sudah terinstall ,buka lah aplikasi tersebut





Jika sudah terbuka, klik file lalu pilih new,pilih Prolog File kemudian klik OK


kemudian akan muncul seperti ini :

 





Untuk kodingannya ,kami memodifikasi dan mengembangkan dari game yang sudah disediakan oleh Strawberry Prolog. disini kami mengambil tema dari game Matches yang sudah dijelaskan sebelumnya.
Untuk membuka gamenya, klik file kemudian open example

klik folder game


kemudian carilah game Matches, lalu klik Open

ini merupakan kodingan dari game Matches


kemudian modifikasilah dan kembangkan kodingannya sesuai dengan tema konsep yang sudah dijelaskan di atas. ini kodingan yang sudah dimodifikasi dan dikembangkan sesuai konsep :

LISTING PROGRAM
% Nama Kelompok : Fitra Darmawan (52411910)
                  Heri Purdiawan (53411333)
% Kelas         : 3IA13
% Judul Game    : STEAL

?-

 G_Comp_First=0,
 G_Take_Last=0,
 G_icon is bitmap_image("bank.bmp",_),
 G_background is bitmap_image("steal.bmp",_),
 G_Background2 is bitmap_image("malam.bmp",_),
%*********************************jendela output********************************

 window_n( G_layar1, _, win_func2, "STEAL (mencuri)", 200,200,800,400,_,_,rgb(1,1,1)),
     beep("fast.wav").
  win_func2(init):-
  menu( normal, _, _, menu_start(_), "&Mulai").

  menu_start(press) :-
 window_n( G_layar2, _, win_func, "STEAL GAME", 200,200,800,400,_,_,rgb(255,255,255)),beep("reload.wav"),
 close_window(G_layar1).
 %***********************************menu bar***********************************
 win_func(init):-
 G_Timer is set_timer(_,1,time_func),
 menu(pop_up,_,_,game(_),"Menu"),
 menu(pop_up,_,_,level(_),"Level"),
 menu(normal,_,_,about(_),"Nama Kelompok"),
 menu(normal,_,_,rule(_),"Aturan Main").

win_func2(paint):-

 draw_bitmap(0,0,G_background,_,_),
 pos(Pos),
 el(Pos,E1,N),
 for(I,1,E1).

win_func(paint):-
  draw_bitmap(0,0,G_Background2,_,_),
  pos(Pos),
  el(Pos,El,N),
  for(I,1,El),
%jarak antar icon
 X is 75+100*N,
 Y is 280-50*I,
%untuk bentuk item
 draw_bitmap(X,Y,G_icon,_,_),
 fail.


%*******************************pop-up dari Menu********************************
 game(init):-
 menu(normal,_,_,new_game(_),"Mulai"),
 menu(normal,_,_,exit(_),"Keluar").


%*******************************New Game********************************
      new_game(press):-
      message("MAU MAIN?","
      Silahkan Pilih Level", !).    


%*************************************Exit******************************************
     exit(press) :-
     beep,
     ( yes_no("Keluar","Anda ingin keluar??", !)),
     close_window(_).

%********************************Level***************************************
level(init):-
menu(normal,_,_,fun(_),"Mudah"),
menu(normal,_,_,normal(_),"Normal"),
menu(normal,_,_,hard(_),"Sulit").

fun(press) :-
     G_Waktu:=10,
  (G_Comp_First=0->
   set(pos([0,2,3,2,3,0]))
  else
   Pos=[0,2,3,2,3,0],
   N is 2*random(3),
   el(Pos,A,N),
   A2 is A - 1,
   replace(Pos2, Pos, A2, N),
   set(pos(Pos2))),
  update_window(_).

normal(press) :-
  G_Waktu:=10,
  (G_Comp_First=0->
    set(pos([2,3,4,3,2]))
  else
    Pos=[2,3,4,3,2],
    N is 2*random(3),
    el(Pos,A, N),
    A2 is A - 1,
    replace(Pos2, Pos, A2, N),
    set(pos(Pos2))),
  update_window(_).

hard(press) :-
  G_Waktu:=5,
  (G_Comp_First=0->
    set(pos([3,4,5,5,4,3]))
  else
    Pos=[3,4,5,5,4,3],
    N is 2*random(3),
    el(Pos,A, N),
    A2 is A - 1,
    replace(Pos2, Pos, A2, N),
    set(pos(Pos2))),
  update_window(_).

time_func(end):- %waktu
G_Waktu=0->
G_Waktu:=0
else
G_Waktu:=G_Waktu-1,
E:= printq(G_Waktu),
font(15,50,"DIGIFACEWIDE"),
text_out(380,20,E),
(G_Waktu=0->
message("Polisi","Anda Tertangkap!",i),beep("polisi.wav"),
write("OK"),
message("Coba Lagi","untuk bermain lagi pilih game baru atau pilih level",i),write("OK")).




%************************************Nama Kelompok*****************************************
about(press) :-
  message("Nama Kelompok", "Fitra Darmawan(52411910) , Heri Purdiawan(53411333)  3IA13 - Universitas Gunadarma -", i).



%************************************Aturan Main*****************************************
rule(press) :-
  message("Aturan Main","Jangan menjadi pencuri terakhir,jika anda mencuri terakhir anda akan tertangkap polisi !", i).


%*************************program inti************************************************

win_func(mouse_click(X,Y)):-
  X1 is (X- 50)//100,
  Y1 is (290-Y)//50,
  X1=<5,X>=40,
  pos(Pos),
  el(Pos,El,X1),
  El>Y1,
  replace(Pos2, Pos, Y1, X1),
  beep("pistol.wav"),
  (Pos2=[0,0,0,0,0,0]->
    set(pos(Pos2)),
    end(0)
  else
    wait(0.5),
    beep("ai.wav"),
    play(Pos3, Pos2),
    (Pos3=[0,0,0,0,0,0]->
      end(1)),
    set(pos(Pos3))),
  update_window(_).

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


play(Pos3, Pos2):-
 
  count_successes(not_trivial(Pos2))<2,
  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).


%************************************kondisi menang-kalah**********************************
end(Flag):-
  Flag=G_Take_Last->
    message("Polisi","Anda Tertangkap!",i),beep("polisi.wav")
    else
    message("Selamat!","Anda Menang",!),beep("fast.wav").


Kemudian save lah dengan nama Steal.
jika sudah disave lalu jalankanlah game tersebut dengan menekan F5 atau mengklik seperti gambar ini :

Jika sudah di run maka game Steal sudah siap dimainkan :



Penjelasan Kodingannya

     G_icon is bitmap_image("bank.bmp",_),
                Untuk Mengganti Icon di game, game steal memakai gambar Gedung Bank dengan nama bank berformat Bitmap atau bmp. Gambar bmpnya harus satu lokasi dengan project gamenya.
      G_background is bitmap_image("steal.bmp",_),
                Untuk membuat sflash scrren di game, game steal memakai gambar Perampok berpistol hari dengan nama stealberformat Bitmap atau bmp. Gambar bmpnya harus satu lokasi dengan project gamenya. Ini adalah sflash screen awal.
      G_Background2 is bitmap_image("malam.bmp",_),
                Untuk Mengganti IBackground di game, game steal memakai gambar Gedung dimalam hari dengan nama malam berformat Bitmap atau bmp. Gambar bmpnya harus satu lokasi dengan project gamenya. Ini adalah background utama saat game dimainkan.

window_n( G_layar1, _, win_func2, "STEAL (mencuri)", 200,200,800,400,_,_,rgb(1,1,1)),
                Untuk menampilkan  sflash screen dengan nama Steal (mencuri).
beep("fast.wav").
                Untuk memutar sebuah lagu apabila perintah dilakukan.
                fast merupakan nama lagu yang akan diputar yang berformat wav,lagu tersebut               harus satu lokasi dengan project gamennya
win_func2(paint):-
 draw_bitmap(0,0,G_background,_,_),
                Untuk menampilkan gambar yang kita masukan di backgound di layar1 yang merupakan latar sflash screen awal.
win_func(paint):-
  draw_bitmap(0,0,G_Background2,_,_),
                Untuk menampilkan gambar yang kita masukan di backgound 2 di layar2 yang merupakan latar utama saat game dimainkan.

fun(press) :-
G_Waktu:=10,
  (G_Comp_First=0->
   set(pos([0,2,3,2,3,0]))
  else
   Pos=[0,2,3,2,3,0],
   N is 2*random(3),
   el(Pos,A,N),
   A2 is A - 1,
   replace(Pos2, Pos, A2, N),
  set(pos(Pos2))),
 update_window(_).
                Ini merupakan kodingan level mudah, waktu pada level mudah diberikan 10 detik.
                posisi banknya  terdapat 2 bank,3 bank, 2 bank, 3 bank, maka total bank pada l   evel mudah adalah 10 bank. Untuk penjelasannya kodingan level selanjutnya sama saja ,hanya diubah dan disesuiakan dengan tingkat kesulitan levelnya.



Petunjuk Bermain
1. Pada sflash screen awal klik mulai untuk memulai permainan :


2. untuk mulai pilih menu :



jika memilih menu lalu mulai akan muncul tampillan seperti berikut:


kesimpulannya adalah jika ingin mulai bermain kita harus memilih Level terlebih dahulu.


3. untuk cara bermain, kita pilih Level  untuk memulai permainan dan memilih tingkat kesulitan seperti tampilan berikut :






4. jika memilih level Mudah ,maka tampilannya seperti ini :



Keterangan kesulitannya terdapat 10 Bank yang harus dicuri dalam waktu 10 detik sebelum polisi datang. jangan sampai menjadi pencuri terakhir jika tidak ingin tertangkap polisi.


5. Jika Memilil level Normal ,maka tampilannya seperti berikut :



Keterangan kesulitannya terdapat 14 Bank yang harus dicuri dalam waktu 10 detik sebelum polisi datang. jangan sampai menjadi pencuri terakhir jika tidak ingin tertangkap polisi.

6. Jika Memilil level  Sulit ,maka tampilannya seperti berikut :


Keterangan kesulitannya terdapat 24 Bank yang harus dicuri dalam waktu 5 detik sebelum polisi datang. jangan sampai menjadi pencuri terakhir jika tidak ingin tertangkap polisi.

Demikianlah game yang kami buat, semoga bermanfaat bagi yang membacanya. Terima Kasih.


Nama Kelompok : Fitra Darmawan (52411910)
                                Heri Purdiawan  (53411333)

Kelas                    : 3IA13
 


Share this article :

Creatif By : Unknown

Terimah Kasih telah membaca artikel Membuat Game Sederhana dengan Strawberry Prolog Yang ditulis oleh Unknown Pada hari Tuesday, May 27, 2014. Jika anda ingin sebarluaskan artikel ini, mohon sertakan sumber link asli. Kritik dan saran dapat anda sampaikan melalui kotak komentar. Trimakasih

HOME

Comments
0 Comments

0 komentar:

Post a Comment

 
Support : HR Pengetahuan
Copyright © 2013. Pengetahuan - All Rights Reserved
Blog by Heri Purdiawan
Powered by Blogger