Začiatok riešenia úlohy je jednoduchý:
do Plochy si načítame pripravený súbor
automat.bmp
a vytvoríme dve korytnačky "pohar
a "tec
s ich príslušnými obrázkami. Vytvoríme ich animačné, neaktívne. Kvôli počiatočnému
ladeniu korytnačku "tec
vytvorme radšej viditeľnú (pri behu programu ju však zviditeľníme až po
výbere nápoja). Keďže pohár aj tečenie nápoja majú v obrázku navrhnutú
sivú farbu, ale pri tečení nápoja musia mať farbu vybraného nápoja, zmeníme
obom aktívne farby.
? pre [pohar tec] [zmen.aktivnu.farbu 7]
A môžeme hneď vyskúšať, či to funguje:
? pre [pohar tec] [zmen.fp 14]
Keďže je pohár prázdny, musíme mu
ešte zmeniť fázu, aby sme videli farbu džúsu:
? pre "pohar [zmen.fazu 3]
Teraz napíšeme príkaz, ktorý umožní
používateľovi kliknúť niekde do plochy. Príkaz najprv čaká na stlačenie
nejakého klávesu (základná operácia klaves).
Ak bolo stlačené ľavé tlačidlo myši (výsledkom operácie je 0), presunie
korytnačku 0 (iba tá je aktívna, nezabudnite jej však dať hore pero) na
miesto to miesto do Plochy, kde sa kliklo. Potom zavolá príkaz nalej.iha,
ktorý vykoná animáciu liatia nápoja do pohára. Ak používateľ stlačil niečo
iné, príkaz rekurzívnym volaním opäť čaká kliknutie.
Môže vyzerať:
viem cakaj.klik
urob "k klaves ak :k = 0 [zmen.poz poz.mysi nalej.iha ukonci] cakaj.klik koniec |
viem nalej.iha
pre [pohar tec][zmen.fp pre 0 [farba.bodu] ukaz] opakuj 3 [pre "pohar [zmen.fazu faza + 1] cakaj 200] koniec |
Oba príkazy ešte spojíme do príkazu start:
viem start
pre "pohar [zmen.fazu 1] pre "tec [skry] cakaj.klik koniec |
Riešenie časti a) je tiež veľmi jednoduché:
na vhodnom mieste vytvoríme korytnačku, ktorá bude vypisovať cenu nápoja.
Korytnačka nech sa volá "pis.cenu,
je neaktívna a neviditeľná. Nastavíme jej nejaké písmo:
? pre "pis.cenu [zmen.pismo [Arial] [9 700 0 0 0]
prípadne zmeníme farbu pera
? pre "pis.cenu [zmen.fp 15]
a vyskúšame
? pre "pis.cenu [text 12]
Ak sa nám zdá, že nie je na správnom
mieste posunieme ju (či už príkazmi dopredu, vzad alebo priamym posúvaním
korytnačky, keď si ju najprv zviditeľníme).
Do príkazu start dopíšeme generovanie ceny a jej vypísanie do Plochy. Keď projekt vyskúšame vidíme, že po jeho novom spustení programu sa nová cena napísala na tú z predošlého behu. Preto pred výpisom najprv načítame pôvodný súbor automat.bmp:
viem start
citaj.p "automat.bmp urob "cena.iha 10 + nahodne 11 pre "pis.cenu [text :cena.iha] ... ; pôvodné príkazy koniec |
Potom si musíme označiť miesto, kam budeme mince vhadzovať. Najprv mincu začneme myšou ťahať k otvoru. Keď ju pri ňom pustíme, minca sa do otvoru vhodí. Mohli by sme kontrolovať súradnice mince, jednoduchšie však je keď použijeme základnú operáciu vnutri. Jeho vstup -- obdĺžnik, v ktorom sa má nachádzať korytnačka môžeme tistiť napr. tak, že ho napíšeme v priamom režime a po stlačení klávesu F9 vyznačíme obdĺžnik okolo vhadzovacieho otvoru. Na zistenie, či bola minca pustená v blízkosti otvoru a pripočítanie jej hodnoty k doterajšiemu súčtu vhodených mincí navrhneme príkaz kontrola:
viem kontrola
ak vnutri? [47 163 35 32][pre :z [skry] urob "sucet.pem ( bez.po :z ) + :sucet.pem] koniec |
Nakoniec navrhnime príkaz tahaj.pem na ťahanie mincí k otvoru
viem tahaj.pem
urob "k klaves ak :k = 0 [ak zvolena <> [][urob "z zvolena oslov :z]] ak :k = - 1 [ak :z <> [][zmen.poz poz.mysi]] ak :k = - 2 [ak :z <> [][zmen.poz poz.mysi kontrola]] ak :sucet.pem < :cena.iha [tahaj.pem] koniec |
a do príkazu start doplňme niekoľko vyvolaní pripravených príkazov, takže môže vyzerať napr.:
viem start
citaj.p "automat.bmp urob "cena.iha 10 + nahodne 11 pre "pis.cenu [text :cena.iha] pre [11 12 21 22 51 52 101 102][domov ukaz] pre [tec][skry] pre [pohar][zmen.fazu 1] urob "z [] urob "sucet.pem 0 tahaj.pem oslov 0 cakaj.klik koniec |