Rabu, 25 Juni 2014

Teori Game
Teori Permainan mula-mula dikemukakan oleh seorang ahli matematika Perancis Emile Borel (1921). Kemudian dikembangkan oleh John V,N dan Oscar Mogenstern lebih lanjut sebagai alat untuk merumuskan perilaku ekonomi yang bersaing.
Model –model Teori permainan diklasifikasikan dengan sejumlah cara, seperti jumlah pemain, jumlah keuntungan dan kerugian dan jumlah strategi yang digunaka dalam permainan.

Manfaat Teori Permainan untuk beberapa hal:
1.       Mengembangkan suatu kerangka untuk analisa pengambilan keputusan dalam situasi perasaingan ( kerja sama)
2.       Menguraikan metode kuantitaif yang sistematik bagi pemain yang terlibat dalam persaingan untuk memilih strategi yang tradisional dalam pencapaian tujuan.
3.       Memberi gambaran dan penjelasan phenomena situasi persaingan /konflik seperti tawar menawar dan perumusan kualisi.

Aplikasi – aplikasi nyata yang paling sukses dari teori permainan banyak diketemukan dalam militer. Tetapi dengan berkembangnya dunia usaha yang semakin bersaing dan terbatasnya sumber daya serta saling meningkatkan pentingnya aplikasi bisnius teori permainan . Kontrak dan program tawar menawar serta keputusan – keputusan penetapan harga adalah contoh penggunaan teori permainan yang semakin luas. Model – model teori permainan dapat diklasifikasikan dengan sejumlah cara seperti jumlah pemain, jumlah keuntungan dan kerugian dan jumlah strategi yang digunakan dalam permainan. Jika permainan ada 2 pemain, permainan disebut permainan dua pemain. Jika Jika permainan ada N, permainan disebut permainan N pemain. Jika keuntungan dan kerugian adalah nol, disebut permainan jumlah nol ( jumlah konstan). Jika keuntungan dan kerugian adalah tidan nol, disebut permainan bukan jumlah nol ( Non zero – Zum Game)

Teori permainan adalah suatu cara belajar yang digunakan dalam menganalisa interaksi antara sejumlah pemain maupun perorangan yang menunjukkan strategi-strategi yang rasional.
Teori permainan pertama kali ditemukan oleh sekelompok ahli Matematika pada tahun 1944. Teori itu dikemukakan oleh John von Neumann and Oskar Morgenstern yang berisi :
“Permainan terdiri atas sekumpulan peraturan yang membangun situasi bersaing dari dua sampai beberapa orang atau kelompok dengan memilih strategi yang dibangun untuk memaksimalkan kemenangan sendiri atau pun untuk meminimalkan kemenangan lawan. Peraturan-peraturan menentukan kemungkinan tindakan untuk setiap pemain, sejumlah keterangan diterima setiap pemain sebagai kemajuan bermain, dan sejumlah kemenangan atau kekalahan dalam berbagai situasi.”
( J. Von Neumann and O. Morgenstern, Theory of Games and Economic Behavior (3d ed. 1953)). [2]

Pengertian Game
Menurut Agustinus Nilwan dalam bukunya “Pemrograman Animasi dan Game Profesional” terbitan Elex Media Komputindo, game merupakan permainan komputer yang dibuat dengan teknik dan metode animasi. Jika ingin mendalami pengunaan animasi haruslah memahami pembuatan game. Atau jika ingin membuat game, maka haruslah memahami teknik dan metode animasi, sebab keduanya saling berkaitan.

Animasi
Animasi dapat dibuat dengan tiga teknik berbeda, yaitu Image, Xoring serta make. Dan dalam pergerakannya dapat bertipe object sprite atau object frame. Juga bisa dibedakan atas metode animasi yang digunakan antara animasi frame, bibliting dan realtime. Walaupun terbagi atas berbagai definisi berbeda, tapi dalam prakteknya teori-teori tersebut dapat digabungkan atau saling berhubungan sehingga tidak murni dipakai sendiri. Macam-macam animasi yang digunakan dalam membuat sebuah game akan diterangkan sebagai berikut :

1. Animasi Dengan Teknik Image
Animasi dengan teknik ini adalah menyimpan image sebagai sebuah sprite dalam memori yang kemudian akan ditampilkan di backgroundnya. Dalam teknik ini animasi yang disimpan harus berlatar belakang sesuai backgroundnya. Animasi dengan teknik ini biasanya sulit dalam pembuatan gambarnya, sebab harus banyak dan melakukan penyamaan dan posisi. Akan tetapi teknik ini mudah dalam hal memainkan animasinya.

2. Animasi Dengan Teknik Xoring
Teknik ini adalah teknik animasi yang mudah dan sederhana, sebab selain gambarnya satu sprite, cara menampilkannya juga jauh lebih mudah dibanding dengan teknik sebelumnya. Pembuatan gambarnya sangat mudah, sebab yang dibuat adalah spritenya saja dan tidak perlu menyamakan dengan backgroundnya.
Kelemahan dari teknik ini adalah memiliki efek buruk yaitu tembus pandang dan mengganti warna sprite, maka hal ini tidak baik digunakan dalam animasi yang backgroundnya bergambar.

3. Animasi Dengan Teknik Make
Animasi dengan teknik ini biasanya digunakan untuk animasi umum, tapi biasanya digunakan untuk proses pembuatan animasi. Animasi dengan teknik ini memiliki sprite yang terus menerus digenerate oleh program, kemudian ditampilkan dengan perhitungan tertentu.
Animasi ini biasanya dilakukan oleh 3D modelling dan shading software seperti AutoCad, 3D Studio, Presidio 3D Workshop dan lain-lain.
Operasi diatas haruslah digenerate secara langsung dengan perhitungan sehingga saat pembuatan hampir bersamaan dengan saat menampilkannya

4. Animasi Dengan Tipe Object Sprite
Animasi ini menggunakan sprite sebagai pemeran utama sedangkan object lainnya hanya background diam. Prosesnya adalah mebuat gambar sprite dengan latar belakang warna hitam, lalu dibuat juga sprite yang sama tetapi berwarna hitam dan latar belakangnya adalah warna tertinggi, kemudian ditempatkan dengan pertama-tama menyimpan background yang akan ditimpa oelh sprite dan ditempatkan sprite dengan Xor dan Ditimpa dengan warna tertinggi secara Xor.

5. Animasi Dengan Tipe Object Frame
Animasi ini menitik beratkan animasi yang dimainkan hanya pada sprite objectnya saja, akan tetapi seluruh backgroundnya juga seolah-olah ikut digerakkan.

6. Metode Animasi frame
Metode ini adalah metode animasi yang mendukung tipe object frame. Karena metode animasi dengan metode full-screen, maka frame yang tampil haruslah disiapkan terlebih dahulu dalam bebera page sebelumnya. Karena hal tersebut maka pengambilan gambarnya haruslah sangat cepat, sehingga tidak menjadikan animasi lamban dan tersendat. Animasi frame ini haruslah menampilkan gambar fullscreen yang bergerak, agar efek tersendat dari pergantian frame tidak menyolok.

7. Metode Animasi BitBlt
Metode animasi ini biasanya disebut sprite animation, array animation, blocked animation, partial screen animation, snapshot animation atau arcade animation. Prinsip dari metode ini adalah menyimpan image dan memainkan animasinya dalam bentuk satu atau bebera sprite kecil.

8. Metode Animasi Real-Time
Dalam metode ini biasanya semua animasi yang sedang tampil atau yang akan dibuat dilakukan bersama sehingga tidak perlu disiapkan terlebih dahulu. Karena animasi ini lambat dan tersendat maka animasi dengan metode ini akan bagus jika pergerakan yang akan dilakukan adalah tidak diketahui sebelumnya dan tiba-tiba muncul.
Metode ini tidak disarankan untuk animasi biasa-biasa saja, akan tetapi sebaiknya digunakan untuk keperluan khusus seperti rotating dan tweening


GAME STICKMAN CS WAR

Game Stickman CS WAR merupakan game yang dirancang untuk simulasi pertarungan menggunakan senjata, dimana player harus menembak lawan agar dapat mengalahkan lawan dalam pertarungan, begitu pun lawan. Game ini dirancang menggunakan bahasa Prolog menggunakan compiler Strawberry Prolog.
I.                   Konsep AI (Algoritma)
Game “Stickman CS WAR” ini menggunakan algoritma program Backtracking, dimana pengertian backtracking sendiri adalah Backtracking yang artinya algoritma yang berbasis pada DFS untuk mencari solusi persoalan secara lebih mangkus, dan perbaikan dari algoritma brute-force, secara sistematis mencari solusi persoalan di antara semua kemungkinan solusi yang ada, Dengan metode runut-balik, kita tidak perlu memeriksa semua kemungkinan solusi yang ada.
II.               Penjelasan tentang game
a.       Tampilan Utama

Pada tampilan utama program ada beberapa tombol dan memiliki fungsi masing-masing adalah :
                                                               i.      Start                : Berfungsi untuk memulai game.
                                                             ii.      Exit                  : Berfungsi untuk keluar dari game



b.      Tampilan saat bermain

     Seperti yang terlihat pada gambar terdapat 2 orang stickman yang akan saling menyerang untuk mendapatkan kemenangan hingga akhir permainan, permainan akan terus berlangsung hingga waktu sudah habis, bila waktu habis maka permainan dinyatakan selesai.

c.       Aturan bermain (Rules)
                                                               i.      Waktu yang ditentukan untuk pertarungan adalah 30 detik.
                                                             ii.      Disaat waktu sedang berjalan player dan CPU harus saling memberikan serangan 1 sama lain.
                                                           iii.      Untuk melancarkan serangan pemain harus menekan tombol “arah atas” untuk siap menembak dan tombol “Space” untuk menembak.
                                                           iv.      Setiap stickman memiliki poin sebagai indikator menan, kalah atau seri.
                                                             v.      Jika waktu habis dan player stickman memiliki point darah lebih banyak dari CPU maka akan dianggap menangbegitu pula sebaliknya dan pertarungan akan berakhir.
                                                           vi.      Namun jika point darah playersama dengan CPU maka permainan dianggap seri.


III.            Goals
a.       Tampilan pada saat menang.

Akan muncul text box “Anda Menang, kemampuan menembak sangat menakjubkan”, jika waktu habis dan poin player lebih banyak dibandingkan CPU.

b.      Tampilan pada saat kalah.

Akan muncul text box “Anda kalah, Berusaha lebih giat lagi”, jika waktu habis dan poin player sedikit dibandingkan poin CPU.
c.       Tampilan pada saat seri.

Akan muncul text box “Seimbang, tingkatkan lagi kemampuan menembak anda“, jika waktu habis dan poin player sama dengan poin CPU.

IV.             Source Code game Tekken Stickman



% 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).