Autorské riešenie
Aby sme nakreslili škrabošku, potrebujeme najprv vytvoriť otvor pre jedno oko. Ide o rovnostranný torjuholník, ktorý ma v strede dieru. Keď sa pozrieme lepšie na daný trojuholník, môžeme si ho rozdeliť do ešte menších trojuholníkov, ako je to znázornené na nasledujúcom obrázku.
Preto si na začiatok vytvoríme procedúru/funkciu, ktorá nakreslí rovnostranný trojuholník s dĺžkou strany určenou vstupným parametrom procedúry/funkcie. Keďže potrebujeme mať škrabošku vyfarbenú, tak si nastavíme aj vypĺňanie daného trojuolníka: ;Imagine
logo
viem trojuholnik :dlzka polygon[ opakuj 3[ do :dlzka vlavo 120 ] ] koniec def trojuholnik(dlzka): k.begin_fill() for i in range(3): k.forward(dlzka) k.left(120) k.end_fill() Hrúbka škrabošky má byť rovnaká okolo celého oka, lebo pozostáva z troch rovnakých pásikov - vzoru. Preto si vytvoríme pomocnú procedúru/funkciu vzor na nakreslenie tohto vzoru. Jeden náš pásik (vzor) bude pozostávať zo siedmich malých rovnostranných trojuholníkov. Tie nakreslíme do radu po dvojiciach a nakoniec pridáme ešte jeden - siedmy trojuolník. ;Imagine
logo
viem vzor :hrubka opakuj 3[ trojuholnik :hrubka do :hrubka vlavo 60 trojuholnik :hrubka vpravo 60 ] trojuholnik :hrubka do :hrubka koniec def vzor(hrubka): for i in range(3): trojuholnik(hrubka) k.forward(hrubka) k.left(60) trojuholnik(hrubka) k.right(60) trojuholnik(hrubka) k.forward(hrubka) Teraz už vieme vytvoriť ľavú časť škrabošky, a to tak, že trikrát zavoláme funkciu vzor, ktorá nám nakreslí 3 rovnako hrubé pásiky. Po každom nakreslení pásika sa otočíme o 120° vľavo, aby sme vytvorili rovnostranný trojuholník. ;Imagine
logo
viem lavaCast :hrubka opakuj 3[ vzor :hrubka vlavo 120 ] koniec def lavaCast(hrubka): for i in range(3): vzor(hrubka) k.left(120) Pomocou kódu nachádzajúceho sa vyššie, vieme nakresliť otvor pre jedno oko. Teraz potrebujeme ešte jeden pre druhé oko, teda zavoláme našu procedúru/funkciu lavaCast dvakrát. Raz na nakreslenie jedného otvoru a druhý raz na nakreslenie druhého. A sme hotoví. Máme vytvorénu procedúru/funkciu skraboska, ktorá nám nakreslí škrabošku požadovanej hrúbky. ;Imagine
logo
viem skraboska :hrubka vpravo 180 lavaCast :hrubka vlavo 60 do 3*:hrubka vlavo 60 do -:hrubka vpravo 60 lavaCast :hrubka koniec def skraboska(hrubka): k.speed(10) k.right(90) lavaCast(hrubka) k.left(60) k.forward(3*hrubka) k.left(60) k.forward(-hrubka) k.right(60) lavaCast(hrubka) Nasledujúce obrázky znázorňujú ako vyzerá škraboška zložená z rovnostranných trojuholníkov a následne už vyfarbená podľa zadania.
Vaše zaujímavé riešenia a najčastejšie chyby Žiaci si túto úlohu najčastejšie zľahčili tak, že nastavili na začiatku hrúbku pera na základe požiadavky, a potom iba nakreslili vedľa seba dva rovnaké rovnostranné trojuholníky.
Častou chybou bolo to, že niektorí žiaci nakreslili iba otvor pre jedno oko (obrázok zo zadania) a na druhé oko pozabudli.
Taktiež iba niektoré tímy pri svojom riešení používali pomocné procedúry.
Väčšinou to riešili všetko v jednej hlavnej procedúre. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |