Anda di halaman 1dari 9

Kornjačina grafika

(Turtle graphics)
• Prelazak iz tekstualnog režima rada u grafički
režim rada na Turbo PROLOG-u se vrši pomoću
predikata graphics. Kada se pređe u grafički način
rada ekran se obriše i "kornjača" (turtle) se
postavlja u sredinu ekrana. Pomoću ugrađenih
standardnih predikata može se odrediti pozicija
kornjače, pravac i smer njenog pomeranja, kao i
mogućnost crtanja, tj. ostavljanja traga njenog
kretanja u određenoj boji.

• U ovu grupu spadaju predikati: forward, back,


right, left, pendown, penup, pencolour.
Primer 1.

Prikazati na sredini ekrana kvadrat u koji je


upisan drugi kvadrat čija temena polove
stranice većeg kvadrata. Prema tome, ako se
sa a obeleži dužina stranice većeg kvadrata,
onda se dužina stranice manjeg kvadrata
koja je obeležena sa b, dobija: b = a /
2 .
predicates
grafik.
dkvadrat(integer).
kvadrat(integer).
goal
grafik.
clauses
grafik :- graphics(2,1,4), dkvadrat(2000).
dkvadrat(V) :-
kvadrat(V), H=V/2,
forward(H), left(45),
D=72*S/10, kvadrat(D).
kvadrat(S) :-
forward(S), left(90),
forward(S), left(90),
forward(S), left(90),
forward(S), left(90).
Primer 2.
Neka se zadatak sastoji u prikazivanju kruga na ekranu.
Predikat za crtanje kruga može se obeležiti sa krug i
realizovati na sledeći način:
predicates
krug
goal
graphics(2,1,0), krug.
clauses
krug:-forward(100), right(1), krug.
Primer 3.

Prikazati na ekranu jednakostranični mnogougao. Broj


uglova unosi korisnik.

predicates
grafik.
rekurz(integer,integer).
goal
grafik.
clauses
grafik :-
write("unesite broj uglova: "),
readint(En), graphics(2,1,4),
U = 360 / En,rekurz(En,U).
rekurz(0,_).
rekurz(N,U) :-
forward(10000),
left(U), N1 = N - 1, rekurz(N1,U).
Ako se za broj uglova (En) unese 3 na ekranu računara će
biti prikazan jednakostranični trougao. Kada se za broj
uglova unese 4 (En=4) biće prikazan kvadrat, za En=5
prikazaće se jednakostranični petougaonik, za En=6 biće
prikazan jednakostranični šestougaonik, itd.
Primer 4.
Prikazati na ekranu zvezdasti mnogougaonik.
predicates
grafik.
unos(integer,integer).
rekurz(integer,integer,integer,integer).
goal grafik.
clauses
grafik :- unos(U,S), graphics(2,1,4), rekurz(S,U,0,1).
unos(144,10000).
rekurz(_,_,_,0).
rekurz(L,U,SU,_) :- forward(L), left(U),
SU1 = (SU + U) mod 360, rekurz(L,U,SU1,SU1).
Program će za date
argumente predikata unos
na ekranu nacrtati
petokraku.

Kada se za argumente
ovog predikata unesu
vrednosti
unos(190,10000)
na ekranu računara će se
prikazati sledeća slika.

Anda mungkin juga menyukai