Autorské riešenie Pri kreslení takejto tapety sa musíme trochu zamyslieť. Aká je veľká tapeta v zadaní? Aká vzorka sa v nej opakuje? Pri pozornejšom skúmaní si všimneme, že v tapete sa striedavo opakuje
takáto vzorka s "prázdnou"
vzorkou. Ak počítame aj prázdne kachličky, tapeta v zadaní má teda rozmer
6 kachličiek v stĺpci a 5 kachličiek v riadku. Nakresliť takúto kachličku
však nie je problém. Môžeme to spraviť napríklad takto: viem kachlicka :a
polygon [opakuj 4 [do :a vp 90 do (4*:a) vp 90 do :a vp 90]] koniec Premenná :a predstavuje dĺžku strany malého štvorčeka v rohu kachličky. Celá kachlička má teda dĺžku strany 4*:a. Zostáva naprogramovať vykreslenie celej tapety, podľa požadovaných rozmerov (počtu kachličiek) a veľkosti kachličky. Na vykreslenie môžeme použiť dva cykly. Vnútorný cyklus (opakuj :s) zabezpečí nakreslenie jedného riadku tapety a vonkajší cyklus (opakuj :r) zabezpečí opakovanie kreslenia celého riadku. Pri kreslení plnej kachličky využijeme procedúru kachlicka a posunieme sa na ďalšie miesto na tapete. Pri kreslení prázdnej kachličky sa len presunieme na ďalšie miesto na tapete. Problém ale je v tom, že riadky nie sú rovnaké. Prvý riadok začína vzorkovanou kachličkou, druhý prázdnou kachličkou, tretí vzorkovanou atď. Na to, aby sme rozlíšili, ktorý riadok (párny alebo nepárny) kreslíme, použijeme premennú :riadok. Jej hodnotu nastavíme na začiatku na hodnotu 1 (kreslíme prvý riadok) a po nakreslení každého riadku ju zvýšime o 1. Pri kreslení riadku kachličiek budeme brať do úvahy do úvahy číslo riadku. Ak je riadok nepárny (zvyšok :riadok 2 = 1), začneme riadok plnou kachličkou (urob "stlpec 1). Ak je riadok párny, začneme prázdnou kachličkou (urob "stlpec 0). Po nakreslení jednej kachličky v riadku premennú :stlpec zvýšime o 1. Ak je jej hodnota nepárna, kreslíme plnú kachličku. Ak je párna, kreslíme prázdnu kachličku. Jedna z verzií tohto programu teda vyzerá nasledovne. viem tapeta :r :s :a
zmaz domov urob "riadok 1 opakuj :r [ak2 zvyšok :riadok 2 = 1 [urob "stlpec 1] [urob "stlpec 0] opakuj :s [ak zvyšok :stlpec 2 = 1 [kachlicka :a] vp 90 do 4*:a vl 90 urob "stlpec :stlpec + 1 ] vl 90 do :s*4*:a vp 90 vz 4*:a urob "riadok :riadok + 1 ] koniec
Najčastejšie chyby Najväčší problém vám spôsobovalo zistiť, aká veľká je tapeta v zadaní. Keďže ste nezistili jej rozmer správne, vaše tapety neboli celkom správne. Niektorý ste si neuvedomili, že v tapete sa strieda plná kachlička s prázdnou. | ||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |