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.
;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 |