Good Luck Have Fun

Sunday 14 June 2015

Pembuatan Game Engine

Game Engine Menggunakan Java

            Seperti sebelumnya game engine dapat di buat di berbagai media, kali ini saya membahas mengenai eclipse dan tentunya menggunakan bahasa pemograman java. awalnya pembuatan game engine menggunakan bahasa java pada eclipse agar lebih gampang di buat menjadi beberapa bagian,di anataranya jendela utama mulai dari ukuran window game sampai ke menu utama nantinya yang akan di buat untuk game di gunakan berbagai macam fungsi yang nantinya fungsi tersebut di rendering antar frame dan lainnya sehingga dalam menu utama nantinya perancang dengan hanya tinggal memanggil fungsi fungsi tersebut. selain itu dalam pembuatan gamenya di butuhkan library dan unity sebagai game console yang di gunakan untuk interaksi ke dalam game tersebut.
            Pada tutorial yang di upload oleh Ulixava, ia menggunakan berbagai type data, library dan unity yang berfungsi di antaranya melaraskan variabel,shoting dan level. Dalam penggunaan layout dan background yang di gunakan pada game tersebut menggunakan frame sendiri dan nantinya frame frame untuk background di render antar frame penyusun latar di render sehingga saat pemanggilan fungsinya menjadi satu jendela permainan.
            Karena di game tersebut ingin melihatkan 3dnya maka ia menggunakan fungsi rotate, animation sehingga game tersebut terlihat nyata dan tentunya user menjadi tertarik dalam memainkan, selain itu dalam penggunaan fungsi pixel yang cukup detail menjadikan game tersebut lebih halus. Fungsi fungsi yang di gunakan di antaranya untuk terlihat 3d yaitu floorposition, celing position, rotationspeed, rotation, time, pixel dan color yang nantinya fungsi tersebut akan di panggil dan di render dalam satu window.
            Sehingga dalam pembuatan game engine yang ia buat sudah ada karakteristik dari game engine di mana ia menampilan 3d dan fungsi fungsi lainnya.

Vidio sumber:Ulixava "How To Make 3d Games in Java ?" 2011

Game Engine Menggunakan Strawberry Prolog

            Prolog adalah bahasa pemrograman logika atau disebut juga bahasa non prosedural.  Prolog disebut sebagai object oriented language atau declarative language. Dalam prolog tidak terdapat prosedur, tetapi hanya tampilan data-data object (fakta) yang akan diolah dengan relasi antar object yang membentuk suatu aturan. Aturan-aturan ini disebut heuristik.
            Strawberry Prolog adalah dialek dari bahasa pemrograman Prolog. Sintaksnya sangat dekat dengan ISO-Prolog tetapi memiliki banyak ekstensi yang bukan bagian dari standar. pada dasarnya bahasa pemograman prolog di sebut juga bahasa turunan.
            Bahasa prolog  terstruktur antar satu dengan lainnya di mana pemanggilan sintak dapat di pengaruhi oleh pemanggilan dari variable yang tersedia selain itu pada strawberry prolog di gunakan kordinate di mana masing masing gabungan koridnate dapat di bentuk object, selain itu pada strawberry prolog dapat di berikan variable dan konstanta ataupun pict, sound yang nantinya di panggil dari perogram yang terstruktur tersebut


/*===========================================================*/
* Judul Game                          : Skripsi's
* Bahasa Pemrograman           : Strawberry Prolog
* Modifier                               : Dwi Fiqri Qurniawan
* Kelas                                    : 3IA12
* =============================================================*/
?-
  G_Comp_First=0,%pendeklarasian objeck game
  G_waktu:=10,
  G_Take_Last=0,
  G_level=0,
%-------------------memasukkan alamat gambar--------------------------------------
  G_Ikon is bitmap_image("image/poin.bmp",_),
  G_Latar is bitmap_image("image/bg.bmp",_),
  G_help is bitmap_image("image/Help.bmp",_),
  G_kalah is bitmap_image("image/lose.bmp",_),
  G_menang is bitmap_image("image/win.bmp",_),
  G_bm is bitmap_image("image/AOS.bmp",_),
  G_gmbr is bitmap_image("image/bs.bmp",_),
  G_home is bitmap_image("image/bs.bmp",_),
%=======================================================================================

%--------------------------------Timer Splash Screen Window1----------------------------
window(G_Splash, _, windowS(_),"Skripsi's",350,50,820,625).
windowS(init):-  % set timer

            G_batas := 0,
            G_waktu is set_timer(_,0.1,fungsi_timer).


windowS(paint):- %memberi Background
animate( _, _, fail(_), "video/SEARCH.avi", 350, 520),
            draw_bitmap(0,0,G_gmbr,_,_).

fungsi_timer(end):-  %fungsi timer

            text_out(350,500,print("Please wait.." + G_batas)),
            G_batas := G_batas +1,
            (G_batas >= 101 -> close_window(G_Splash),
beep("sound//Screen.wav"),



window(G_screen,_,win_utama(_),"Skripsi's",350,50,820,625)).

%----------Pembuatan Tombol START & EXIT pada window2 home utama-----------------------

win_utama(paint):-
                        draw_bitmap(0,0,G_home,_,_).


win_utama(init):-

            message("Rules","Mahasiswa Alias Dwi Fiqri Qurniawan Mengerjakan Skripsinya Terlebih Dahulu.
Boleh Mengambil Berapapun dengan Syarat Hanya Mengikuti Satu Kolom.
Jika Ia Mengambil Skripsi Terakhir Maka Dwi Fiqri Qurniawan Akan di Nyatakan Kalah dan Harus Melakukan Revisi.

Ayo Bro, KERJAKAN SKRIPSIMU !!!",i),
                        button(_,_,start(_),"Start Game",350,480,90,45),
                        button(_,_,exit(_),"Exit",350,530,90,45).

%======================================================================================

%-------------Fungsi Tombol START & EXIT pada window2 home utama-----------------------
exit(press) :-
  close_window(G_screen).
start(press):-
            beep("sound//click.wav"),
            close_window(G_screen),
            execute("sound//play.exe"),
            update_window(_),
            pen(0,0),  
            menu_new(_),
            window_n( G_Main, _, win_func, "Skripsi's", 350,50,700,625,_,_,rgb(255,255,255)),
            beep.
%======================================================================================

%--------------Menambahnkan menu pada menubar window 3 awal mulai game-----------------

win_func(init) :- % menambah opsi game
  menu( normal, _, _, menu_new(_), "&Play Again"),
  menu( normal, _, _, menu_options(_), "&Mode"),
            menu( pop_up, _, _, level(_), "&Level"),
  menu( normal, _, _, menu_tentang(_), "&About"),
  menu( normal, _, _, menu_credit(_), "&Credit"),
  menu( normal, _, _, menu_exit(_), "&Exit").

menu_credit(press):-
shell_execute("Credit.html").

level(init):-
menu( normal, _, _, level1(_), "&Easy"),
menu( normal, _, _, level2(_), "&Medium"),
menu( normal, _, _, level3(_), "&Unfair").

level1(press) :-
message("Level","Anda Memilih Level Easy",i),
  G_level:=10,
    update_window(_).

level2(press) :-
message("Level","Anda Memilih Level Medium",i),
  G_level:=5,
    update_window(_).

level3(press) :-
message("Level","Anda Memilih Level Unfair",i),
  G_level:=2,
    update_window(_).

%======================================================================================
win_func(close):-
            execute("sound\\gg.bat"),
            close_window(G_Main).

%-----------------------Memanggil latar dan icon--------------------------------------
win_func(paint):- %memanggil latar dan icon
draw_bitmap(0,0,G_Latar,_,300),
    pos(Pos),
  el(Pos,El,N),
  for(I,1,El),
  draw_bitmap(20+75*N,50+30*(I-1),G_Ikon,_,_),
    fail.


 %-----------------------Deklarasi Area Mouse Klik-------------------------------------
win_func(mouse_click(X,Y)):- %letak icon yg di klik
  X1 is (X-20)//75,
  Y1 is (Y-50)//30,
  X1=<9,X>=10,
  pos(Pos),
  el(Pos,El,X1),
  El>Y1,
  replace(Pos2, Pos, Y1, X1),
 beep("Sound//click.wav"),
  (Pos2=[0,0,0,0,0,0,0,0,0]->
    set(pos(Pos2)),
    end(0)


  else

    wait(0.02),
beep,
    play(Pos3, Pos2),
    (Pos3=[0,0,0,0,0,0,0,0,0]->
      end(1)),
    set(pos(Pos3))),
  update_window(_).

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

%------------------AI dari Game ini ---------------------------------------------------
play(Pos3, Pos2):- %koding AI
  G_Take_Last=0,
  count_successes(not_trivial(Pos2))<G_level,%diubah jadi angka satu untuk mengalahkan AI
  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).
%=====================================================================================

%------------- Notif Pemberitahuan Saat Menang atau Kalah ----------------------------
end(Flag):- %akhir permainan
  Flag=G_Take_Last->
            draw_bitmap(0,0,G_bm,_,_),
            beep("Sound//Alert.wav"),
            wait(0.1),
            draw_bitmap(0,0,G_kalah,_,_),
            beep("Sound//lose.wav"),
    message("Dosen say : ","Kamu Ngulang dan Revisi lagi ya",!)

  else
draw_bitmap(0,0,G_bm,_,_),
beep("Sound//Woho.wav"),
 wait(0.1),
draw_bitmap(0,0,G_menang,_,_),
beep("Sound//win.wav"),
    message("Mahasiswa say :","Akhirnya ane wisuda gan :) !!!",i),
update_window(_).
%======================================================================================

%----------------------- ketika menekan menu new game ---------------------------------
menu_new(press) :- %permainan baru

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

%----------------------- ketika menekan menu tentang ----------------------------------
menu_tentang(press) :-
draw_bitmap(0,0,G_help,_,_).
%----------------------- ketika menekan menu options ----------------------------------
menu_options(press) :-

  window_n( _, _, options_func, "Options", 200, 100, 300, 200,?,_,_).
options_func(init) :-
  check_box( A, _, check_func, "Dosen Melakukan Revisi Pertama", 20, 20, 200, 20),
  G_A:=A,
  set_check_box_value(G_A,G_Comp_First),
  check_box( B, _, check_func, "Ambil Skripsi Terakhir Menang", 20, 60, 200, 20),
  G_B:=B,
  set_check_box_value(G_B,G_Take_Last),
  button( _, _, ok_func(_), "OK", 20, 120, 80, 30),
  button( _, _, cancel_func(_), "Cancel", 120, 120, 80, 30).

%------------------Cheklist pada game AI mulai pertama---------------------------------
ok_func(press) :-
  G_Comp_First:=get_check_box_value(G_A),
  G_Take_Last:=get_check_box_value(G_B),
  (G_Take_Last=1->
    set_text("Matches (Take the last)",G_Main)
  else
    set_text("Matches (Don't take the last)",G_Main)),
  close_window(parent(_)).

cancel_func(press) :-
  close_window(parent(_)).

check_func(press) :-
  set_check_box_value(_,1-get_check_box_value(_)).

menu_exit(press) :-
  close_window(_).



No comments:

Post a Comment