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