Autorské riešenie Všimnime si, ako taká korytnačia škôlka pre tínedžerov vyzerá. Skladá sa z políčok rôznych tvarov. Štvorce, kruhy, trojuholníky, obdĺžniky. Čo len si vymyslíte. Niektoré sa kreslia ľahšie (napríklad kruh), iné trochu ťažšie (napríklad obdĺžnik). Každé políčko má svoje číslo. Sú postupne očíslované od 1. Pre každý skok potrebujeme striedavo jedno alebo dve očíslované políčka. V našom riešení si vyberieme tú ľahšiu cestu :-). Naše políčka budú mať tvar kruhu. Na kreslenie kruhu použijeme príkaz bod velkostPolicka.
Aj keď sa v zadaní úlohy nehovorí o tom, aké veľké políčka majú byť,
kvôli jednoduchosti sme si ich veľkosť uložili do premennej
velkostPolicka. Okrem samotného políčka však musíme vykresliť aj
jeho číslo. Čísla si budeme pamätať v premennej cislo. Pred kreslením
každého nového políčka jeho hodnotu zvýšime o 1. Nesmieme zabudnúť
na to, že farba políčka musí byť inej farby ako farba čísla. Farbu
políčka sme si uložili do premennej farbaPolickaPar (alebo
farbaPolickaNepar), farbu textu do
premennej farbaTextu. Vykreslenie jedného políčka aj s jeho číslom spravíme takto:
nechFp :farbaPolickaPar
bod :velkostPolicka urob "cislo :cislo+1 nechFp :farbaTextu k1'text :cislo Či pre daný skok potrebujeme jedno alebo dve políčka záleží od čísla skoku. Ak je číslo skoku nepárne, potrebujeme jedno políčko (kreslíme ho farbou farbaPolickaNepar). Ak je číslo skoku párne, potrebujeme políčka dve (kreslíme ich farbou farbaPolickaPar).
Či je číslo skoku párne alebo nepárne zistíme podľa zvyšku, keď ho vydelíme dvojkou. Striedavé vykresľovanie jedného, alebo dvoch políčok zabezpečíme v cykle, ktorý sa bude opakovať toľko krát, koľko skokov má korytnačí športovec spraviť.
Výsledné riešenie vyzerá takto:
viem skoky :pocet_skokov
urobtu "velkostPolicka 50 urob "cislo 0 urobtu "farbaPolickaNepar "olivova urobtu "farbaPolickaPar "belasa urobtu "farbaTextu "cierna ph opakuj :pocet_skokov [ak2 zvysok pocitadlo 2 = 1 [nechFp :farbaPolicka bod :velkostPolicka urob "cislo :cislo+1 nechFp :farbaTextu k1'text :cislo vl 30 do :velkostPolicka ] [nechFp :farbaPolicka bod :velkostPolicka urob "cislo :cislo+1 nechFp :farbaTextu k1'text :cislo vp 120 do :velkostPolicka nechFp :farbaPolicka bod :velkostPolicka urob "cislo :cislo+1 nechFp :farbaTextu k1'text :cislo vl 120 do :velkostPolicka vp 30 ] ] koniec Na začiatku sme nastavali hodnotu premennej :cislo na 0. Každé kreslenie štvorca jej hodnotu zvýši o 1. Ďalej sme použili cyklus, pomocou ktorého kreslíme políčka pre jednotlivé skoky. Na zistenie či ide o párny alebo nepárny skok sme použili počítadlo cyklu (a jeho zvyšok po delení 2). Po nakreslení políčka/políčok pre daný skok umiestnime korytnačku tak, aby bola pripravená kresliť políčka/políčko pre ďalší skok. Vaše zaujímavé riešenia a najčastejšie chyby Väčšina z vás si neuvedomila, že počet skokov a počet políčok nie je to isté. Stačilo teda testovať či je skok párny, alebo nepárny a podľa toho kresliť dve alebo jedno políčko. Niektorý z vás "zabudli", že existuje cyklu a opakujúce sa príkazy ručne vypísali. |
|||||||||||||
© Univerzita Pavla Jozefa Šafárika v Koąiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |