Autorské riešenie Táto úloha môže mať viac zaujímavých riešení. Je potrebné dodržať iba to, že súťažná fotografia novoročného ohňostroja má byť zložená z aspoň troch rôznych svetelných efektov. Pričom každý svetelný efekt je vyskladaný z určitého útvaru, ktorý sa v rámci efektu niekoľkokrát zopakuje (napríklad aj v rôznej veľkosti, či farbe). Prvý svetelný efekt môže vzniknúť napríklad tak, že necháme opakovane vykresliť hviezdičky. Kreslenie hviezdičky s ľubovoľným počtom cípov je trochu náročnejšie ako kreslenie mnohouholníka s ľubovoľným počtom strán, preto v našom riešení budeme uvažovať len 5-cípu hviezdičku s rôznou dĺžkou ramena. Pri programovaní tejto 5-cípej hviezdičky je dobré nakresliť si takýto obrázok: Korytnačka sa pri kreslení 5-cípej hviezdy otočí celkovo dvakrát 360 stupňov. Môžete si to predstaviť tak, že sa postavíte na zemi smerom k oknu a skúsite si chôdzou nakresliť 5-cípu hviezdu. Zistíte, že takisto sa otočíte dvakrát smerom k oknu, to znamená dvakrát po 360 stupňov. Keďže sme pri kreslení strán hviezdy celkovo menili smer 5-krát, tak každé otočenie bude mať uhol 2*360/5 stupňov, ako to môžete vidieť aj na predchádzajúcom obrázku. Procedúra pre nakreslenie 5-cípej vyplnenej hviezdy by teda mohla vyzerať nasledovne. Všimnite si, že príkaz polygón postupne vyfarbí len tie časti hviezdy, ktoré sa pri vykresľovaní uzatvoria (stred teda ostane nevyfarbený, čo však vytvorí krajší efekt). Ak by sme chceli vyfarbiť aj stred hviezdy, môžeme ešte použiť príkaz výplň. viem hviezda :dlzkaStrany Aby sme dostali prvý svetelný efekt, môžeme vykresľovanie tejto hviezdy zopakovať náhodný počet krát, pričom pri každom opakovaní sa nakreslí hviezda s rôznou dĺžkou strany a takisto nová hviezda bude posunutá od tej predchádzajúcej o uhol náhodnej veľkosti, čo vieme naprogramovať nasledujúcimi príkazmi:
urobTu "pocet1 6 + (nahodne 9) Dostaneme napríklad takýto efekt s hviezdami a náhodným otočením o uhol: V druhom svetelnom efekte použijeme útvar, ktorý bude mať podobu lúča rôznej dĺžky, ktorý sa na konci rozdeľuje na dve časti. Procedúra na nakreslenie jedného takéhoto lúča môže mať takýto tvar: viem luc :dlzka Náhodný počet lúčov a ich rovnomerné rozmiestnenie po kružnici (otočenie o uhol 360/:pocet2) vieme naprogramovať podobne ako v prípade hviezd:
urobTu "pocet2 6 + (nahodne 9) Dostaneme napríklad takýto efekt s lúčmi náhodnej dĺžky: Pri treťom svetelnom efekte môžeme napríklad využiť to, že korytnačka pozná príkaz bod a jeho opakovaným vykresľovaním dosiahnuť zaujímavý efekt.
opakuj :pocet3 [ Dostaneme napríklad takýto efekt s bodkami a náhodnou farbou: Ak máme pripravené všetky tri efekty, mali by sme ešte nakoniec zabezpečiť to, aby sa nám svetelné efekty nedostali mimo obrazovku a aby sa navzájom prekrývali. Vieme, že korytnačia plocha (čierny obdĺžnik) má veľkosť 800x500 korytnačích krokov. Každý náš svetelný efekt zaberá plochu najviac 300x300 korytnačích krokov. Preto stred každého efektu sa musí nachádzať niekde v červenom obdĺžniku (a teda po každej strane máme ešte 150 korytnačích krokov od stredu na vykreslenie efektu). Začiatočnú pozíciu efektov budeme na základe tohto obrázka voliť náhodne pomocou týchto príkazov. urobTu "poziciax -250 + (nahodne 500) Už nám ostáva overiť len prekrývanie. Zelené štvorce z nasledujúceho obrázka predstavujú jednotlivé efekty veľkosti 300x300. Vidíme, že ak budeme zelenými štvorcami pohybovať ľubovoľne po ploche, prekrývanie bude stále zabezpečené. Ak by sme mali efekty menšej veľkosti, stačí zobrať červený obdĺžnik s menšími rozmermi. Hlavná procedúra pre nakreslenie celého ohňostroja potom môže vyzerať nasledovne: viem kresliOhnostroj Vaše zaujímavé riešenia: Úlohu ste väčšinou riešili úspešne, každé riešenie bolo svojim spôsobom originálne a jedinečné. Vzniklo veľa zaujímavých efektov, využili ste polkružnice, hviezdičky, slnká, sústredné kružnice, vlny. Takisto ste niektorí pracovali s viacerými korytnačkami, využili ste tlačidlá, generovanie náhodných pozadí. Vzniklo viacero veľmi pekných efektov, ktoré nájdete v galérii prác, napríklad: opakuj 8 [nechfp "fialová bod 20 vl 90 opakuj 5 [ph do 10 pd do 30 vp 45]] viem vybuch viem svetlica Najčastejšie chyby:
| ||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |