Autorské riešenie
Úlohu bolo vytvoriť procedúru s vhodnými parametrami, ktorá vykreslí hraciu plochu hry Backgammon podľa stanovených pravidiel. Túto úlohu je veľmi vhodné riešiť s použitím pomocných procedúr - vykreslenie plochy pozadia hracej plochy (procedúra plocha), vykreslenie rámu okolo hracej plochy (procedúra ram), vykreslenie rámu v polovici hracej plochy (procedúra ram2) a vykreslenie obdĺžnikov dvoch striedajúcich sa farieb (procedúra celá). Pri vykreslení pozadia hracej plochy (procedúra plocha) je potrebné použiť parametre šírka obdĺžnika a farba pozadia. Z obrázka v zadaní je možné zistiť, že hracia plocha predstavuje štvorec so stranou dĺžky 29-násobku vstupného parametra šírka. Vykreslenie rámov (procedúry ram a ram2) vyžaduje použitie rovnakých parametrov, pričom šírka rámu zodpovedá šírke obdĺžnika, jeho dĺžka predstavuje 28-násobok parametra šírka. Ostáva vykresliť obdĺžniky vo vnútri hracej plochy. Okrem parametra šírka obdĺžnika potrebujeme ako vstupný parameter dve rôzne farby. Plochu si vieme rozdeliť na 4 rovnaké časti (štvrtiny). V každej štvrtine vykresľujeme tri obdĺžniky jednej farby a tri obdĺžniky duhej farby. Keďže dva oproti sebe umiestnené obdĺžniky sú od seba vzdialené o päťnásobok šírky obdĺžnika a výška hracej plochy je 27-násobok šírky obdĺžnika, tak výška jedného obdĺžnika bude 11-násobok jeho šírky. Ostáva nám už len jednotlivé štvrtiny správne vyskladať na hracej ploche.
Nasleduje moľné riešenie v jazyku Imagine. #imagine
viem plocha :sirka :farba nechFP :farba polygon [ opakuj 4 [ dopredu (29 * :sirka) vlavo 90 ] ] koniec viem obdlznik :dx :dy :farba nechFP :farba polygon [ opakuj 2 [ dopredu :dx vlavo 90 dopredu :dy vlavo 90 ] ] koniec viem ram :sirka :farba opakuj 4 [ obdlznik 28 * :sirka :sirka :farba dopredu 29 * :sirka vlavo 90 ] koniec viem ram2 :sirka :farba vlavo 90 obdlznik 27 * :sirka :sirka :farba koniec viem stvrtina :dx :farba1 :farba2 dopredu :dx opakuj 3 [ obdlznik :dx 11 * :dx :farba1 dopredu 2 * :dx obdlznik :dx 11 * :dx :farba2 dopredu 2 * :dx ] vlavo 90 dopredu 27 * :dx vlavo 90 koniec viem polovica :dx :farba1 :farba2 opakuj 2 [ stvrtina :dx :farba1 :farba2 ] koniec viem cela :dx :farba1 :farba2 polovica :dx :farba1 :farba2 dopredu 14 * :dx polovica :dx :farba1 :farba2 koniec viem vykresli znova nechPoz [-240 -240] zmaz vpravo 90 plocha 10 "oranzova8 ram 10 "hneda4 dopredu 10 vlavo 90 dopredu 10 vpravo 90 cela 10 "hneda "cierna ram2 10 "hneda4 koniec Vaše zaujímavé riešenia a najčastejšie chyby Úlohu riešili 4 tímy. Väčšina riešení bola správna, iba 2 tímy použili prácu s podprocedúrami. Striedajúce sa farby a vzdialenosti obdĺžnikov boli správne v každom riešení. V jednom tíme sa vyskytla chyba s nesprávne použitou operáciou delenia, ktorá spôsobila chybu pri práci s parametrami. |
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |