Sabtu, 13 Juni 2015

Atribut dan Listing kode pada game Take The Digimon (Matches)

Artikel Lanjutan dari: link

Source code:
            Karena listing kode pada laporan kali ini di ambil dari project (Game Matches) yang telah dikembangkan karena banyak sekali, maka saya hanya akan menjelaskan logika program pada bagian-bagian source kode tertentu.
Logika Program:
?-
  G_Comp_First=0,
  G_Take_Last=0,
  beep("sound\\programcomplate.wav"),
  pen(0,0),
  set(pos([1,2,3,4,5,6])),
Penjelasan:
Pada engine strawberry prolog yang mana dalam pembuatan/ pengembangan game menggunakan aplikasi tersebut., sebelum memulai sintax per-tama harus di tandai dengan “?-” tanpa tanda kutip dua. Selanjutnya memberikan/ mendeskripsikan G_Comp_First, dan G_Take_Last, dengan masing-masing nilai awal sama dengan 0. Kemudian memberikan fungsi sound beep (sound awal program berjalan) dan dilanjutkan memberi nilai pen x = 0 & y = 0.  Untuk:
set(pos([1,2,3,4,5,6])),
Ø  menjelaskan bagian set default dari susunan game matches itu sendiri, seperti


* Untuk akhir dari isi/ kondisi diakhiri dengan “titik” (.)
* Dan untuk pemisah isi1/ kodisi1 dengan isi2/ kondisi2 menggunakan “koma” (,)

%-----------------------memasukkan alamat gambar----------------
  G_SplashLoading is bitmap_image("image\\background.bmp",_),
  G_background is bitmap_image("image\\background2.bmp",_),
  G_Digimon is bitmap_image("image\\icon.bmp",_),
  G_opening is bitmap_image("image\\background1.bmp",_),

Penjelasan:
            Untuk memasukkan alamat gambar, dibutuhkan
G_deklarasi-nama is bitmap_image(“folder lokasi\\file.bmp”,
Pengaturan Window Timer
window(G_pertama,_,window_pertama(_),"Window Timer",(190,40,980,660)).

window_pertama(init):-
     G_batas := 0,
     G_pertama is set_timer(_,0.01,fungsi_timer).
    
fungsi_timer(end):-
     draw_bitmap(0,0,G_SplashLoading,_,_),
     font(11,25,"Lucida Console"),
     text_out(0,0,print("Loading: " + G_batas +"%")),
     G_batas := G_batas +1,
     (G_batas = 101 -> close_window(G_pertama),

Penjelasan:
Langkah awal yang dilakukan adalah mesetting window dengan perintah window(G_deklarasi-nama-window, _, window_nama(_), “Judul_window”,(x1,y1,x2,y2)).
Dimana pada keterangan:
x1 = koordinasi horizontal pada layar monitor
y1 = koordinasi vertical pada layar monitor
x2 = size panjang window (horizontal)
y2 = size lebar window (vertical)
            Dalam listing Window Timer menjelaskan koordinasi horizontal pada layar monitor terletak di 190, koordinasi vertical pada layar monitor terletak di 40, size panjang window (horizontal) adalah 980, dan yang terakhir size lebar window (vertical) adalah 660.
            Kemudian pada fungsi  window_pertama(init):- mendeklarasikan G_batas dengan nilai tetap adalah 0, dan G_pertama didefinisikan sebagai set_timer dengan satuan 0.01 detik.     

Selanjutnya untuk memberhentikan timer tsb, menggunakan fungsi_timer (end) :-  . Pada fungsi ini layar Window Timer akan memanggil drow_bitmap yang ada pada G_SplashScreen dan nantinya digunakan untuk sebuah background pada Window Timer. Kemudian terlampirkan sebuah teks dengan koordinasi X=0 dan Y=0, dimana teks tersebut akan di cetak pada bagian sebelah kiri atas Window Timer. Selanjutnya mendefinisikan G_batas := G_batas + 1, artinya waktu  terus bertambah dan waktu akan berhenti pada kondisi pendefinisian G_batas = 101 yang dilanjutkan setelah timer berhenti adalah close_window(G_pertama) atau pada layar Window Timer.

%----------------------Pengaturan Window Utama------------------
window(G_screen,_,win_kedua(_),"Digimon Matches",350,60,870,680)).
Penjelasan:
            Source code tersebut untuk men-setting “window utama” Kemudian langkah awal pada setiap pengaturan window adalah dengan mengetikkan window(G_deklarasi-nama-window,_,window_nama(_),“Judul_window”,(x1,y1,x2,y2)).
Dimana pada keterangan:
x1 = koordinasi horizontal pada layar monitor
y1 = koordinasi vertical pada layar monitor
x2 = size panjang window (horizontal)
y2 = size lebar window (vertical)
            Dan apabila pada setiap window ingin menambahkan image (background), bisa ditambahkan:
win_window-nama(paint) :-
     draw_bitmat(0,0,G_window-deklarasi-nama,_,_).
Untuk nilai x dan y harus sama dengan 0.
%---------------pembuatan button pada window utama--------------
win_kedua(init):-
     button(_,_,start(_),"Start",250,500,100,50),
     button(_,_,how(_),"How To Play",480,500,100,50),
     button(_,_,about(_),"About",250,580,100,50),
     button(_,_,exit(_),"Exit",480,580,100,50).

Penjelasan:
            Untuk membuat button, yang dibutuhkan adalah fungsi baru. Yaitu win_kedua(init) :-
Dengan bentuk umum pada button:
            button(_,_,deklarasi-nama(_),“nama-button”,(x1,y1,x2,y2))
Dimana pada keterangan:
x1 = koordinasi horizontal pada layar window
y1 = koordinasi vertical pada layar window
x2 = size panjang window (horizontal)
y2 = size lebar window (vertical)

Perintah pada masing-masing button:
1.    tampilan jika mengklik button start:
start(press):-
     beep("sound\\sound jalan.wav"),
     beep("sound\\GameStart_Mulai.wav"),
     execute("sound\\vb.exe"),   
     close_window(G_screen),
window_n(G_Main, _,win_func, "Take The Digimon (Don't take the last)", 80,80,620,400,_,_,rgb(255,255,255)).

Penjelasan:
          Fungsi ini menggunakan (press) yang berfungsi untuk bisa mengklik button tsb. Dengan perintah awal adalah perintah beep, yaitu menjalankan sound jalan.wav yang dilanjutkan dengan perintah beep lagi untuk menjalankan GameStart_Mulai.wav kemudian dilanjutkan memanggil vb.exe yang berada di folder sound. File tersebu berisi backsound dan dipanggil menggunakan perintah execute. Selanjutnya window dengan nama G_Screen akan di tutup menggunakan perintah close_window dan yang nantinya akan muncul nama window G_main. Window tersebut adalah window utama yang digunakan untuk bermain game ini.

2.    Tampilan jika mengklik button help:
how(press):-
     beep("sound\\sound jalan.wav"),
     shell_execute("How_to_play.html").


Penjelasan:
          Fungsi ini menggunakan (press) yang berfungsi untuk bisa mengklik button tsb. Awal dari fungsi ini memberi perintah beep yang digunakan untuk memanggil sound jalan.wav dan dilanjutkan menjalankan perintah shell_execute, perintah ini berfungsi untuk memanggil file .html yang nantinya akan membuka sebuah tab browser untuk keterangan isi dari How_to_play.html

3.    Tampilan jika mengklik button about:
about(press) :-
beep("sound\\sound jalan.wav"),  
message("Tentang Saya","
Game Prolog   : Take The Digimon
Kelas         : 3IA12
NPM       : 55412727
Modifier By   : Puji Satri Widodo
\nUNIVERSITAS GUNADARMA", i).
Penjelasan:
          Fungsi ini menggunakan (press) yang berfungsi untuk bisa mengklik button tsb. Awal dari fungsi ini memberikan perintah beep yang digunakan untuk memanggil sound jalan.wav dan yang selanjutkan memberi perintah message. Perintah ini digunakan untuk menginformasikan isi dari perintah message tsb.

4.    Tampilan jika mengklik button exit:
exit(press):-
     beep("sound\\goodbye.wav"),
     close_window(G_screen).

Penjelasan:

Fungsi ini menggunakan (press) yang berfungsi untuk bisa mengklik button tsb. Awal dari fungsi ini memberikan perintah beep yang digunakan untuk memanggil sound goodbye.wav dan selanjutnya window dengan nama G_Screen akan di tutup menggunakan perintah close_window.

Menu utama pada Window Main:
win_func(init) :-
menu( pop_up, _, _, menu_level(_), "&New Game"),
   menu( normal, _, _, menu_back(_), "&Main Menu"),
   menu( normal, _, _, menu_options(_), "&Options"),
   menu( normal, _, _, menu_help(_), "&Help"),
  menu( normal, _, _, menu_exit(_), "&Exit").

Penjelasan:
            Fungsi ini menggunakan (init). Terlihat ada perbedaan yang terdapat pada setiap bagian menu, yaitu pop_up dan normal. Untuk pop_up digunakan untuk membuat menu yang bercabang. Sedangkan normal untuk membuat menu standart tanpa cabang.

Notifikasi pemberitahuan menang atau kalah dalam game ini
end(Flag):-
     Flag=G_Take_Last->
     beep("sound\\lose.wav"),
     message("Maaf","Kamu Kalah kali ini!",i)
  else   
     beep("sound\\win.wav"),
    message("Selamat","Kamu Menang ^_^",i).

Penjelasan:
            Menandai fungsi dengan perintah end(Flag) yang selanjutnya memberikan mendeklarasikan nilai kepada Flag=G_Take_Last. Dimana Nilai awal G_Take_Last sudah di definisikan yaitu adalah 0 yang terletak pada awal program. Di fungsi ini menggunakan percabangan, dimana statement awal menginformasikan pesan kalah, dan sebaliknya jika nilai Flag tidak sama dengan G_Take_Last “Flag != 0” maka akan keluar sebuah pesan dan beep sound win.

Deklarasi Area Mouse Klik:
win_func(mouse_click(X,Y)):-
  beep("sound\\sound jalan.wav"),
  X1 is (X- 40)//100,
  Y1 is (320-Y)//45,
  X1=<5,X>=40,
  pos(Pos),
  el(Pos,El,X1),
  El>Y1,
  replace(Pos2, Pos, Y1, X1),

  (Pos2=[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]->
      end(1)),
    set(pos(Pos3))),
  update_window(_).
Penjelasan:
       Fungsi ini memanfaatkan koordinasi X dan Y, dimana terdapat pula X1 yang sudah didefinisikan dengan (X – 40)//100, serta Y1 adalah (320 – Y)//45,
   Fungsi tersebut mengidentifikasikan icon.bmp yang sudah di setting lokasi antara jarak pada setiap item di window:
   X is 50+ 100*N,
   Y is 330- 45*I,
   draw_bitmap(X,Y,G_Digimon,_,_), fail.



*NB:
Pada saat mengklik button start sebuah lagu pada program ini akan berjalan. Ketika saat ingin memberhentikan lagu tsb, maka digunakanlah sebuah file .bat yang berisi Taskkill /F /IM vb.exe dan dapat meletakkannya pada bagian fungsi  menu_back(press) :- dan  menu_exit(press) :- dengan menggunakan perintah execute.




OUTPUT:


 Tampilan pada Window Timer.
  

Tampilan pada Main Menu.

Tampilan Main menu pada saat mengklik button About.


Tampilan G_main pada saat mengklik button Start

Tampilan pesan (message) pada saat menang melawan AI.



Tampilan pesan (message) pada saat kalah melawan AI.

Tidak ada komentar:

Posting Komentar