PENDEKLARASIAN VARIABEL PADA VISUAL PROLOG
Transcript of PENDEKLARASIAN VARIABEL PADA VISUAL PROLOG
PENDEKLARASIAN VARIABEL PADA VISUAL PROLOG
Variabel pada visual prolog dideklarasikan pada bagian facts, cara pendeklarasikan sebagai berikut
Untuk integer
x:integer:=0.Y:integer:=0.
Untuk strings: string:=””.dan untuk pemanggilannya sendiri, sebuah variabel pada visual prolog dipanggil dengan cara sebagai berikut.. misal, kita ingin menambahkan variabel x dengan nilai 50..x:=x+50,
dan jika ingin ditambahkan dengan variabel lainx:=x+y,
Perlu diingat, harus menggunakan := (titik dua sama dengan). Dan jika string sama dengan bahasa pemrograman pada umumnya, nilai diikuti dengan tanda kutipDan perlu di ingat juga statement pada visual prolog selalu diakhiri dengan tanda (,) (koma)..kecuali pada akhir method, menggunakan tanda (.) titik, seperti contoh berikut..
onTimer(_Source, _TimerId):-if (d>6) thend:=1end if,
dadu_ctl:setText(tostring(d)), d:=d+1.
d:=d+1. Merupakan akhir method, sehingga menggunakan titik
dadu_ctl:setText(tostring(d)), merupakan statement dalam blok sehingga diakhiri dengan koma
d:=1 merupakan statement didalam if, dan di akhir bagian if, sehingga dideklarasikan tampa , koma ataupun . titik lebih jelasnya di bahas pada bagian if (pengkondisian visual prolog)
PERULANGAN FOR PADA VISUAL PROLOG
pada program diatas, pengocokan dadu menggunakan foreach untuk perulangannya, dan menggunakan timer untuk menggerakan perputaran
foreach, dan dibawah ini yang dibahas hanya untuk pembuatan foreach.
Perulangan pada visual prolog sama seperti perulangan pada bahasa pemrograman pada umumnya, terdapat beberapa jenis seperti for, while dan until. Namun untuk for pada visual prolog, memiki nama yang berbeda yaitu foreach, berikut stetement foreach pada visual prolog.
foreach I=std::fromTo(1,6) do edit_ctl:setText(tostring(I))end foreach.
Penjelasan : foreach I=std::fromTo(1,6) do %artinya dilakukan perulangan dari 1 sampai 6, dan nilainya ditampung kedalam variabel (I) dan akan digunakan pada statement edit_ctl:setText(tostring(I)) nilai 1-6 akan tercetak pada edit_ctl, namun yang akan terlihat dicetak hanya angka 6, saja karena angka1-5 telah tertiban oleh 6, intinya dengan coding diatas kita telah melakukan perulangan sebanyak 6 kali, jika ingin melihat secara jelas, bisa dilihat di program selanjutnya
foreach I=std::fromTo(1,6) dostdIO::write (“coba”),
stdIO::write (I) end foreach.
Pada bagian ini akan terlihat lebih jelas perulangannya karena nilai I akan tercetak pada message.End foreach. sendiri merupakan akhir dari perulangan foreach padavisual prolog,
Dan perlu diingat jika didalam blok foreach ada beberapa statement, jika masih ada statement selanjunya seperti stdIO::write (“coba”), maka kita harus menggunakan (,) koma dibagian akhir. Dan untuk statement terakhir sebelum end foreach, ditulis tanpa tandakoma atau titik.
Sedangkan untuk perulangan while pada visual prolog, menggunakan statement sebagai berikut, saya mendapatkan coding berikut dari forum, dan seya sendiri belum mencobanya, dan kurang lebih seperti ini
predicates do_while:(integer Loop_Condition)procedure(i).clauses do_while(10):-!. % Put condition that should end the loop first . do_while(N):- stdIO::write (N), % Do your job here NewN=N+1 , % change Loop conditional Value do_while(NewN). % Loop Return
KONDISI IF dan IF BERSARANG PADA VISUAL PROLOG
If pada visual prolog memiliki struktur yang sama pada bahasa permorgraman pada umumnya, namun penulisannya sedikit membingungkan karena tidak seperti bahasa pemrograman lainnya,
seperti java yang akhir dan awal statement menggunakan { } kurungkurawal, atau visual basic menggunakan then dan end if.
If pada visual prolog lebih mirip dengan if pada visual basic, namun ada ketentuan khusus seperti penmpatan koma dan tanpa koma di bagian tertentu. Langsung saja kita lihat contoh sederhananya.
Cobaif():- if pemain2="B" then pemain1:="A" end if.
Pada contoh di atas, contoh untuk if yang terdapat dalam sebuaah method, kondisinya adalah jika pemain 2 memiliki nilai B, maka pemain1 akan diberi nilai A, pada statement pemain1:="A" tidak di akhiri dengan tanda (,) koma melainkan tanpa tanda, karena posisinya di bagian akhir sebelum end if.Berbeda jika ada beberapa statement didalamnya..seperti contoh berikut..
Cobaif():- if pemain2="B" then pemain1:="A",
pemain3:=”C”,x:=10
end if.
Jika ada beberapa statement, maka penulisan statement sebelumnya diakhiri dengan tanda (,) koma. Dan statement terakhir tepat sebelum end if, diakhiri tanpa tanda koma.Akhir penulisan end if, jika dalam satu method cobaif():- terdapat beberapa kondisi if, seperti contoh berikut..
Cobaif():- if pemain2="B" then %if pertama pemain1:="A",
pemain3:=”C”,
x:=10 end if,
if pemain3="A" then %if kedua pemain1:="C",
pemain3:=”B”,x:=10
end if.
maka penulisan akhir if pertama menggunakan (,) koma dan if terakhir di akhiri dengan tanda (.) titik, if diatas bukan merupakan if else ataupun if bersarang, melainkan ada dua kondisipada satu method.
Karena jika if else if else -> jika salah satu kondisi (konsisi teratas) terpenuhi, maka kondisi teratas di eksekusi, kondisi dibawahnya tidak akan tereksekusi.
sedangkan jika terdapat 2 atau lebih if -> jika kondisi teratas terpenuhi akan di eksekusi, jika kondisi dibawah juga terpenuhi, maka kondisi kedua juga akan di eksekusi tidak berdasarkan kondisi diatasnya memenuhi kondisi atau tidak.
Sedangkan jika if bersarang -> jika kondisi (1) teratas terpenuhi, maka akan mengeksekusi kondisi (2) didalamnya lagi, dan jika kondisi didalamnya ke (3) terpenuhi juga, maka akan lanjut mengeksekusi, dan jika kodisi (1) sudah tidak terpenuhi, maka kondisi (2) dan (3) tidak akan dicocokkan kondisinya.
Untulk lebih jelasnya, saya lampirkan statement dan penjelasannyasebagai berikut. if pemain2="B" then pemain1:="A", xx:=560, temp:=player1
else pemain2:="A", xx:=565,
temp:=player2 end if.
Pada statement di atas merupakan if –else, dimana statement sebelum else dan sebelum end if ditulis tanpa diakhiri dengan tanda koma,
Jika untuk statement if – elseif – else- end if di tulis sebagai berikut.
if pemain2="B" then pemain1:="A", xx:=560, temp:=player1
else if pemain2:="A", xx:=565, temp:=player2else pemain3:="A", xx:=570, temp:=player3end if end if.
Setiap ada penambahan else if, maka ditambahkan juga end if di bagian akhir, penulisan end if tanpa diakhiri tanda koma. Seperticontoh diatas.
Jika untuk statement if bersarang di tulis sebagai berikut. if pemain2="B" then %if pertama pemain1:="A", xx:=560, temp:=player1, if %if bersarang didalam if pertama (if kedua) pemain2:="A", xx:=565,
temp:=player2else %else untuk (if kedua) pemain3:="A",
xx:=570, temp:=player3end if end if.
Dimana bedanya..? sekilas memang tampak mirip, namun dalam if bersarang penulisan statement sebelum if kedua, menggunakan tandakoma, temp:=player1, jika tanpa tanda koma akan memiliki arti yang berbedadan if kedua ditulis tanpa menggunakan else, karena jika menggunakan else akan memiliki arti yang berbeda.
MEMBUAT BUTTON dan TEXT CONTROL, PADA VISUAL PROLOG
Membuat button pada visual prolog cukup sederhana, tinggalklik button pada bagian control, dan tarik ke frame, dan untuk mengaktifkannya tinggal klik 2 kali button yang ingin di aktifkan, maka akan muncul lembar kerja penulisan codingnya namafile.pro, dan tampil coding sebagai berikut..
predicates onPushButton1Click : button::clickResponder.clauses onPushButton1Click(_Source) = button::defaultAction.
Jika ingin mengaktifkannya, maka rubah tanda akhir button::defaultAction. Menjadi button::defaultAction:- titik diganti dengan titik dua dan strip, selanjutnya masukkan method dan fungsi dari button tersebut, seperti contoh di bawah.
predicates onMainkanClick : button::clickResponder.clauses onMainkanClick(_Source) = button::defaultAction:- k:=1, % pendeklarasian variabel player(). % pemanggilan method player (jangan lupa diakhir bagian di tulis tanda titi.
Demikian juga dengan textxontrol, radiobutton yang lainnya, untukradio button agak sedikit berbeda, akan dibahas pada judul yang lain
MEMBUAT dan MENGAKTIFKAN RADIO BUTTON PADA VISUAL PROLOG
Membuat radio button pada visual prolog cukup sederhana, tinggal klik radio button pada bagian control, dan tarik ke form, dan untuk mengaktifkannya masuk codingnya namafile.pro dan cari nama radio button yang telah kita buat, kita bisa mencarinya pada bagian facts,
facts p4 : radioButton.
Ingat2 denga jelas namanya, karena akan kita gunakan untuk melakukan berbagai optimasi, dari mulai mengaktifkan, menonaktifkan, mengkondisikan, sampai melakukan perpindahan posisi.
Yang pertama adalah mengaktifkan radio button ketika suatu kondisi terpenuhi, sebagai contoh dibawh ini..
if player1=”A” thenp4:setRadioState(radioButton::checked())
elsep4:setRadioState(radioButton::unchecked())
end if
ketika kondisi if terpenuhi, maka radio button p4 akan di aktifkan (menggunakan checked, dan jika ridak maka akan dinonaktifkan (menggunakan unchecked)
pada bagian diatas, jika memenuhi kondisi, maka di aktifkan, padabagian ini sebaliknya yaitu Jika radio button di klik atau di aktifkan, maka akan mengeksekusi suatu kondisi.Berikut statementnya..
RadioState= radioButton1_ctl:getRadioState(),ifRadioState= radioButton::checked()then stdio::write("YA")else stdio::write("TIDAK")end if.
MEMBUAT TIMER VISUAL PROLOG
Membuat timer pada visual prolog cukup sederhana, cukup mengaktifkan fungsing onTimerListener dan memasukkan sedikit coding, fungsi dari timer sendiri bisa dimanfaatkan untuk berbagai keperluan, seperti animasi, perputaran nilai, pergerakankoordinat, dll..tergantung kemampuan kita dalam membuat kondisi untuk timer.
Pertama-tama, buka propertis project, kemudian pilih tab event, seperti gambar diatas.Kemudian cari TimerListener, dan aktifkan timerListener menjadi OnTimer seperti gambar diatas.Maka secara otomatis, akan tampil source code predicates dan clauses pada project kita..source code yang tampil adalah sebagaiberikut
predicates onTimer : window::timerListener.clauses onTimer(_Source, _TimerId).
Selanjutnya modifikasi source code menajadi
predicates onTimer : window::timerListener.clauses onTimer(_Source, _TimerId):- not(isErroneous(timerNum)), !, onTimer(_Source, _TimerId).
Selanjutnya kita deklarasikan variabel baru yang nantinya akan digunakan untuk mengaktifkan timer,
facts timerNum : timerID := erroneous. delay : integer := 25.
Kita buat pada bagian facts, timerNum : timerID := erroneous. Untuk pendeklarasian fungsi timer, dan nilai delay : integer := 25. Sebagai delay waktu untuk timer, semakin besar nilainya semakin lambat delay timer, dan semakin kecil, maka akan semakin cepat delay timer.
Selanjutnya untuk mengaktifkan timer, digunakan statement berikut, Bisa kita tempatkan didalam blok button, untuk mengaktifkan timer.
timerNum := timerSet(delay).
Dan untuk menghentikan timer, menggunakan statement berikut timerKill(timerNum), timerNum := erroneous.
Dan untuk source code membuat dadu berputar 1 sampai 6, source codenya sebagai berikut
onTimer(_Source, _TimerId):- not(isErroneous(timerNum)), !,
if (d>6) thend:=1end if, dadu_ctl:setText(tostring(d)), d:=d+1. onTimer(_Source, _TimerId).
Kondisi diatas jika dadu lebih dari 6, maka akan megembalikan nilainya menjadi 1.
LALU GIMANA MEMBUAT TIMER LEBIH DARI 1 DALAM 1 FORM...???
caranya sederhana, tapi agak ribet.. berikut langkah2nya..
pertama, buat blok timer dengan nama yang berbeda dari timer yangsebelumnya kita buat..
onTimer2(_Source, _TimerId):- not(isErroneous(timerNum2)), !,if (d>6) thend:=1end if, dadu_ctl:setText(tostring(d)), d:=d+1. onTimer2(_Source, _TimerId).
selanjutnya ditambahkan pendeklarasian variabel baru untuk timer2..
facts timerNum2 : timerID := erroneous. % timer 1 delay : integer := 25. % timer 1
timerNum2 : timerID := erroneous. % timer2
delay2 : integer := 25. % timer2 jika delaynya berbeda
Selanjutnya untuk mengaktifkan timer, sama seperti sebelumnya, namun kali ini ditambahkan statement addTimerListener
addTimerListener(onTimer2), % penambahan statement timerNum2 := timerSet(delay).
Dan untuk menghentikan timer yang ke-dua, menggunakan statement berikut timerKill(timerNum2), timerNum2 := erroneous.
LALU GIMANA KALAU MENGGUNAKAN 2 FORM DENGAN TIMER YG BERBEDA..?
tinggal lakukan langkah diatas, namun di tempatkan di source codeform yang kedua.
MEMASUKKAN BACKGORUND ATAU GAMBAR PADA VISUAL PROLOG
Untuk memasukkan gambar kedalam form visual prolog, pertama-tama buka propertis, kemudian pilih tab event, dan cari paintResponder, lalu aktifkan menjadi OnPaint, maka secara otomatis akan tampil source code sebagai berikut
predicates onPaint : drawWindow::paintResponder.clauses onPaint(_Source,_Rectangle, GDI).
Selanjutnya lakukan modifikasi menjadi coding berikut..
predicates onPaint : drawWindow::paintResponder.clauses
onPaint(_Source,_Rectangle, GDI):- GDI:clear(color_white), if isErroneous(mem_pic), Dir= directory::getCurrentDirectory(), FileName=string::concat(Dir,"\\ular.bmp"), file::existFile(FileName) then try mem_pic:=vpi::pictLoad(fileName(FileName),1024,550,0x0020) catch _ do succeed() end try end if, if not(isErroneous(mem_pic)) then GDI:pictdraw(mem_pic,pnt(0,0),rop_SrcCopy) end if.
Selanjutnya aktifkan variabel mem_pic pada bagian facts
factsmem_pic:picture:=erroneous.
Untuk memasukkan gambar, buat gambar dengan format bmp dan disimpan ke folder EXE pada project kita..ingat.. folder EXE, kemudian ganti ular.bmp menjadi nama gambar yang kita buat.
FileName=string::concat(Dir,"\\ular.bmp"), %ganti ular bmp
Pada contoh diatas menggunakan bmp, agar gambar background lebih bagus, karena jika menggunakan jpg resolusinya kurang baik.
Selanjutnya untuk menentukan ukuran, edit statement berikut
mem_pic:=vpi::pictLoad(fileName(FileName),1024,550,0x0020)
1024 merupakan panjang, dan 550 lebarnya, jadi sesuaikan dengan gambar yang kita miliki. 0x0020 sepertinya skla pixel, tidak perlu dirubah
Tips selanjutnya..jika kita ingin membuat background yang sesuai dan sangat pas dengan program yang kita buat.. caranya ialah.. jalankan program yang kita buat, kemudian printscreen, dan dicopyke aplikasi desain grafis layout seperti adobe illustrator, atau coreldraw..
Pada contoh diatas saya menggunakan coreldraw, dan printscreen sudah dicopy ke lembar kerja coreldraw, kemudian dibuat gambar yang sesuai dengan ukuran printscreen aplikasi, gambar sesuai dengan keinginan kita, untuk project yang saya buat, hingga hasilnya seperti ini.
Hasil di atas sudah sesuai dengan ukuran layar, untuk merubahnya menjadi file bmp, di corel draw
tekan ctrl+E pada keyboard, kemudian ada pilihan file save type, kita pilih bmp.
SELESAI.. maka gambar bisa kita masukkan ke visual prolog, untuk menyesuaikan tampilannya, edit pada codingmem_pic:=vpi::pictLoad(fileName(FileName),1024,550,0x0020)
Panjang dan lebarnya sesuaikan dengan kebutuhan.
TEXTFIELD ATAU EDIT CONTROL PADA VISUAL PROLOG
Penulisan textfield atau edit control sangan sederhana, namun jika tidak tahu cara penulisannya, kita nggak bisa buat apa-apa..
edit_ctl:setText(y),
statement diatas untuk menaruh variabel y bertipe data string kedalam edit_ctl,
edit_ctl:setText(tostring(x)),
statement diatas untuk menaruh variabel x bertipe data integer kedalam edit_ctl,
yy := edit_ctl:getText(),
statement diatas untuk mengambil nilai edit_ctl, dengan type datastring kedalam variabel yy
xx := toTerm(edit_ctl:getText()),
statement diatas untuk mengambil nilai edit_ctl, dengan type datainteger kedalam variabel xx
edit_ctl:setEnabled(true), edit_ctl:setEnabled(false),
statement diatas digunakan untuk mengaktifkan atau menonaktifkan textfield
PEMBUATAN KOORDINAT PADA VISUAL PROLOG
Koordinat pada visual prolog, biasanya lebih digunakan untuk game, terutama untuk pergerakan dari obejek yang ingin kita gerakkan, entah ketika button di klik, radio button di klik, atauketika timer diaktifkan. Berikut cara pendeklarasiannya..
p1_ctl:setPosition(10, 20),
statement diatas digunakan untuk menggerakkan posisi dari radio button atau textfield. nilai 10 dan 20 bisa dimodifikasi dengan variabel yang kita buat,
p1_ctl:setPosition(x, y),
nilai x dan y sifatnya dinamis, sehingga posisi akan berubah sesuai dengan perubahan nilai variabel yang kita lakukan.
X digunakan sebagai pergerakan posisi objek ke kanan dan ke kiri.y digunakan sebagai pergerakan posisi objek ke atas dan ke bawah.
MEMBUAT COMMOND DIALOG/KOTAK PEMBERITAHUAN PADA VISUAL PROLOG
Untuk membuat commond dialog seperti diatas, dapat menggunakan statement dibawah..
vpiCommondialogs::note("Banyaknya pemain maksimal 4"),
singkat, karena yang saya tahu baru ini..