Jumat, 15 November 2013

Timer pada Strawberry Prolog

Saya akan membahas mengenai timer dan mengubah font face pada Strawberry Prolog.


?-
window(_,_,win_utama(_),"Timer 1",300,100,300,300).

Perintah diatas digunakan untuk membuat sebuah jendela (windows) dengan ukuran 300x300 dan mempunyai title Timer 1. Nama fungsi dari jendela Timer 1 ini adalah win_utama. 


win_utama(init) :-
  menu( normal, _, _, menu_mulai(_), "&New Game"),
  menu( normal, _, _, menu_exit(_), "&Exit").

Dalam jendela Timer 1 terdapat menu bar yang terdiri dari menu dengan nama New Game (nama fungsinya adalah menu_mulai) dan Exit(nama fungsinya adalah menu_mulai).


menu_exit(press) :-
  yes_no("Confirm", "Are you sure to exit?", ?),
  close_window(_).
menu_mulai(press):-
  close_window(_),   
  window(_,_,win_func(_),"Timer 2",300,100,300,300).

Perintah diatas adalah perintah yang dimasukkan ke dalam fungsi menu_exit dan menu_mulai. Jika menu Exit ditekan maka akan ada pertanyaan konfirmasi sebelum keluar dari program. Selanjutnya jika menu New Game ditekan maka jendela yang sedang aktif akan ditutup dan jendela Timer 2 yang berukuran 300x300 akan muncul. Fungsi untuk jendela Timer 2 adalah win_func.


win_func(init) :-
  menu( pop_up, _, _, menu_start(_), "&Start"),
  menu( normal, _, _, menu_exit(_), "&Exit").
menu_start(init) :-
  menu( normal, _, _, menu_easy(_), "&Mudah"),
  menu( normal, _, _, menu_hard(_), "&Sulit").

Dalam jendela Timer 2 terdapat menu bar yang berisi menu dengan nama Start dan Exit. Menu Start bersifat pop up, yaitu mempunyai sub menu. Sub menu dari menu Start adalah menu Mudah (nama fungsinya adalah  menu_easy) dan Sulit (nama fungsinya adalah menu_hard).


menu_easy(press) :-
  message("Warning","Kamu memiliki waktu 12 detik sebelum BOM meledak",i),
  update_window(_),
  G_M := 13,
  G_waktu is set_timer(_,1,time_func).
menu_hard(press) :-
  message("Warning","Kamu memiliki waktu 5 detik sebelum BOM meledak",i),
  update_window(_),
  G_M := 6,
  G_waktu is set_timer(_,1,time_func).

Dalam fungsi menu_easy dan menu_hard mempunyai proses dan tujuan yang sama. Jika menu Mudah ataupun Sulit ditekan, maka akan muncul dialog message yang bertuliskan waktu yang akan diproses. Untuk menu Mudah mempunyai waktu 12 detik dan menu Sulit mempunyai waktu 5 detik. Setelah dialog message muncul dan tombol OK ditekan maka proses akan menuju fungsi time_func untuk menjalankan waktu.


time_func(end):-
  (G_M=:=10 ->
G_M:=10,
pen(5,rgb(255,255,255)),
rect(150,50,191,150)),
  (G_M=:=1 ->
  kill_timer(_,G_waktu),
  message("WARNING","WAKTU HABIS !!! \n  Game Over !!!",!),
  close_window(_)
  else
  G_M <>= G_M-1),
  T is printq(G_M),
  font(30,100,"Times New Roman"),
  text_out(120,50,T),
  beep.

Fungsi time_func ini berguna untuk menjalankan timer. Perintah pada baris ke 2 sampai dengan baris ke 4 berguna untuk memuat persegi panjang berlatar belakang warna putih saat detik 10 menuju detik ke 9. Perintah pada baris ke 6 sampai dengan baris ke 8 berarti jika detik menunjukkan angka 1, maka waktu akan berhenti dan muncul dialog message. Setelah tombol OK pada dialog message yang muncul ditekan makan jendela akan tertutup. Jenis tulisan pada timer adalah Times New Roman dengan ukuran 100. Tulisan atau teks detik muncul pada koordinat 120, 50.

Contoh output program :









0 comments:

Posting Komentar