Kamis, 15 November 2012

Contoh Program Strawberry Prolog



Disini ane akan menjelaskan kodingan dasar pada strawberry prolog lengkap dengan contoh programnya. langsung aja nih penjelasannya :


(tanda "%" digunakan untuk mengawali keterangan, sesuai dengan aturan dari strawberry prolog. )  



  • 1. Membuat bagian awal program : deklarasi variable, import gambar, pembuatan window.  Bagian awal program diawali dengan "?-" lalu bisa diisi dengan deklarasi variable, import gambar dan pembuatan window. Setiap deklarasi variable harus diawali huruf G_ di depannya. Contoh :

------------------------------------------------------------------------------------------------------------------------------------
?-
G_Variable1:=10;
% membuat variable G_variable1 dengan nilai awal 10
G_Gambar1 is bitmap_image("Gambar1.bmp",_), 
% membuat variable G_Gambar1 yang isinya adalah gambar dengan alamat "Gambar1.bmp" untuk memudahkan taruh gambar dalam satu folder dengan folder kodingan prolognya sehingga kita hanya perlu menuliskan nama filenya saja
window(_,_,win_func(_),"Project1",100,100,800,420).
% membuat window dengan ukuran 800x420

------------------------------------------------------------------------------------------------------------------------------------
  • 2. Membuat Menu. Diawali dengan statement "win_func(init):-" . Ada dua jenis menu yaitu menu normal dan menu pop up. Menu normal adalah menu biasa yang ketika di klik akan langsung melakukan aksi tertentu. Menu Pop-up ketika di klik akan mengeluarkan sub menu. Contoh :
------------------------------------------------------------------------------------------------------------------------------------
win_func(init):-
menu( pop_up, _, _, menu_pilihan(_),"&Pilihan"),
% membuat menu pop up dengan nama "Pilihan" dan nama variable "menu_pilihan", menu popup dapat mempunyai sub menu.
menu( normal, _, _, menu_bantuan(_), "&Bantuan"),
% membuat menu biasa dengan nama "Bantuan" dengan nama variable "menu_bantuan"
------------------------------------------------------------------------------------------------------------------------------------

  • 3. Membuat Sub Menu Dan Aksi Dari Sub Menu.  Terusan dari kodingan diatas, untuk membuat sub menu harus diawali dengan nama variable dari menu tersebut. Contoh :

------------------------------------------------------------------------------------------------------------------------------------
menu_pilihan(init):-
menu(normal,_,_,mulai_game(_),"&Mulai"),
menu(normal,_,_,menu_exit(_),"&Keluar").
%membuat isi sub menu dari popup menu_pilihan yang isinya adalah mulai_game dan menu_exit

mulai_game(press):-
%membuat aksi yang dilakukan ketika sub menu mulai_game di klik, aksi-aksi bisa dilakukan antara lain adalah menaruh gambar dan  mendeklarasikan variable
 draw_bitmap( 300, 10, G_cleantime, _, _),
%menaruh gambar G_cleantime pada posisi 300,10 pada window
G_aksi_red:=0,
G_aksi_blue:=0,
G_life_red:=10,
G_life_blue:=10,
G_time:=31,
%mendeklarasikan variable
draw_bitmap( 0, 140, G_Tentaranunduk1, _, _),
draw_bitmap( 610, 140, G_Tentaranunduk2, _, _),
draw_bitmap( 170, 220, G_Tembok, _, _),
draw_bitmap( 550, 220, G_Tembok, _, _).
%menaruh gambar –gambar diatas pada posisinya masing-masing. Gambar yang ditaruh harus sudah dideklarasikan sebelumnya
-----------------------------------------------------------------------------------------------------------------------------------

  • 4. Membuat Menu Exit Dengan Tampilan Peringatan Kepada user. Terusan dari kodingan diatas, berikut adalah aksi ketika menu_exit ketika di klik yang akan keluar dari windows dengan sebelumnya memunculkan peringatan kepada user apakah ingin keluar atau tidak.

-----------------------------------------------------------------------------------------------------------------------------------
menu_exit(press):-
close_window(_).
win_func(close) :-
  not( yes_no("","Benar Anda Ingin Keluar Dari Permainan?", ?)).
%yang ini tentu gampang dimengerti, tinggal di kopas aja kodingan diatas
-----------------------------------------------------------------------------------------------------------------------------------

  • 5.  Membuat Aksi Yang Berjalan Ketika Tombol Di Keyboard Ditekan. Pertama kita harus tahu kode tombol keyboard, kode 38 untuk tombol atas, kode 40 untuk tombol bawah, kode 32 untuk tombol spasi. Untuk kode-kode lainnya silahkan cari sendiri. Contoh :
-----------------------------------------------------------------------------------------------------------------------------------
win_func(key_down(38,_)):-
G_aksi_blue:=1,
draw_bitmap( 0, 150, G_Tentaranembak1, _, _).
%membuat aksi yang akan dijalankan ketika tombol tanda panah atas pada keyboard di tekan, aksi yang dijalankan diatas adalah deklarasi variable dan penaruhan gambar.
-----------------------------------------------------------------------------------------------------------------------------------

  • 6.  Membuat Statement Percabangan If, Pembuatan Fungsi,  Pemanggilan Fungsi. Untuk memahami yang ini butuh nalar dan perenungan sebentar. Statement if di tandai dengan “->” lalu dapat diikuti dengan percabangan dengan menambahkan “else”. Untuk membuat fungsi tinggal ketik “namafungsi(_):-” . Dan untuk memanggilnya tinggal ketik “namafungsi(_)”. Contoh :
-----------------------------------------------------------------------------------------------------------------------------------
musuhberdiri(_):-
G_aksi_red:=1,
draw_bitmap( 610, 150, G_Tentaranembak2, _, _).
%membuat  fungsi bernama  musuhberdiri lengkap dengan isinya

musuhcek(_):-
draw_bitmap( 610, 150, G_Tentaranembak2, _, _),
wait(0.5),
draw_bitmap(550,197,G_Dorred,_,_),
G_aksi_red:=2,
%membuat fungsi musuhcek lengkap dengan isinya

(G_time=18->
G_level=2->
musuhcek(_) else musuhberdiri(_)),
%Membuat Statement Percabangan. Jika benar variable G_Time bernilai 18 dan G_Level bernilai 2 maka akan dipanggil fungsi musuhcek, jika salah maka akan dipanggil fungsi musuhberdiri.
---------------------------------------------------------------------------------------------------------------------------------


Contoh Program Lengkap Strawberry Prolog 



Berikut adalah project kuliah ane, tentang AI strawberry Prolog yang bernama battlefire. silahkan di download, project ini bebas untuk diedit dan digunakan untuk belajar.



Algoritma Yang Dipakai Dalam Game Ini
algoritma yang dipakai game battle fire ini namanya forward chaining.
apaan tuh forward chaining?? forward chaining adalah kumpulan dari statement IF yang berantai. kepintaran algoritma ini adalah outputnya tergantung dari output sebelumnya . Contoh :

1. jika waktu=10 maka AI akan mengecek level
2. jika level = sulit maka AI akan mengecek kondisi pemain
3. jika kondisi pemain = berdiri maka AI akan menembak
4. jika AI menembak maka pemain akan berkurang lifenya

disitu forward chainingnya, jadi output akhirnya tergantung dari output2 sebelumnya. algoritma forward chaining ini bisa dibilang sebagai modus ponens yang berantai.

semogaa bermanfaat

23 komentar :

DENDY FUADIN mengatakan...

kak boleh minta link download scriptnya ngga ?

Syamsul Mustaqim mengatakan...

itu ada linknya yang nyambungnya ke google drive, kalo blom punya gmail daftar aja dulu bentaran, ato kirim email ke somesoul.m@gmail.com ane kirimin

Yusnan Maulana Ridwan mengatakan...

permisi ka, maaf ka, boleh minta koding nya ga buat belajar implementasiin materi2 nya? kalo boleh tolong dikirim ke yusnanmaulanaridwan@gmail.com ya kak, soalnya ga bisa didownload kak file.spj nya, terimakasih sebelumnya ka :)

Syamsul Mustaqim mengatakan...

okee

Ramadhani mengatakan...

ka mau tanya nih, gambarnya itu ditaruh di folder mana ya ? terima kasih

Syamsul Mustaqim mengatakan...

gambarnya (.bmp) ditaro satu folder aja sama kodingan prolognya (.spj), jadi ntar pas import gambar tinggal tulis nama file gambarnya aja

contoh : G_Gambar1 is bitmap_image("Gambar1.bmp",_),

Ezhie Inside mengatakan...

Assalamu'alaikum,, ka,,, mohon maaf, tolong kirimin full script nya ke email saya
very321113@gmail.com

Syamsul Mustaqim mengatakan...

ocee

Muhammad Faris Al Fatih mengatakan...

ka, saya juga mau minta dong full scriptnya, tolong kirimin email ke zzz.fariez@gmail.com ya ka.. terima kasih..

Syamsul Mustaqim mengatakan...

udaah

Shelly mengatakan...

kak, kalo mau pakein bar buat ngurangin darah gimana ya kodingannya? saya bingung ._.

Syamsul Mustaqim mengatakan...

kalo gw kepikirannya gini nih, misalnya tentaranya mati dalam 4 hit.
bikin gambar 1 bar darah = []
jadi 4 bar darah = [][][][]

taro gambar itu di pojok kanan atas sama pojok kiri atas
misalnya tentara kita ketembak kurangin gambarnya jadi 3 bar, 2 bar, 1 bar, terus mati deh

jadi 3 bar darah = [][][]
jadi 2 bar darah = [][]
jadi 1 bar darah = []
trus mati

pake gambar aja di taro di pojok, setiap tentara nya ketembak hapus satu gambar, gitu.

Syamsul Mustaqim mengatakan...

jadi urutannya :

1. bikin gambar 1 bar darah, lewat paint juga bisa, format gambar .bmp
2. set player_life = 4
3. pada saat inisialisasi taro 4 gambar bar darah di pojok kiri atas [][][][]
4. saat tentara kita ketembak kurangin player_life=player_life-1
5. saat tentara kita ketembak hapus 1 gambar bar darah
6. saat bar darah habis tentara kita kalah
7. lakukan hal yang sama buat tentara musuh

RANJAS mengatakan...

permisi ka sebelumnya saya makasih dulu karena game yang sudah kaka share.
saya mau nanya perhitungan skor yg benar untuk game ini baiknya gimana ya?kalo saya G_score:=(G_life_blue*200)+(G_time), g_life saya jadikan 100. jadi perhitungan score disini dari tinggi ke rendah, bagaimana ya untuk perhitungan skornya dari 0 sampai yang tertinggi ?

RANJAS mengatakan...

ada lagi ka saya sebentar lagi kan mulai sidang dan presentasikan game ini.
itu dalam game AI kaka algoritma apa saja yang digunakan ? misalnya di manual book kaka tidak ada algoritma force atau greedy hanya menggunakan algoritma forward chaining
mohon penjelasannya dari algoritma algoritma dari game ini.
email saya rnd.ajah@gmail.com

Syamsul Mustaqim mengatakan...

udah dikirim lengkap yaa :D

adam julio mengatakan...

malam ka syam saya juga mau mencoba dan mempelajari full script dari program kaka tolong dikirim lewat email . ini email saya : julioblood@gmail.com

thanks before ka

Syamsul Mustaqim mengatakan...
Komentar ini telah dihapus oleh pengarang.
JC-GENERATION mengatakan...

permisi kak maaf nih boleh minta penjelasan tentang algoritma yg ada di game battle fire ini ga? buat sidang,nih tolong kirim ke email saya aja ya zenexlaruku@gmail.com thanks ya kak

herru agus mengatakan...

maaf nih kak kok di didownload sih udah masuk ke google drive tapi kagak bisa kebuka.. klo boleh tolong kirim ke email agusherrup@gmail.com makasih ya sblmnya :)

Syamsul Mustaqim mengatakan...

okeee

Endy Yunus mengatakan...

Kak saya boleh minta penjelasan dari algoritmanya gak kak? Kalo boleh tolong kirimin ke endyyunus@gmail.com

Syamsul Mustaqim mengatakan...

itu udah ada penjelasan algoritmanya, kepintarannya
1. AI bisa mendetksi apakah kita sedang berdiri atau tidak
2. AI bisa diri nunduk diri nunduk untuk memancing kita

kepintarannya make forward chaining

Poskan Komentar

Mari berkomentar dengan baik, benar, dan sopan :D

 
;