% Nama : Indra Setia ---------%
% Kelas : 3ia11 ---------%
% NPM : 53411610 ---------%
% Judul Progress :StickMan CS WAR ------%
%deklarasi variable, impor
gambar, dan pembuatan jendela permainan%
?-
G_aksi_kanan:=0,
G_aksi_kiri:=0,
G_level:=1,
G_life_kanan:=10,
G_life_kiri:=10,
G_title is bitmap_image("background.bmp",_),
G_kiritembak1 is bitmap_image("kiritembak1.bmp",_),
G_kirinunduk1 is bitmap_image("kirinunduk1.bmp",_),
G_kiriketembak1 is bitmap_image("kiriketembak1.bmp",_),
G_kanantembak2 is bitmap_image("kanantembak2.bmp",_),
G_kanannunduk2 is bitmap_image("kanannunduk2.bmp",_),
G_kananketembak2 is bitmap_image("kananketembak2.bmp",_),
G_pelurukiri is bitmap_image("pelurukiri.bmp",_),
G_pelurukanan is bitmap_image("pelurukanan.bmp",_),
G_dorkiri is bitmap_image("dor_kiri.bmp",_),
G_dorkanan is bitmap_image("dor_kanan.bmp",_),
G_drum is bitmap_image("drum.bmp",_),
G_timeup is bitmap_image("timeup.bmp",_),
G_white is bitmap_image("white.bmp",_),
G_timeblock is bitmap_image("timeblock.bmp",_),
G_cleantime is bitmap_image("cleantimeup.bmp",_),
window(G_layar1,_,win_utama(_),"StickMan CS WAR",100,100,800,420).
%---- Tombol jendela utama ----%
win_utama(init):-
button(_,_,mulai_game(_),"Start",50,50,150,30),
button(_,_,keluar_game(_),"Exit",50,100,150,30).
win_utama(paint):-
draw_bitmap(0,0,G_title,_,_).
%------ Tombol mulai game -----%
mulai_game(press):-
beep("sound\\allright.wav"),
window(G_layar2,_,win_func(_),"StickMan CS WAR",100,100,800,420),
close_window(G_layar1).
G_timer is set_timer(_,1,time_func).
%----- Tombol Keluar Game -----%
keluar_game(press):-
close_window(G_layar1).
%-menggambar posisi awal dengan
menggunakan fungsi paint-%
win_func(paint):-
draw_bitmap( 0, 140, G_kirinunduk1, _, _),
draw_bitmap( 610, 70, G_kanannunduk2, _, _),
draw_bitmap( 330, 225, G_drum, _, _).
%-mendeklarasikan fungsi yang
berisi menu dan timer-%
win_func(init):-
G_timer is set_timer(_,1,time_func),
menu( pop_up, _, _, menu_pilihan(_),"&Pilihan"),
menu( pop_up, G_Menu, _, menu_level(_), "&Level"),
menu( normal, _, _, menu_bantuan(_),
"&Bantuan"),
menu( normal, _, _, menu_tentang(_), "&About"),
menu( normal, _, _, menu_back(_), "&Back").
menu_pilihan(init):-
menu(normal,_,_,mulai_game(_),"&Mulai"),
menu(normal,_,_,menu_exit(_),"&Keluar").
menu_level(init):-
menu(normal,_,_,mudah(_),"&Easy"),
menu(normal,_,_,normal(_),"&Normal"),
menu(normal,_,_,susah(_),"&Hard").
menu_bantuan(press):-
message("cara bermain","Gunakan
tombol arah atas untuk berdiri, tombol bawah untuk merunduk, dan tombol spasi
untuk menembak",i).
menu_tentang(press):-
message("About","Teknik
Informatika Gunadarma",i).
menu_back(press):-
window(G_layar1,_,win_utama(_),"StickMan CS WAR",100,100,800,420),
close_window(G_layar2).
menu_exit(press):-
close_window(_).
win_func(close) :-
not(
yes_no("","Keluar
Dari Permainan?", ?)).
%--mendeklarasikan per level
(Easy, Normal, dan Hard)--%
%---- level default (easy) ----%
mulai_game(press):-
draw_bitmap( 300, 10, G_cleantime, _, _),
G_aksi_kanan:=0,
G_aksi_kiri:=0,
G_life_kanan:=99,
G_life_kiri:=99,
G_time:=31,
draw_bitmap( 0, 140, G_kirinunduk1, _, _),
draw_bitmap( 610, 70, G_kanannunduk2, _, _),
draw_bitmap( 330, 225, G_drum, _, _).
%------- level Easy -------%
mudah(press):-
message("level","Anda memilih level
Easy",i),
draw_bitmap( 300, 10, G_cleantime, _, _),
G_aksi_kanan:=0,
G_aksi_kiri:=0,
G_life_kanan:=99,
G_life_kiri:=99,
G_level:=1,
G_time:=31,
draw_bitmap( 0, 140, G_kirinunduk1, _, _),
draw_bitmap( 610, 70, G_kanannunduk2, _, _),
draw_bitmap( 330, 225, G_drum, _, _).
%-------- level Normal ------%
normal(press):-
message("level","Anda memilih level
Normal",i),
draw_bitmap( 300, 10, G_cleantime, _, _),
G_aksi_kanan:=0,
G_aksi_kiri:=0,
G_life_kanan:=99,
G_life_kiri:=99,
G_level:=2,
G_time:=31,
draw_bitmap( 0, 140, G_kirinunduk1, _, _),
draw_bitmap( 610, 70, G_kanannunduk2, _, _),
draw_bitmap( 330, 225, G_drum, _, _).
%--------- level Hard --------%
susah(press):-
message("level","Anda memilih level
Hard",i),
draw_bitmap( 300, 10, G_cleantime, _, _),
G_aksi_kanan:=0,
G_aksi_kiri:=0,
G_life_kanan:=99,
G_life_kiri:=99,
G_level:=3,
G_time:=31,
draw_bitmap( 0, 140, G_kirinunduk1, _, _),
draw_bitmap( 610, 70, G_kanannunduk2, _, _),
draw_bitmap( 330, 225, G_drum, _, _).
%--menjalankan fungsi timer-%
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),
%-Respon komputer per detik %
(G_time=29->
G_level=3->musuhcek(_)),
(G_time=29->
G_level=2->musuhnunduk(_)),
(G_time=29->
G_level=1->musuhberdiri(_)),
(G_time=28->
G_level=3->musuhcek(_)),
(G_time=28->
G_level=2->musuhberdiri(_)),
(G_time=28->
G_level=1->musuhberdiri(_)),
(G_time=27->
G_level=3->musuhcek(_)),
(G_time=27->
G_level=2->musuhcek(_)),
(G_time=27->
G_level=1->musuhnunduk(_)),
(G_time=26->
G_level=3->musuhberdiri(_), musuhcek(_)),
(G_time=26->
G_level=2->musuhcek(_)),
(G_time=26->
G_level=1->musuhcek(_)),
(G_time=25->
G_level=3->musuhberdiri(_), musuhcek(_)),
(G_time=25->
G_level=2->musuhcek(_)),
(G_time=25->
G_level=1->musuhberdiri(_)),
(G_time=25->
G_level=3->musuhberdiri(_), musuhcek(_)),
(G_time=25->
G_level=2->musuhcek(_)),
(G_time=25->
G_level=1->musuhberdiri(_)),
(G_time=24->
G_level=3->musuhnunduk(_)),
(G_time=24->
G_level=2->musuhcek(_)),
(G_time=24->
G_level=1->musuhberdiri(_)),
(G_time=23->
G_level=3->musuhcek(_)),
(G_time=23->
G_level=2->musuhcek(_)),
(G_time=23->
G_level=1->musuhberdiri(_)),
(G_time=22->
G_level=3->musuhcek(_)),
(G_time=22->
G_level=2->musuhcek(_)),
(G_time=22->
G_level=1->musuhberdiri(_)),
(G_time=21->
G_level=3->musuhnunduk(_)),
(G_time=21->
G_level=2->musuhcek(_)),
(G_time=21->
G_level=1->musuhberdiri(_)),
(G_time=20->
G_level=3->musuhberdiri(_), musuhcek(_)),
(G_time=20->
G_level=2->musuhcek(_)),
(G_time=20->
G_level=1->musuhberdiri(_)),
(G_time=19->
G_level=3->musuhberdiri(_), musuhcek(_)),
(G_time=19->
G_level=2->musuhcek(_)),
(G_time=19->
G_level=1->musuhberdiri(_)),
(G_time=18->
G_level=3->musuhcek(_)),
(G_time=18->
G_level=2->musuhcek(_)),
(G_time=18->
G_level=1->musuhberdiri(_)),
(G_time=17->
G_level=3->musuhcek(_)),
(G_time=17->
G_level=2->musuhcek(_)),
(G_time=17->
G_level=1->musuhberdiri(_)),
(G_time=16->
G_level=3->musuhnunduk(_)),
(G_time=16->
G_level=2->musuhcek(_)),
(G_time=16->
G_level=1->musuhberdiri(_)),
(G_time=15->
G_level=3->musuhcek(_)),
(G_time=15->
G_level=2->musuhcek(_)),
(G_time=15->
G_level=1->musuhberdiri(_)),
(G_time=14->
G_level=3->musuhcek(_)),
(G_time=14->
G_level=2->musuhcek(_)),
(G_time=14->
G_level=1->musuhberdiri(_)),
(G_time=13->
G_level=3->musuhberdiri(_), musuhcek(_)),
(G_time=13->
G_level=2->musuhcek(_)),
(G_time=13->
G_level=1->musuhberdiri(_)),
(G_time=12->
G_level=3->musuhnunduk(_)),
(G_time=12->
G_level=2->musuhcek(_)),
(G_time=12->
G_level=1->musuhberdiri(_)),
(G_time=11->
G_level=3->musuhberdiri(_), musuhcek(_)),
(G_time=11->
G_level=2->musuhcek(_)),
(G_time=11->
G_level=1->musuhberdiri(_)),
(G_time=10->
G_level=3->musuhnunduk(_)),
(G_time=10->
G_level=2->musuhcek(_)),
(G_time=10->
G_level=1->musuhberdiri(_)),
(G_time=9->
draw_bitmap( 372, 26, G_timeblock, _, _)),
(G_time=9->
G_level=3->musuhberdiri(_), musuhcek(_)),
(G_time=9->
G_level=2->musuhcek(_)),
(G_time=9->
G_level=1->musuhberdiri(_)),
(G_time=8->
G_level=3->musuhnunduk(_)),
(G_time=8->
G_level=2->musuhcek(_)),
(G_time=8->
G_level=1->musuhberdiri(_)),
(G_time=7->
G_level=3->musuhcek(_)),
(G_time=7->
G_level=2->musuhcek(_)),
(G_time=7->
G_level=1->musuhberdiri(_)),
(G_time=6->
G_level=3->musuhcek(_)),
(G_time=6->
G_level=2->musuhcek(_)),
(G_time=6->
G_level=1->musuhberdiri(_)),
(G_time=5->
G_level=3->musuhcek(_)),
(G_time=5->
G_level=2->musuhcek(_)),
(G_time=5->
G_level=1->musuhberdiri(_)),
(G_time=4->
G_level=3->musuhberdiri(_), musuhcek(_)),
(G_time=4->
G_level=2->musuhcek(_)),
(G_time=4->
G_level=1->musuhberdiri(_)),
(G_time=3->
G_level=3->musuhberdiri(_), musuhcek(_)),
(G_time=3->
G_level=2->musuhcek(_)),
(G_time=3->
G_level=1->musuhberdiri(_)),
(G_time=2->
G_level=3->musuhnunduk(_)),
(G_time=2->
G_level=2->musuhcek(_)),
(G_time=2->
G_level=1->musuhberdiri(_)),
(G_time=1->
G_level=3->musuhcek(_)),
(G_time=1->
G_level=2->musuhcek(_)),
(G_time=1->
G_level=1->musuhberdiri(_)),
(G_time=0 ->
G_time:=0,
draw_bitmap( 310, 20, G_timeup, _, _),
(G_life_kiri<G_life_kanan->message("Lose","Anda kalah,
Berusaha lebih giat lagi",i)),
(G_life_kiri>G_life_kanan->message("Win","Anda Menang,
Kemampuan menembak sangat menakjubkan!!",i)),
(G_life_kiri=G_life_kanan->message("Draw","Seimbang,
Tingkatkan lagi kemampuan menembak anda",i))).
%- Fungsi respon dari komputer %
musuhberdiri(_):-
G_aksi_kanan:=1,
draw_bitmap( 610, 100, G_kanantembak2, _, _).
musuhnunduk(_):-
G_aksi_kanan:=0,
draw_bitmap( 610, 70, G_kanannunduk2, _, _).
musuhcek(_):-
G_aksi_kiri=1->
G_aksi_kanan:=1,
draw_bitmap( 610, 100, G_kanantembak2, _, _),
wait(0.1),
draw_bitmap(535,180,G_dorkanan,_,_),
G_aksi_kanan:=2,
afterfire_red(_).
%- Peluru keluar dari weapon -%
afterfire_blue(_):-
wait(0.2),
draw_bitmap( 470, 215, G_pelurukiri, _, _),
efektembak1(_),
wait(0.3),
draw_bitmap( 0, 140, G_kirinunduk1, _, _),
draw_bitmap( 330, 215, G_white, _, _),
G_aksi_kiri:=0.
afterfire_red(_):-
wait(0.2),
draw_bitmap( 370, 180, G_pelurukanan, _, _),
efektembak2(_),
wait(0.3),
draw_bitmap( 610, 70, G_kanannunduk2, _, _),
draw_bitmap( 370, 180, G_white, _, _),
G_aksi_kanan:=0.
%Efek Tembak (kena atau tidak)-%
efektembak1(_):-
G_aksi_kanan=1->
wait(0.2),
draw_bitmap( 610, 100, G_kananketembak2, _, _),
beep("sound\\piercingshot.wav"),
draw_bitmap( 240, 192, G_white, _, _),
wait(1),
draw_bitmap( 610, 70, G_kanannunduk2, _, _),
G_life_kanan:=G_life_kanan-1,
G_aksi_kanan:=0.
efektembak2(_):-
G_aksi_kiri=1->
wait(0.2),
draw_bitmap( 0, 150, G_kiriketembak1, _, _),
beep("sound\\headshot.wav"),
draw_bitmap( 235, 192, G_white, _, _),
wait(1),
draw_bitmap( 0, 140, G_kirinunduk1, _, _),
G_life_kiri:=G_life_kiri-1,
G_aksi_kiri:=0.
%-- membuat player berdiri,
menunduk, menembak --%
win_func(key_down(38,_)):-
G_aksi_kiri:=1,
draw_bitmap( 0, 150, G_kiritembak1, _, _).
win_func(key_down(40,_)):-
wait(0.8),
G_aksi_kiri:=0,
draw_bitmap( 0, 140, G_kirinunduk1, _, _).
win_func(key_down(32,_)):-
G_aksi_kiri=1-> draw_bitmap(330,215,G_dorkiri,_,_),
G_aksi_kiri:=2,
afterfire_blue(_),
wait(0.6).