membuat game sederhana menggunkan strawberry prolog....

oke.. kali ini saya akan mencoba membuat game sederhana dengan menggunakan strawberry prolog. Game yang dibuat kali ini adalah curve dart. Curve dart adalah game pengembangan dari game Fire yang telah ada di Strawberry Prolog. Dalam permainan sebenarnya, game Fire terdiri dari peluru kecil dan tiga buah bola target. Game fire dimainkan dengan mengeklik pada window game tersebut . Curve dart memiliki beberapa perbedaan dari game fire yaitu di dalam game windownya sudah terdapat gambar background, button dan menu



Tampilan awal dari game ini adalah sebagai berikut..
Tampilan saat button play ditekan..

Didalam game ini terdapat beberapa rules dalam bermain. Rules tersebut antara lain sebagai berikut.
1. Klik menu->start
2. Tembak target dengan cara klik mouse pada window, kekuatan tembakan ditentukan
     dengan jarak antara mouse anda dengan canon pada game
3. Tembak target sebelum waktu giliran anda habis
4. Jika waktu habis maka ai akan mengambil giliran untuk menembak
5. Pemenangnya adalah yang berhasil menembak target pertama kali

Saat anda bisa memenangkan game ini maka akan keluar tampilan seperti dibawah ini.

Tetapi saat anda kalah akan keluar tampilan seperti berikut ini.
Berikut ini merupakan kodingan dari game yang telah dibuat diatas.

?-
G_Background is bitmap_image("dua.bmp",_),
G_canon is bitmap_image("tiga.bmp",_),
G_tembok is bitmap_image("tembok.bmp",_),
G_timeblock is bitmap_image("timeblock.bmp",_),
G_ai is bitmap_image("urutan.bmp",_),
G_your is bitmap_image("urutan2.bmp",_),
G_target is bitmap_image("target2.bmp",_),
retractall(p(_,_)),
window(G_layar1,_,winfunc(_),"game",300,50,700,500).

%background
winfunc(paint) :-
draw_bitmap(0,0,G_Background,_,_).

%button
winfunc(init) :-
button(_,_,button_start(_),"play", 450,200,100,30),
button(_,_,buton_exit(_),"exit", 450,250,100,30).

buton_exit(press):-
close_window(G_layar1).

%menu
button_start(press) :-
close_window(G_layar1),
window(G_layar2,_, win_func2(_),"Curve Dart",200,100,850,500),
menu(pop_up,_,_,menu_game(_),"&Menu"),
menu(right,_,_,help_menu(_),"&help").


help_menu(press):-
message("Rules","Cara bermain:
1. Klik menu->start
2. Tembak target dengan cara klik mouse pada window, kekuatan tembakan ditentukan
   dengan jarak antara mouse anda dengan canon pada game
3. Tembak target sebelum waktu giliran anda habis
4. Jika waktu habis maka ai akan mengambil giliran untuk menembak
5. Pemenangnya adalah yang berhasil menembak target pertama kali
",!).

menu_game(init):-
menu(normal,_,_,menu_start(_),"&start"),
menu(normal,_,_,menu_exit(_),"&exit").

menu_start(press):-
G_time:=21,
make_goals,
update_window(_).

menu_exit(press):-
close_window(G_layar2).

win_func2(init):-
G_timer is set_timer(_,1,time_func).

win_func2(close):-  %----> isi menu keluar
 ask.
 ask:-
 yes_no( "Quit","Exit game?", ?),
 !,message("", "See ya",!),
 end.
 ask:-
 message("", "Keep playing", s).

%-------------------------------------------------------------------------------


make_goals :-
  set(bulets(0)),
  chronometer(_),
  pen(7,0),
  brush(rgb(255,0,0)),
  draw_bitmap(780,400,G_target,_,_).

win_func2(paint):-
make_goals,
  draw_bitmap(0,290,G_canon,_,_),
  pen(1,0),
  draw_bitmap(370,230,G_tembok,_,_),
  pen(3, 0),
  brush(rgb(0, 0, 0)),
  brush(rgb(255,0,0)),
  p(X,Y),
  X1 is X+20,
  Y1 is Y+20,
  ellipse(X, Y, X1, Y1),
  fail.

win_func2(mouse_click(X,Y)):-
  bulets(B),
  B1 is B+1,
  set(bulets(B1)),
  pen(0, 0),
  Y1 is 350 - Y,
  set(pos(80,300, X, Y1)),
  go.

go:-
  for(I, 1, 1000),
  wait(0.01),
  pos(X,Y, Xs,Ys),
  X1 is X+10,
  Y1 is Y- 10,
  Xn is X+Xs//10,
  Yn is Y- Ys//10,
  brush(system_color(window)),
  ellipse(X, Y, X1, Y1),
  brush(rgb(0, 0, 0)),
  ellipse(Xn, Yn, Xn+10, Yn- 10),
  Yp is Ys - 1,
  set(pos(Xn,Yn, Xs,Yp)),
  end(X, Y, Xn, Yn).

end(X, Y, Xn, Yn):-
  X=<370, Xn>=370, Y>235.
end(X, Y, Xn, Yn):-
  X=<800, Xn>=800, Y>425,
  (G_time>10->
   goal),
  (G_time<9->
  goal2).
end(X, Y, Xn, Yn):-
  Xn>860.
end(X, Y, Xn, Yn):-
  Yn>435.

goal2:-
  chronometer(T),
  bulets(B),
  G_time:=0,
  yes_no("lose","you lose, Try again",?),
  make_goals,
  update_window(_).

goal:-
  chronometer(T),
  bulets(B),
  G_time:=0,
  yes_no("win","Nice shoot, Try again",?),
  make_goals,
  update_window(_).

komputer(_):-
  Y:=289,
  X:=55,
win_func2(mouse_click(X,Y)).

%--------------------------------------------------------

time_func(end):-
G_time=0->
G_time:=0
else
G_time:=G_time-1,
T:=printq(G_time),
font(20,40,"Arial"),
text_out(350,20,T),

(G_time=20->
draw_bitmap( 100, 26, G_your, _, _)),
(G_time=10->
message("ai","My turn",!),
draw_bitmap( 100, 26, G_ai, _, _)),
(G_time=9->
draw_bitmap( 372, 26, G_timeblock, _, _)),
(G_time=7->
komputer(_)).

disusun oleh :
Rio Ramakautra 56411251 (3IA13)
Robby Rehantoro 56411420 (3IA13)

Komentar

Postingan Populer