Pada tutorial kali
ini akan dibahas mengenai bagaimana cara membuat menu pop up dalam aplikasi
strawberry prolog. Menu pop up sendiri merupakan menu yang akan tampil secara
otomatis atau apabila kita menggerakan kursor mouse pada area tertentu biasanya
berisi tentang informasi suatu objek/ icon/ menu.
Tutorial ini akan
membuat menu dengan 3 pilihan yaitu :
menu_pilihan, menu_level, dan menu_tentang. Dimana pada menu_pilihan ketika
kita klik akan muncul submenu yaitu mulai dan exit, sedangkan pada menu_level
akan muncul submenu amatiran, mudah, sudah, pada menu susah muncul submenu
susah biasa, susah banget dan susah sekali. Pada menu_tentang akan muncul kotak
dialog.
LISTING PROGRAM & LOGIKA
PROGRAM
?-
window(_,_,win_func(),"Menu",50,50,500,500).
win_func(init):-
menu( pop_up, _, _,
menu_pilihan(_),"&Pilihan"),
menu( pop_up, G_Menu, _, menu_level(_),
"&Level"),
menu( normal, _, _, menu_tentang(_), "&About").
menu_pilihan(init):-
menu(normal,_,_,mulai_game(_),"&Mulai"),
menu(normal,_,_,menu_exit(_),"&Keluar").
mulai_game(press):-
%var yang digunakan
G_XU :=0, G_YU :=0,
window(G_key,_,win_ascii(_),"karakter",100,50,500,500).
%kanan
win_ascii(key_down(39,_)):-
pen(16,rgb(255,255,255)),
rect(40+G_XU,40+G_YU,70+G_XU,70+G_YU),
(G_XU=420 -> G_XU :=G_XU
else G_XU := G_XU+60),
pen(16,rgb(191,0,255)),
rect(40+G_XU,40+G_YU,70+G_XU,70+G_YU).
%kiri
win_ascii(key_down(37,_)):-
pen(16,rgb(255,255,255)),
rect(40+G_XU,40+G_YU,70+G_XU,70+G_YU),
(G_XU=0 -> G_XU :=G_XU
else G_XU := G_XU-60),
pen(16,rgb(255,215,0)),
rect(40+G_XU,40+G_YU,70+G_XU,70+G_YU).
menu_exit(press):-
close_window(_).
win_func(close) :-
not(
yes_no("","Anda sudah lelah?", ?)).
menu_level(init):-
menu(normal,_,_,mudah(_),"&Amatiran"),
menu(normal,_,_,normal(_),"&Normal"),
menu(pop_up,G_menu,_,menu_susah(_),"&Susah").
menu_susah(init):-
menu(normal,_,_,biasa(_),"&susah
biasa"),
menu(normal,_,_,banget(_),"&susah
banget"),
menu(normal,_,_,sekali(_),"&susah
sekali").
menu_tentang(press):-
message("About"," Masyeni 55413344 ",i).
|
§ ?-
Perintah yang digunakan
untuk setiap awal dari program untuk menjadi intrepeteur untuk merespon bagian
koding selanjutnya. Tanpa symbol ini, PASTI program yang sobat buat akan error
ketika di RUN.
§ window(_,_,win_func(),"Menu",50,50,500,500).
window disini digunakan untuk pembuatan kotak tampilan dan ”Menu” adalah
untuk pembuatan nama pada kotak tampilan dan 100,50,500,500 adalah untuk penentuan
ukuran kotak tampilan dengan menggunakan fungsi win_func.
§ win_func(init):-
menu( pop_up, _, _,
menu_pilihan(_),"&Pilihan"),
menu( pop_up, G_Menu, _, menu_level(_),
"&Level"),
menu( normal, _, _, menu_tentang(_),
"&About").
Win_func merupakan fungsi dari menu, dimana
win_func tersebut merupakan yang utama. Didalam fungsi ini dibuat 2 menu pop up
dan 1 menu normal. Di dalam menu pop up dengan nama Pilihan diberikan fungsi
dengan nama menu_pilihan, sedangkan pada menu pop up Level diberi fungsi dengan
nama menu_level yang nantinya akan diuraikan lagi untuk isi dari menu –menu
tersebut. Terkahir menu about diberi fungsi dengan nama menu_tentang.
§
menu_pilihan(init):-
menu(normal,_,_,mulai_game(_),"&Mulai"),
menu(normal,_,_,menu_exit(_),"&Keluar").
Menu_pilihan merupakan fungsi yang
dipanggil dari menu pop up Pilihan, di dalam fungsi ini dibuat 2 menu dengan
nama Mulai yang diberi fungsi mulai_game, dan Keluar yang diberi fngsi
menu_exit yang nantinya masing-masing fungsi akan diuraikan lagi.
§
mulai_game(press):-
%var yang digunakan
G_XU :=0, G_YU :=0,
window(G_key,_,win_ascii(_),"karakter",100,50,500,500).
Mulai_game disini merupakan pemanggilan
fungsi dari menu pop up tadi yaitu Mulai. Fugsi ini jika di klik akan masuk ke
window baru, dengan memanggil win_ascii dengan nama canvas “karakter” yang
diberi ukuran 100,50,500,500.
§
%kanan
win_ascii(key_down(39,_)):-
pen(16,rgb(255,255,255)),
rect(40+G_XU,40+G_YU,70+G_XU,70+G_YU),
(G_XU=420 -> G_XU
:=G_XU
else G_XU := G_XU+60),
pen(16,rgb(191,0,255)),
rect(40+G_XU,40+G_YU,70+G_XU,70+G_YU).
%Kanan disini merupakan
komentar atau untuk membuat keterangan, win_ascii disini merupakan kode untuk
membuat ascii arah kanan. Jadi disini saya menggabungkan tugas pertemuan ke 4
ini dengan pertemuan ke 3 yang disinggung mengenai ascii. Ketika mengklik menu
mulai, akan masuk pada window baru yaitu window ascii dimana dalam window ini
dapat menggerakan arah kanan dan kiri dan akan muncul kotak warna yang berbeda.
§
menu_exit(press):-
close_window(_).
win_func(close) :-
not( yes_no("","Anda sudah
lelah?", ?)).
Menu_exit merupakan fungsi yang di panggil
dari menu pop sebelumnya dengan nama Keluar, jadi ketika mengklik menu Keluar
akan muncul kotak dialog dengan peringatan “Anda sudah lelah?” peringatan tersebut muncul dengan memakai
fungsi utama yaitu win_func(close).
§
menu_level(init):-
menu(normal,_,_,mudah(_),"&Amatiran"),
menu(normal,_,_,normal(_),"&Normal"),
menu(pop_up,G_menu,_,menu_susah(_),"&Susah").
Menu_level merupakan fungsi yang dipanggil
dari menu pop up Level, dalam fungsi ini dibuatkan lagi menu atau submenu dari
Level, yang terdiri dari Amatiran, Normal, dan Susah, dimana pada submenu Susah
akan dibuat lagi menu pop up dengan menambahkan fungsi menu_susah yang akan
diuraikan dibawah ini.
§
menu_susah(init):-
menu(normal,_,_,biasa(_),"&susah
biasa"),
menu(normal,_,_,banget(_),"&susah
banget"),
menu(normal,_,_,sekali(_),"&susah
sekali").
Menu_susah merupakan fungsi yang di panggil
dari submenu Susah, karena submenu ini akan membuat 3 menu pop up lagi, yaitu
susah biasa, susah banget dan susah sekali. Jadi ketika klik susah akan muncul
submenu lagi.
§
menu_tentang(press):-
message("About"," Masyeni
55413344 ",i).
Menu_tentang ini merupakan pemanggilan
fungsi dari menu About, dimana ketika mengklik About akan muncul pesan dengan
kalimat “Masyeni 55413344” dan “About” merupakan nama pada kotak dialog/pesan
tersebut.
OUTPUT
pada menu
mulai, akan muncul window baru dengan nama karakter yang ketika kita menekan
arah kanan akan muncul kotak ungu dan kiri kotak kuning.
Pada menu Keluar, akan muncul kotak pesan :
Pada menu Level akan muncul menu pop up :
Pada submenu
Susah akan muncul menu pop up :
Pada menu about, akan muncul kotak pesan :