About

  • thumb
  • thumb
  • thumb
  • thumb
  • thumb
  • thumb
  • thumb
  • thumb
  • thumb
  • thumb
Selasa, 10 Mei 2016

Tugas 3 Pengantar Teknologi Game


Initial State
 
Pokemon Battle Game merupakan game yang dibuat dengan Strawberry Prolog.
Game ini merupakan jenis game yang memiliki sebuah AI (Artificial Intelligent) atau sering disebut kecerdesan buatan. Pada game ini kita harus mengumpulkan poin lebih banyak dari musuh yaitu AI yang telah di program. Dalam game ini terdapat dua pokemon yang saling berhadapan dan saling merebutkan poin dalam waktu 30 detik.
Game ini merupakan game duel satu melawan satu yaitu antara Player dan Komputer yang memiliki AI. Disini terdapat dua pokemon yang saling berhadapan,pokemon berwarna kuning dengan bola merah putih merupakan pokemon player,dan pokemon dengan warna abu-abu dengan bola biru putih merupakan pokemon milik komputer. Pada game ini player harus menembak musuh dan harus mengenainya untuk mendapat poin,satu tembakan yang mengenai musuh dihitung satu poin. Pemain dapat berlindung dibalik tembok dan bersembunyi dalam pokeball mereka masing-masing untuk menghindari tembakan. Permainan berlangsung selama 30 detik untuk satu kali permainan. Dalam game ini terdapat tiga level yaitu easy,normal,dan hard. Setiap level memiliki tingkat kesulitan yang berbeda pula. Semakin sulit levelnya semakin cepat pula respon komputer terhadap pergerakan kita. Respon komputer tergantung dari pergerakan kita,komputer membaca gerakan player seperti menembak,bertahan,dan bersiap menyerang. Dalam gini terdapat pula menu Help Me dan About yang akan membantu pemain untuk intruksi permainan.

Pengenalan Interface dan Menu
 
 

1. Tombol Exit Windows
Tombol ini untuk mengeluarkan windows game.
2. Tombol Minimize
Tombol ini untuk menyembunyikan windows game.
3. Tombol maximize
Tombol ini untuk membesarkan windows game sehingga menjadi fullscreen.
4. Title Game
Ini adalah nama dari game tersebut yaitu Pokemon Battle Game.
5. Pokeball Komputer
Ini adalah Pokeball komputer,pokeball ini akan berubah menjadi pokemon saat komputer bersiap untuk menyerang.
6. Tembok Pelindung
Ini adalah tembok pelindung untuk player dan komputer,dibalik tembok ini pokemon musuh dan pokemon player dapat berlindung dari serangan.
7. Pokeball Player
Ini adalah Pokeball milik player,pokeball ini akan berubah menjadi pokemon saat player bersiap untuk menyerang.
8. Background Game
Ini adalah background dari game.
9. Menu Help Me
Ini adalah menu Help Me yang didalamnya terdapat layout keyboard yang menjelaskan kontrol permainan. Berikut adalah tampilan Help Me bila di tekan.


10. Menu Level
Ini adalah menu level,disini adalah tempat kita memilih level permainan. Didalam menu ini terdapat submenu Easy,Normal,dan Hard ketika ditekan. Untuk memilih level kita cukup menekan pilihan menu dalam submenu tersebut.
11. Menu Game
Ini adalah Menu Game,dalam menu inilah kita memulai awal permainan. Dalam menu ini terdapat submenu Play dan Exit. Submenu Play ini untuk memulai permainan yaitu dengan cara menekan submenu Play. Sedangkan Exit untuk keluar dari game dengan cara menekan submenu Exit.
12. About
Ini adalah menu about. Menu ini akan terbuka di web default kita jika kita menekan menu about ini. Menu about ini sebenarnya berisi tentang cara bermain dan data diri penulis. Berikut ini adalah tampilan about saat kita tekan.
 
Cara Bermain
Disini akan dijelaskan cara bermain dari game ini :
1. Tunggu Loading splash screen.
2. Setelah selesai,pilih menu Game dan pilih submenu Play.
3. Setelah itu pilih menu Level dan pilih submenu Level yang diinginkan.
4. Maka akan muncul kotak pesan bahwa kita telah memilih level yang dipilih.
5. Setelah itu permainan siap dimulai.
Control
Dibawah ini adalah control gamenya :
Rules
  1. Permainan berlangsung selama 30 detik
  2. Pemain menggunakan tombol atas untuk berdiri, tombol bawah untuk menunduk dan tombol spasi untuk menembak.
  3. Menembak hanya dapat dilakukan ketika pemain atau komputer berdiri.
  4. 1 detik setelah pemain atau komputer menembak, pemain atau komputer akan otomatis menunduk untuk menghindari tembakan beruntun serta lag pada permainan.
  5. Jika pemain menembak tepat dan mengenai komputer maka poin pemain akan bertambah satu,begitu juga jika komputer berhasil menembak tepat dan mengenai player maka poin komputer otomatis akan bertambah satu.
  1. 1 detik setelah pemain atau komputer tertembak, pemain atau komputer akan otomatis menunduk untuk menghindari terkena tembakan beruntun serta lag pada permainan.
  2. Pada detik 0 permainan akan berakhir dan perhitungan poin akan berjalan.
  3. Jika pada detik 0 poin pemain lebih dari poin komputer maka pemain dinyatakan menang.
  4. Jika pada detik 0 poin pemain kurang dari poin komputer maka pemain dinyatakan kalah.
  5. Jika pada detik 0 poin pemain sama dengan poin komputer maka permainan dinyatakan seri.

Goal
Goal atau tujuan permainan ini adalah pengumpulan poin sebanyak munkin yang di dapat dari setiap tembakan yang mengenai musuh selama 30 detik permainan. Pemain atau komputer yang mengumpulkan poin paling banyaklah yang akan dinyatakan sebagai pemenangnya.

Batas Usia
Permainan ini tidak disarankan untuk anak dibawah umur 5 tahun karena secara tidak langsung memperlihatkan sebuah kejadian serang-menyerang target berupa objek pokemon virtual. Anak dibawah umur 5 tahun disarankan untuk mencari permainan edukatif seperti alphabet dan angka.

Konsep AI
Kecerdasan Buatan atau Intelegensi Artifisial (AI) didefinisikan sebagai kecerdasan entitas ilmiah. Sistem seperti ini umumnya dianggap komputer. Kecerdasan diciptakan dan dimasukkan ke dalam suatu mesin (komputer) agar dapat melakukan pekerjaan seperti yang dapat dilakukan manusia. Beberapa macam bidang yang menggunakan kecerdasan buatan antara lain sistem pakar, permainan komputer (games), logika fuzzy, jaringan syaraf tiruan dan robotika.
Konsep AI pada game ini yaitu musuh memiliki kecerdasan pengecekan terhadap lawannya,jadi dia merespon setiap detik dari pergerakan lawan. Kecerdasan ini tergantung pada level,semakin tinggi levelnya semakin cepat responnya. AI dari musuh ini juga tidak akan mengeluarkan tembakan yang sia-sia karena AI selalu mengecek lawannya,ketika lawan dalam posisi berdiri baru AI mengeluarkan tembakannya.

Konsep Algoritma
Algoritma adalah metode efektif diekspresikan sebagai rangkaian terbatas dari instruksi-instruksi yang telah didefinisikan dengan baik. Algoritma merupakan suatu teknik dalam kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan algoritma.
Algoritma yang digunakan adalah forward chaining atau respon berantai dengan menggunakan statement if. Jika kondisi statement tidak terpenuhi maka tidak akan di proses ke statement selanjutnya. Kecanggihan forward chaining adalah : Output dari suatu proses di pengaruhi oleh output proses sebelumnya, forward chaining adalah modus ponens yang berulang.

Listing Program
% ------------------------------------------------------------------------------------%
% ---------------------------------Pokemon Battle----------------------------------------%
% ---------------Wahyu Ramadhan Teknik Informatika Universitas Gunadarma-------------------%
% ------------------------------------------------------------------------------------%


%=============================Deklarasi variable dan Impor gambar====================%
?-
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_background is bitmap_image("background.bmp",_),
G_pokemon1 is bitmap_image("pokemon1.bmp",_),
G_pokeball1 is bitmap_image("pokeball1.bmp",_),
G_damage1 is bitmap_image("damage1.bmp",_),
G_pokemon2 is bitmap_image("pokemon2.bmp",_),
G_pokeball2 is bitmap_image("pokeball2.bmp",_),
G_damage2 is bitmap_image("damage2.bmp",_),
G_fire1 is bitmap_image("fire1.bmp",_),
G_fire2 is bitmap_image("fire2.bmp",_),
G_att1 is bitmap_image("att1.bmp",_),
G_att2 is bitmap_image("att2.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",_),
G_header is bitmap_image("header.bmp",_),
G_loading is bitmap_image("loading.bmp",_),
G_keyboard is bitmap_image("keyboard.bmp",_),





14
%====================Splash Screen======================%

window(G_satu,_,win_satu(_),"Now Loading...",100,100,860,420).
win_satu(paint):-
draw_bitmap(0,0,G_loading,_,_),
draw_bitmap(0,0,G_header,_,_).
win_satu(init):-
G_batas := 0,
G_waktu is set_timer(_,0,fungsi_timer).
fungsi_timer(end):-
pen(10,rgb(0,0,255)),
line(0,320,G_batas,320),
(G_batas<860 -> G_batas:=G_batas+2),
(G_batas>=860->close_window(G_satu),

%====================Window Game===========================%

window(G_dua,_,win_func(_),"Pokemon Battle Game",100,100,800,420)).
win_func(paint):-
draw_bitmap(0,0,G_background,_,_),
draw_bitmap( 0, 140, G_pokeball1, _, _),
draw_bitmap( 610, 140, G_pokeball2, _, _),
draw_bitmap( 170, 220, G_Tembok, _, _),
draw_bitmap( 550, 220, G_Tembok, _, _).


%===================Menu dan Timer========================%

win_func(init):-
G_timer is set_timer(_,1,time_func),
menu( pop_up, _, _, menu_pilihan(_),"&Game"),
menu( pop_up, G_Menu, _, menu_level(_), "&Level"),
menu( normal, _, _, menu_bantuan(_), "&Help Me"),
menu( normal, _, _, menu_tentang(_), "&About").



menu_pilihan(init):-
menu(normal,_,_,mulai_game(_),"&Play"),
menu(normal,_,_,menu_exit(_),"&Exit").


menu_exit(press):-
beep("Lock.wav"),
close_window(_).
win_func(close) :-
not( yes_no("","Are you sure?", ?)).

15
menu_level(init):-
menu(normal,_,_,mudah(_),"&Easy"),
menu(normal,_,_,normal(_),"&Normal"),
menu(normal,_,_,susah(_),"&Hard").
%===================================Level===================================%

%================================Mulai Game=================================%
mulai_game(press):-
draw_bitmap( 300, 250, 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_time:=31,
draw_bitmap( 0, 140, G_pokeball1, _, _),
draw_bitmap( 610, 140, G_pokeball2, _, _),
draw_bitmap( 170, 220, G_Tembok, _, _),
draw_bitmap( 550, 220, G_Tembok, _, _).



%===========================Inisiasi Level Mudah==================================%

mudah(press):-
beep("Lock.wav"),
message("Level","Your enemy is easy !",i),
draw_bitmap( 300, 250, 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_pokeball1, _, _),
draw_bitmap( 610, 140, G_pokeball2, _, _),



16
draw_bitmap( 170, 220, G_Tembok, _, _),
draw_bitmap( 550, 220, G_Tembok, _, _).

%==============================Inisiasi Level Normal===================================%
normal(press):-
beep("Lock.wav"),
message("Level","Your enemy is Normal !",i),
draw_bitmap( 300, 250, 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_pokeball1, _, _),
draw_bitmap( 610, 140, G_pokeball2, _, _),
draw_bitmap( 170, 220, G_Tembok, _, _),
draw_bitmap( 550, 220, G_Tembok, _, _).

%=========================Inisiasi Level Susah=======================================%
susah(press):-
beep("Lock.wav"),
message("Level","Are you ready to be Pokemon Master?",i),
draw_bitmap( 300, 250, 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_pokeball1, _, _),
draw_bitmap( 610, 140, G_pokeball2, _, _),
draw_bitmap( 170, 220, G_Tembok, _, _),
draw_bitmap( 550, 220, G_Tembok, _, _).




17
menu_bantuan(press):-
beep("Lock.wav"),
window(G_help,_,win_help(_),"Help Me...",100,100,900,320).
win_help(paint):-
draw_bitmap(0,0,G_keyboard,_,_).
menu_tentang(press):-
beep("Lock.wav"),
shell_execute("about.html").






%===========================Menjalankan Timer Game===============%
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,250,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(_)),



18
(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(_)),

19
(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(_)),




20
(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(_)),

21
(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, 250, 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(_)),




22
(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(_)),




23
(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, 250, G_Timeup, _, _),

(G_life_blue<G_life_red->message("You Lose","Training your pokemon,and come back !",i)),
(G_life_blue>G_life_red->message("You Win","You are the real pokemon master !",i)),
(G_life_blue=G_life_red->message("Draw","Please try again !",i))).


%===================================Fungsi dari Respon Komputer==================%

musuhberdiri(_):-
G_aksi_red:=1,
draw_bitmap( 610, 150, G_pokemon2, _, _).

musuhnunduk(_):-
G_aksi_red:=0,
draw_bitmap( 610, 140, G_pokemon2, _, _).


24
musuhcek(_):-
G_aksi_blue=1->
G_aksi_red:=1,
draw_bitmap( 610, 150, G_pokemon2, _, _),
wait(0.1),
draw_bitmap(550,197,G_att2,_,_),
G_aksi_red:=2,
afterfire_red(_).

%=======================================Tembakan Keluar=========================%
afterfire_blue(_):-
wait(0.2),
draw_bitmap( 360, 195, G_fire1, _, _),
efektembak1(_),
wait(0.3),
draw_bitmap( 0, 140, G_pokeball1, _, _),
draw_bitmap( 168, 192, G_white, _, _),
G_aksi_blue:=0.

afterfire_red(_):-
wait(0.2),
beep("gun.wav"),
draw_bitmap( 370, 192, G_fire2, _, _),
efektembak2(_),
wait(0.3),
draw_bitmap( 610, 140, G_pokeball2, _, _),
draw_bitmap( 295, 193, G_white, _, _),
G_aksi_red:=0.

%========================================Efek Damage===========================%
efektembak1(_):-
G_aksi_red=1->
wait(0.2),
draw_bitmap( 610, 150, G_damage2, _, _),
draw_bitmap( 240, 192, G_white, _, _),
wait(1),
draw_bitmap( 610, 140, G_pokeball2, _, _),
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_damage1, _, _),
draw_bitmap( 235, 192, G_white, _, _),
25
wait(1),
draw_bitmap( 0, 140, G_pokeball1, _, _),
G_life_blue:=G_life_blue-1,
skorred(_),
G_aksi_blue:=0.



%=========================Membuat Pokemon Player Berdiri, Menunduk, Menembak===============%

win_func(key_down(38,_)):-
G_aksi_blue:=1,
draw_bitmap( 0, 150, G_pokemon1, _, _).


win_func(key_down(40,_)):-
wait(0.8),
G_aksi_blue:=0,
draw_bitmap( 0, 140, G_pokeball1, _, _).


win_func(key_down(32,_)):-
beep("gun.wav"),
G_aksi_blue=1-> draw_bitmap(165,197,G_att1,_,_),
G_aksi_blue:=2,
afterfire_blue(_),
wait(0.6).



%=============================Penghitungan dan Menampilkan Skor===========================%
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).




26
 


0 komentar:

Posting Komentar