Professional Documents
Culture Documents
Prednaska 02
Prednaska 02
Prednáška 02
Interaktívne programovanie a vizuálne modelovanie – Imagine
Doplňujúce
poznámky:
Globálne premenné Môžu mať napr. číselnú hodnotu, hodnotou však môže byť aj
obrázok – napr. zo súboru:
? make "potvorka loadImage "bug3
do premennej potvorka načíta obsah súboru bug3.LGF
Tvar korytnačky (budeme skúmať neskôr podrobnejšie)
? setShape :potvorka
premennej
? setShape "bug3
? setShape [] štandardný tvar (korytnačka)
[fd 100]
? make "A 100
? sh :A
100
? sh [:A :A]
[:A :A]
? sh [:A :A "A]
[:A :A "A]
? sh "any ; toto sa postupne objasní
any
? sh any
any
1 Príkaz polygon
polygon návod-na-kreslenie
Korytnačka nakreslí vo svojom mieste vyplnený polygón pomocou vstupného návodu na kreslenie. Obrys polygónu sa
nakreslí momentálnou farbou pera a hrúbkou pera korytnačky a je vyplnený momentálnou farbou výplne.
(Ak obrys polygónu nie je uzavretý (t.j. ak posledný bod nie je identický s prvým), Imagine ho uzatvorí pridaním jednej koncovej čiary. Preto polygon
[repeat 2 [fd 100 rt 120]] nakreslí to isté ako polygon [repeat 3 [fd 100 rt 120]].)
Príklady:
? setFc "darkBlue
? polygon [repeat 3 [fd 100 rt 120]]
Nastavenia farieb (a ďalšie veci) môžeme urobiť aj na začiatku
návodu na kreslenie, pozri nižšie.
Alebo pekný vyplnený štvorec – bez použitia príkazu fill:
? polygon [setPw 3 setPc any setFc any repeat 4
[fd 50 rt 90]]
to plnyStvorec :velkost
polygon [setPc any
setFc any
repeat 4 [fd :velkost rt 90]]
end
to plnyStvorec :velkost
if :velkost = "any [make "velkost 5 + random 50]
polygon [setPc any
setFc any
repeat 4 [fd :velkost rt 90]]
end
pokus:
vypnem pero a urobím takýto nekonečný rekurzívny
vlastný príkaz:
skoč na ľubovoľnú pozíciu a nakresli ľubovoľne veľký vyplnený štvorec
to skac
setPos any
vyplnenyStvorec any
skac
end
teraz do príkazu skac pridajme takúto podmienku:
vyplneny štvorec nakresli iba vtedy, ak si od stredu strany vzdialeny
aspon 100 krokov
to skac
setPos any
if abs pos > 100 [vyplnenyStvorec any]
skac
end
operácia pos vrátila pozíciu [X Y], čiže vlastne vektor
z počiatku do tohto bodu. Preto abs pos je veľkosť tohto vektora,
a teda vzdialenosť od počiatku.
Príkaz polygon vždy vyplní vnútro polygónu. Pre zložitejšie polygóny sa ich
"vnútorná oblasť" dá len ťažko predpovedať. Napríklad:
? polygon [setFC "purple repeat 24 [fd 200 rt 165]]
Nezabudni:
v návode na kreslenie v príkaze polygon sa dá používať všeličo (pozri Help),
nastavenia farby, hrúbky a farby výplne – ak ich zadáme vnútri príkazu polygon – sú len
dočasné a akceptujú sa iba na začiatku návodu
pozri niekoľko pekných príkladov
to pokus1 to pokus2 :a :b
polygon polygon
[setPw 3 [setPw 3
setPc any setPc any
setFc any setFc any
repeat 4 [fd 20 lt 90 repeat 4
repeat 90 [fd 1 rt 4] [repeat 2 [fd :a rt 90 fd :b rt 90]]
rt 90 bk 20 rt 90]] lt 90]
end end
Interaktívne programovanie a vizuálne modelovanie – Imagine prednáška 02 Ivan Kalaš
to pokus3
pu
setPw 3
repeat 5 [setPc any
setFc any
polygon [repeat 90 [fd 2 rt 4]]
fd 30
lt 72]
end
o poznámke (hint)
Udalosť priKliknutí – onClick
alebo
? (t1'every 20 [fd s1 rt 1] "go)
toto je dôsledok operácie defaultAction pre posúvače
to defaultAction
op value
end