Menggerakkan Objek dengan Tombol Arah di Strawberry Prolog

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 :
       Menggerakkan Objek dengan Tombol Arah di Strawberry Prolog
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           

Menggerakkan Objek dengan Tombol Arah di Strawberry Prolog Untuk kode diatas sama logikanya dengan blok down , bedany kode diatas memakai kode ASCII 39, yang ,menunjukkan arah kanan pada keyboard. Karena arah kanan maka koordinat yang akan berubah adalah titik X . G_XU = 420 adalah batas palingk kanan untuk pergerakkan lingkaran. Jika belom sampai batas paling akhir kanan maka lingkaran akan bergerak kekanan sebesar 60 setiap menekan tombola rah kanan.selain itu untuk membedakan dari lingkaranyang kea rah bawah , linkgakaran ini bewarna kuning
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
Sama halnya dengan kode ke bawah dan ke kanan, bedanya kode ASCII yang digunakan ialah 38 yang bernilai masukan keyboard arah atas. Arah atas ini sama seperti logika araah bawah , bedanya hanya pada batas sumbu Y. pada arah atas ini batas dari sumbu Y paling atas adalah 0. Jika belom sampai 0 maka sumbu y akan bertambah sebesar 60. Lingkaran berwarna ungu.
Output :
 Menggerakkan Objek dengan Tombol Arah di Strawberry Prolog
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
Sama halnya dengan kode ke kanan, bedanya kode ASCII yang digunakan ialah 37 yang bernilai masukan keyboard arah kiri. Selain itu disini digunakan variabel dengan sumbu X, dengan batas pergerakan lingkaran dititik 0 terhadap sumbu X, dan perpindahannya 60 ke arah kiri. Lingkaran bewarna biru
Output :

 Menggerakkan Objek dengan Tombol Arah di Strawberry Prolog
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 :





Artikel Terkait

0 Response to "Menggerakkan Objek dengan Tombol Arah di Strawberry Prolog"

Posting Komentar