Melanjutkan postingan sebelumnya tentang strawberry prolog, kali ini akan dibahas cara membuat program di strawberry prolog agar menerima inputan dari keyboard menggunakan kode ascii. karena seperti yang kita tahu setiap tombol pada keyboard memiliki kode ascii nya tersendiri.
oke langsung ajah
Berikut
langkah – langkah beserta logika programnya :
1. Buka Program Strawberry Prolog, lalu klik File => new =>
Strawberry Project.
2. Lalu
masukan kode pada listing diatas, seperti biasa
untuk menjelaskan program di atas saya membagi kode sumbernya dengan berapa
blok. Untuk blok yang pertama adalah sebagai berikut
?-
G_XU := 0,
G_YU := 0,
window(_,_,func(_),"Ascii",30,30,550,500).
potongan program di atas berguna untuk mendeklarasikan
variable G_XU sebagai sumbu X dan G_YU sebagai sumbu Y. lalu deklarasi fungsi
func(_), setelah itu menentukan besar dan letak windows yang akan tampil saat
running program.
3. Berikut ini blok perintah untuk menurun kan objek jika kita menekan
tombol arah bawah pada keyboard.
%down start
func(key_down(40,_)):- => deklarasi
fungsi func untuk menerima inputan dari keyboard, dengan kode ascii 40 yang
berarti arah bawah.
pen(16,rgb(255,255,255)), =>
menentukan warna dan tebal border.pada perintah ini lingkaran akan berwarna
putih. Warna putih ini berfungsi untuk menghapus warna aslidari lingkaran yang
dijalankan.
ellipse(40+G_XU,40-G_YU,70+G_XU,70-G_YU),=> mencetak lingkaran ,dan deklarasi letaknya. Nilai – nilai
variabel yang di dekalrasikan ini yang nantinya akan berubah – ubah seiring
perpindahan koordinat lingkaran tersebut.
(G_YU = -360 -> G_YU := G_YU => berfungsi
sebagai percabangan. Pertama akan ditanya jika G_YU = - 360 yang
merupkan batas bawah akhir dari pergerakkan lingkaran, jadi variabel G_YU tidak
akan ada
penambahan sehingga lingkaran tidak bisa dipindahkan lagi ke bawah.
else G_YU := G_YU-60),=> Jika kondisi tersebut salah, maka
lingkaran masih dapat di pindahkan ke bawah sebesar - 60.
pen(16,rgb(255,0,0)), => perintah ini lingkaran akan berwarna merah. Lingkaran inilah yang
nantinya akan di cetak setiap kali kita menekan tombol arah kanan.
ellipse(40+G_XU,40-G_YU,70+G_XU,70-G_YU).=> kode ini lah yang akan di cetak
pada output dengan warna merah . jadi setiap kita menekan tombol arah ke bawah
maka ada lingkaran yang akan di cetak dan berwarna merah.
Output :
4. Blok berikut ini untuk arah kanan pada keyboard
%right start
func(key_down(39,_)):-
pen(16,rgb(255,255,255)),
ellipse(40+G_XU,40-G_YU,70+G_XU,70-G_YU),
(G_XU = 420 -> G_XU := G_XU
else G_XU := G_XU+60),
pen(16,rgb(255,255,0)),
ellipse(40+G_XU,40-G_YU,70+G_XU,70-G_YU).
%right end
Output :
5. Kode
berikutnya digunakan untuk memindahkan/ menggerakkan lingkaran ke arah atas.
Kodenya seperti berikut.
%up start
func(key_down(38,_)):-
pen(16,rgb(255,255,255)),
ellipse(40+G_XU,40-G_YU,70+G_XU,70-G_YU),
(G_YU = 0 -> G_YU := G_YU
else G_YU := G_YU+60),
pen(16,rgb(255,0,255)),
ellipse(40+G_XU,40-G_YU,70+G_XU,70-G_YU).
%up end
Output :
6. Blok
terakhir digunakan untuk memindahkan/ menggerakkan lingkaran ke arah kiri.
%left
start
func(key_down(37,_)):-
pen(16,rgb(255,255,255)),
ellipse(40+G_XU,40-G_YU,70+G_XU,70-G_YU),
(G_XU
= 0 -> G_XU := G_XU
else
G_XU := G_XU-60),
pen(16,rgb(0,0,255)),
ellipse(40+G_XU,40-G_YU,70+G_XU,70-G_YU).
%left
end
Output :
Source code :
?-
G_XU := 0,
G_YU := 0,
window(_,_,func(_),"LA 2 PKB",30,30,550,500).
%down start
func(key_down(40,_)):-
pen(16,rgb(255,255,255)),
ellipse(40+G_XU,40-G_YU,70+G_XU,70-G_YU),
(G_YU = -360 -> G_YU := G_YU
else G_YU := G_YU-60),
pen(16,rgb(255,0,0)),
ellipse(40+G_XU,40-G_YU,70+G_XU,70-G_YU).
%down end
%right start
func(key_down(39,_)):-
pen(16,rgb(255,255,255)),
ellipse(40+G_XU,40-G_YU,70+G_XU,70-G_YU),
(G_XU = 420 -> G_XU := G_XU
else G_XU := G_XU+60),
pen(16,rgb(255,255,0)),
ellipse(40+G_XU,40-G_YU,70+G_XU,70-G_YU).
%right end
%up start
func(key_down(38,_)):-
pen(16,rgb(255,255,255)),
ellipse(40+G_XU,40-G_YU,70+G_XU,70-G_YU),
(G_YU = 0 -> G_YU := G_YU
else G_YU := G_YU+60),
pen(16,rgb(255,0,255)),
ellipse(40+G_XU,40-G_YU,70+G_XU,70-G_YU).
%up end
%left start
func(key_down(37,_)):-
pen(16,rgb(255,255,255)),
ellipse(40+G_XU,40-G_YU,70+G_XU,70-G_YU),
(G_XU = 0 -> G_XU := G_XU
else G_XU := G_XU-60),
pen(16,rgb(0,0,255)),
ellipse(40+G_XU,40-G_YU,70+G_XU,70-G_YU).
%left end
Bagikan :
0 Response to "Menggerakkan Objek dengan Tombol Arah di Strawberry Prolog"
Posting Komentar