Char adalah sebuah string dengan satu karakter panjang yang
hanya merupakan salah satu
ditekan. Pengulangan adalah integer yang mengatakan berapa kali hal ini arang
ditekan (jika Anda terus tombol ke bawah kemudian Pengulangan dapat lebih
besar dari satu). Jika Anda
ingin menangkap kunci khusus seperti panah kemudian
gunakan key_down pesan.
CharCode adalah bilangan bulat yang sama dengan kode tombol ditekan. Pengulangan
adalah integer yang mengatakan berapa kali tombol ini ditekan
(jika Anda terus tombol ke bawah kemudian Pengulangan dapat
lebih besar dari satu). Lihat juga message_flags.
Listing :
?-
G_X1:=0,
G_X2:=G_X1,
G_Y1:=0,
G_Y2:=G_Y1,
P1:=0,
P2:=0,
window(_,_,win_func(),"Move",500,200,300,300).
win_func(key_down(39,_)):-
(G_X1 < 200 -> G_X2 := G_X1,
G_X1:=G_X1+1), draw2.
win_func(key_down(37,_)):-
(G_X1 < 200 -> G_X2 := G_X1,
G_X1:=G_X1-1), draw2.
win_func(key_down(38,_)):-
(G_Y1 < 300 -> G_Y2 := G_Y1,
G_Y1:=G_Y1-1), draw3.
win_func(key_down(40,_)):-
(G_Y1 < 300 -> G_Y2 := G_Y1,
G_Y1:=G_Y1+1), draw3.
win_func(paint):- draw.
draw:-
P1:=G_X1*3+10,
ellipse(P1,0,P1+10,10),
P2:=G_Y1*3+10,
ellipse(0,P2,10,P2+10).
draw2:-
update_window(_),
P1:=G_X1*3+10,
ellipse(P1,0,P1+10,10).
draw3:-
update_window(_),
P2:=G_Y1*3+10,
ellipse(0,P2,10,P2+10).
Logika :
Dalam
program diatas kita akan membuat sebuah titik yang dimana titik-titik (ellipse)
tersebut dapat bergerak kesemua arah baik kiri, kanan, atas, dan bawah. Yang
kita buat pertama-tama adalah windownya, dimana kita membuat ukuran window yang
disesuaikan dengan listing :
window(_,_,win_func(),"Move",500,200,300,300).
Maka akan tampil window yang berukuran seperti
perintah diatas
Selanjutnya
kita bisa membuat pendeklarasian atau beberapa pembeda kata kunci agar setiap fungsi yang dibuat
mempunyai andil sendiri dalam setiap logikanya :
G_X1:=0,
G_X2:=G_X1,
G_Y1:=0,
G_Y2:=G_Y1,
P1:=0,
P2:=0,
Selanjutnya
kita buat fungsi dari tombol-tombol tersebut agar lingkaran yang kita buat
dapat bergerak sesuai tuts yang kita tekan ada beberapa charcode yang saya
gunakan karena kita akan membuat lingkran tersebut bergerak
keatas,kebawah,kekiri, dan kekanan dengan listing dibawah ini :
win_func(key_down(39,_)):-
(G_X1 < 200 -> G_X2 := G_X1,
G_X1:=G_X1+1), draw2.
Kanan
Ini adalah fungsi untuk
tuts menggerakan ellipse kearah kanan maka setiap “G_X1:=G_X1+1” atau
penjelasannya setiap ditekan dia akan bertambah satu satu kedepan(kekanan)namun
saya menggunakan ellipse yang saya tandakan dengan draw2
win_func(key_down(37,_)):-
(G_X1 < 200 -> G_X2 := G_X1,
G_X1:=G_X1-1), draw2.
Kiri
Ini adalah fungsi untuk
tuts menggerakan ellipse kearah kanan maka setiap “G_X1:=G_X1-1” atau
penjelasannya setiap ditekan dia akan berkurang satu satu kebelakang(kekiri)
namun saya menggunakan ellipse yang saya tandakan dengan draw2
win_func(key_down(38,_)):-
(G_Y1 < 300 -> G_Y2 := G_Y1,
G_Y1:=G_Y1-1), draw3.
Atas Ini
adalah fungsi untuk tuts menggerakan ellipse kearah kanan maka setiap
“G_Y1:=G_Y1-1” atau penjelasannya setiap ditekan dia akan berkurang satu satu
keatas namun saya menggunakan ellipse yang saya tandakan dengan draw3
ditambahkan saya menggunakan deklarasi yang kedua bukan yang “G_X1:=G_X1-1”
lagi
win_func(key_down(40,_)):-
(G_Y1 < 300 -> G_Y2 := G_Y1,
G_Y1:=G_Y1+1), draw3.
Bawah, Ini adalah fungsi untuk tuts menggerakan ellipse kearah kanan maka
setiap “G_Y1:=G_Y1+1” atau penjelasannya setiap ditekan dia akan berkurang satu
satu keatas namun saya menggunakan ellipse yang saya tandakan dengan draw3
ditambahkan saya menggunakan deklarasi yang kedua bukan yang “G_X1:=G_X1+1”
lagi
win_func(paint):- draw.
draw:-
P1:=G_X1*3+10,
ellipse(P1,0,P1+10,10),
P2:=G_Y1*3+10,
ellipse(0,P2,10,P2+10).
Diatas
adalah lising yang saya gunakan untuk membuat ellipse, seperti yang saya
jelaskan diatas saya menggunakan 2 ellipse yang berbeda agar bisa terlihat
jelas pergerakannya
draw2:-
update_window(_),
P1:=G_X1*3+10,
ellipse(P1,0,P1+10,10).
draw3:-
update_window(_),
P2:=G_Y1*3+10,
ellipse(0,P2,10,P2+10).
Selanjutnya
listing diatas menjelaskan bahwa setiap tuts yang ditekan akan berpindah atau
bergeser untuk iu agar menampilkan kembali setiap ellipse tersebut kita gunakan
perintah update agar setiap tust yang ditekan dia akan mengupdate titik
tersebut sebanyak tekanan pada tuts .
Sekian
penjelasan saya semoga dapat dipahami terimakasih.
tampilan akhir :
maaf, sebelumnnya. kok titiknya gak mau gerak ?
BalasHapus