Game Permainan Battlefire hanya dapat dimainkan oleh satu pemain
yang mengendalikan tentara biru melawan komputer yang mengendalikan tentara
merah. Permainan ini melatih ketepatan pemain dalam mengambil keputusan kapan
untuk bersembunyi, berdiri, dan menembak,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 heuristikdan
diperlukan dalam mencari suatu jawaban, dengan kata lain, prolog dalam prolog
adalah database.
Strawberry Prolog adalah dialek dari bahasa
pemrograman Prolog. Sintaksnya sangat dekat dengan ISO-Prolog tetapi memiliki
banyak ekstensi yang bukan bagian dari standar. Gagasan utama dari Strawberry
Prolog sangat mudah digunakan dan oleh karena itu beberapa universitas
menggunakan prolog untuk kursus ,pada game ini menggunakan algoritma AI dimana ALGORITMA AI (ARTIFICIAL INTELEGENCE) Merupaka Kecerdasan
Buatan (Artificial Intelligence) merupakan cabang terpenting dalam dunia
computer yang membuat agar mesin (computer) dapat melakukan pekerjaan seperti
dan sebaik yang dilakukan manusia. Pada awalnya diciptakan computer hanya
berfungsi sebagai alat hitung. Tapi sekarang peran computer makin mendominasi
kehidupan manusia. Komputer di harapkan data diberdayakan untuk mengerjakan
segala sesuatu yang biasa dikerjakan oleh manusia.
AI :
Kecerdasan buatan pada game ini adalah respon pada komputer. Komputer dapat
mengecek keadaan pemain apakah sedang berdiri atau tidak, ketika pemain berdiri
komputer akan menembak. Komputer dapat melakukan pengecekan ini pada saat
berdiri maupun pada saat menunduk. Jika pemain hanya diam saja tidak mau
berdiri maka komputer yang akan berdiri untuk memancing pemain berdiri pula.
Tampilan
Game
Rule
(Aturan):
- Permainan berlangsung selama 30 detik
- Pemain menggunakan tombol atas untuk berdiri, tombol bawah untuk menunduk dan tombol spasi untuk menembak.
- Menembak hanya dapat dilakukan ketika pemain atau komputer berdiri.
- 1 detik setelah pemain atau komputer menembak, pemain atau komputer akan otomatis menunduk untuk menghindari tembakan beruntun serta lag pada permainan.
- Jika pemain menembak tepat pada saat computer berdiri maka life komputer berkurang satu, jika komputer menembak tepat pada saat pemain berdiri maka life pemain berkurang satu
- 1 detik setelah pemain atau komputer tertembak, pemain atau komputer akan otomatis menunduk untuk menghindari terkena tembakan beruntun serta lag pada permainan.
- Pada detik 0 permainan akan berakhir dan perhitungan life akan berjalan.
- Jika pada detik 0 life pemain lebih dari life komputer maka pemain dinyatakan menang.
- Jika pada detik 0 life pemain kurang dari life komputer maka pemain dinyatakan kalah.
- Jika pada detik 0 life pemain sama dengan life komputer maka permainan dinyatakan seri.
Goal (Tujuan):
Tujuan dari permainan ini adalah membuat life terus berkurang
sehingga ketika permainan berakhir life musuh kurang dari life pemain.
Code
program
?-
G_aksi_red:=0,
G_aksi_blue:=0,
G_skor_blue:=0,
G_skor_red:=0,
G_level:=1,
G_life_red:=10,
G_life_blue:=10,
G_zero:=0,
G_Tentaranembak1 is bitmap_image("Tentaranembak1.bmp",_),
G_Tentaranunduk1 is bitmap_image("Tentaranunduk1.bmp",_),
G_Tentaraketembak1 is bitmap_image("Tentaraketembak1.bmp",_),
G_Tentaranembak2 is bitmap_image("Tentaranembak2.bmp",_),
G_Tentaranunduk2 is bitmap_image("Tentaranunduk2.bmp",_),
G_Tentaraketembak2 is bitmap_image("Tentaraketembak2.bmp",_),
G_Pelurubiru is bitmap_image("pelurubiru.bmp",_),
G_Pelurumerah is bitmap_image("pelurumerah.bmp",_),
G_Dorblue is bitmap_image("dor_blue.bmp",_),
G_Dorred is bitmap_image("dor_red.bmp",_),
G_Tembok is bitmap_image("Tembok.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(_,_,win_func(_),"BattleFire",100,100,800,420).
%----------------menggambar
posisi awal dengan menggunakan fungsi paint--------------------
win_func(paint):-
draw_bitmap( 0, 140, G_Tentaranunduk1, _, _),
draw_bitmap( 610, 140, G_Tentaranunduk2, _, _),
draw_bitmap( 170, 220, G_Tembok, _, _),
draw_bitmap( 550, 220, G_Tembok, _, _).
%----------------mendeklarasikan
fungsi inisialisasi 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_pilihan(init):-
menu(normal,_,_,mulai_game(_),"&Mulai"),
menu(normal,_,_,menu_exit(_),"&Keluar").
menu_exit(press):-
close_window(_).
win_func(close) :-
not( yes_no("","Keluar Dari Permainan?", ?)).
menu_level(init):-
menu(normal,_,_,mudah(_),"&Mudah"),
menu(normal,_,_,normal(_),"&Normal"),
menu(normal,_,_,susah(_),"&Susah").
%----mendeklarasikan inisialisasi
per level (mudah, normal, dan susah)-------%
%---------------------inisiasi
level default (mudah) ------------------------%
mulai_game(press):-
draw_bitmap( 300, 10, G_cleantime, _, _),
draw_bitmap( 100, 20, G_cleantime, _, _),
draw_bitmap( 600, 20, G_cleantime, _, _),
G_aksi_red:=0,
G_aksi_blue:=0,-
G_skor_blue:=0,
G_skor_red:=0,
G_life_red:=99,
G_life_blue:=99,
G_time:=31,
draw_bitmap( 0, 140, G_Tentaranunduk1, _, _),
draw_bitmap( 610, 140, G_Tentaranunduk2, _, _),
draw_bitmap( 170, 220, G_Tembok, _, _),
draw_bitmap( 550, 220, G_Tembok, _, _).
%-----------------------------
inisiasi level mudah -------------------------%
mudah(press):-
message("level","Anda memilih
level mudah",i),
draw_bitmap( 300, 10, G_cleantime, _, _),
draw_bitmap( 100, 20, G_cleantime, _, _),
draw_bitmap( 600, 20, G_cleantime, _, _),
G_aksi_red:=0,
G_aksi_blue:=0,
G_skor_blue:=0,
G_skor_red:=0,
G_life_red:=99,
G_life_blue:=99,
G_level:=1,
G_time:=31,
draw_bitmap( 0, 140, G_Tentaranunduk1, _, _),
draw_bitmap( 610, 140, G_Tentaranunduk2, _, _),
draw_bitmap( 170, 220, G_Tembok, _, _),
draw_bitmap( 550, 220, G_Tembok, _, _).
%-----------------------------
inisiasi level normal -------------------------%
normal(press):-
message("level","Anda memilih
level normal",i),
draw_bitmap( 300, 10, G_cleantime, _, _),
draw_bitmap( 100, 20, G_cleantime, _, _),
draw_bitmap( 600, 20, G_cleantime, _, _),
G_aksi_red:=0,
G_aksi_blue:=0,
G_skor_blue:=0, %------- buat
bikin skor-------------%
G_skor_red:=0, %------- buat
bikin skor-------------%
G_life_red:=99,
G_life_blue:=99,
G_level:=2,
G_time:=31,
draw_bitmap( 0, 140, G_Tentaranunduk1, _, _),
draw_bitmap( 610, 140, G_Tentaranunduk2, _, _),
draw_bitmap( 170, 220, G_Tembok, _, _),
draw_bitmap( 550, 220, G_Tembok, _, _).
%-----------------------------
inisiasi level susah -------------------------%
susah(press):-
message("level","Anda memilih
level susah",i),
draw_bitmap( 300, 10, G_cleantime, _, _),
draw_bitmap( 100, 20, G_cleantime, _, _),
draw_bitmap( 600, 20, G_cleantime, _, _),
G_aksi_red:=0,
G_aksi_blue:=0,
G_skor_blue:=0,
G_skor_red:=0,
G_life_red:=99,
G_life_blue:=99,
G_level:=3,
G_time:=31,
draw_bitmap( 0, 140, G_Tentaranunduk1, _, _),
draw_bitmap( 610, 140, G_Tentaranunduk2, _, _),
draw_bitmap( 170, 220, G_Tembok, _, _),
draw_bitmap( 550, 220, G_Tembok, _, _).
menu_bantuan(press):-
message("cara
bermain","Tekan tombol atas untuk berdiri, tombol bawah untuk merunduk,
dan tombol spasi untuk menembak",i).
menu_tentang(press):-
message("About","Teknik Informatika Gunadarma 2015",i).
%-------------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_blue<G_life_red->message("Kalah","Anda kalah,
kemampuan menembak anda payah",i)),
(G_life_blue>G_life_red->message("Menang","Anda Menang,
kemampuan menembak anda hebat!",i)),
(G_life_blue=G_life_red->message("Seri","Seimbang,
Kemampuan anda lumayan",i))).
%---------------------isi dari
fungsi respon komputer----------------------
musuhberdiri(_):-
G_aksi_red:=1,
draw_bitmap( 610, 150, G_Tentaranembak2, _, _).
musuhnunduk(_):-
G_aksi_red:=0,
draw_bitmap( 610, 140, G_Tentaranunduk2, _, _).
musuhcek(_):-
G_aksi_blue=1->
G_aksi_red:=1,
draw_bitmap( 610, 150, G_Tentaranembak2, _, _),
wait(0.1),
draw_bitmap(550,197,G_Dorred,_,_),
G_aksi_red:=2,
afterfire_red(_).
%-------------------peluru keluar
dari senapan--------------
afterfire_blue(_):-
wait(0.2),
draw_bitmap( 360, 195, G_Pelurubiru, _, _),
efektembak1(_),
wait(0.3),
draw_bitmap( 0, 140, G_Tentaranunduk1, _, _),
draw_bitmap( 168, 192, G_white, _, _),
G_aksi_blue:=0.
afterfire_red(_):-
wait(0.2),
draw_bitmap( 370, 192, G_Pelurumerah, _, _),
efektembak2(_),
wait(0.3),
draw_bitmap( 610, 140, G_Tentaranunduk2, _, _),
draw_bitmap( 295, 193, G_white, _, _),
G_aksi_red:=0.
%------------------Efek Tembak
(kena apa kagak)-----------------------------------------
efektembak1(_):-
G_aksi_red=1->
wait(0.2),
draw_bitmap( 610, 150,
G_Tentaraketembak2, _, _),
draw_bitmap( 240, 192, G_white, _, _),
wait(1),
draw_bitmap( 610, 140, G_Tentaranunduk2, _, _),
G_life_red:=G_life_red-1,
skorblue(_),
G_aksi_red:=0.
efektembak2(_):-
G_aksi_blue=1->
wait(0.2),
draw_bitmap( 0, 150,
G_Tentaraketembak1, _, _),
draw_bitmap( 235, 192, G_white, _, _),
wait(1),
draw_bitmap( 0, 140, G_Tentaranunduk1, _, _),
G_life_blue:=G_life_blue-1,
skorred(_),
G_aksi_blue:=0.
%------------------membuat
tentara player berdiri, menunduk, menembak---------------------
win_func(key_down(38,_)):-
G_aksi_blue:=1,
draw_bitmap( 0, 150, G_Tentaranembak1, _, _).
win_func(key_down(40,_)):-
wait(0.8),
G_aksi_blue:=0,
draw_bitmap( 0, 140, G_Tentaranunduk1, _, _).
win_func(key_down(32,_)):-
G_aksi_blue=1-> draw_bitmap(165,197,G_Dorblue,_,_),
G_aksi_blue:=2,
afterfire_blue(_),
wait(0.6).
%--------------------buat hitung
dan tampilkan skor(tambahan)--------------------------------%
skorblue(_):-
G_skor_blue:=(G_skor_blue+1),
Skorblue:=printq(G_skor_blue),
font(15,30,"Arial"),
text_out(100,20,Skorblue).
skorred(_):-
G_skor_red:=(G_skor_red+1),
Skorred:=printq(G_skor_red),
font(15,30,"Arial"),
text_out(600,20,Skorred).