Autorské riešenie
Pri pohľade na obrázok si v prvom rade treba uvedomiť že zdanlivá pyramída pozostáva z troch ramien. Na nakreslenie ramena si vytvoríme samostatnú procedúru. Pri riešení v Imagine, nemôžeme zabudnúť na to, že polygón v sebe nemá rád výpočty. Včetky hodnoty si preto musíme vypočítať vopred. Hrúbku ramena si určíme ako 1/8 z pôvodnej veľkosti ramena. Rameno vykreslíme tak, ako je zobrazené na obrázku. Následne pomocou cyklu nakreslíme celkový útvar. Farby si uložíme do zoznamu (prípad python), alebo využijeme vnorené podmienky aby sme ich mohli v cykle postupne obmienať. ;Imagine
logo
viem rameno :farba :dlzka urobTu "sirka :dlzka/8 urobTu "dlzkaminussirka :dlzka-:sirka urobTu "dlzkaminus3sirka :dlzka-3*:sirka nechfv :farba polygon[ do :dlzka vl 120 do :dlzkaminussirka vl 120 do :sirka vl 60 do :dlzkaminus3sirka vp 120 do :dlzkaminussirka vl 120 do :sirka vl 60 ] koniec viem pyramida :dlzka :farba1 :farba2 :farba3 opakuj 3[ ak2 pocitadlo = 1[ rameno :farba1 :dlzka][ ak2 pocitadlo=2 [ rameno :farba2 :dlzka][ rameno :farba3 :dlzka]] do :dlzka vl 60 do :dlzka/8 vl 60 ] koniec import turtle kor = turtle.Turtle() plocha = turtle.Screen() def pyramida (dlzka, farba1,farba2, farba3): farby= [farba1,farba2, farba3] for i in range(0,3): rameno(farby[i], dlzka) kor.forward(dlzka) kor.left(60) kor.forward(dlzka/8) kor.left(60) def rameno(farba, dlzka): sirka = dlzka/8 kor.pen(fillcolor=farba) kor.begin_fill() kor.forward(dlzka) kor.left(120) kor.forward(dlzka - sirka) kor.left(120) kor.forward(sirka) kor.left(60) kor.forward(dlzka - (3*sirka)) kor.right(120) kor.forward(dlzka - sirka) kor.left(120) kor.forward(sirka) kor.left(60) kor.end_fill() pyramida(100, "yellow", "blue", "green") kor.getscreen()._root.mainloop() Vaše zaujímavé riešenia a najčastejšie chyby Mnoho riešení bolo veľmi pekných, mali pridané tlačidlá na spúšťanie pocedúry a prehľadný kód. Veľmi častou chybou bolo to, že pyramída nebola vyfarbená. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |