Autorské riešenie Ak si pozorne prezriete zástavy vybraných štátov zistíte, že majú spoločnú vlastnosť. Tri farebné pásiky. To, v čom sa líšia, je farba pásikov, ich orientácia a pomer strán. Na kreslenie teda môžeme využiť jednu procedúru, ktorá pomocou zaslaných parametrov bude vedieť, ako zástavu nakresliť. Samozrejme, že by sme mohli vytvoriť šesť procedúr, pre každú zástavu jednu. Naša práca by však nebola príliš efektívna, pretože procedúry by mali veľa spoločného (pre každú z nich by sme museli písať podobný kód). Kreslenie zástavy môže vyzerať aj takto:
viem zastava :orientacia :farby :x :y
domov vp :orientacia ak :orientacia=0 [vp 90 do :x vl 90] urob "y :y/3 opakuj 3 [nechfp prvok pocitadlo :farby polygon [do :y vl 90 do :x vl 90 do :y ] do :y ] koniec Premennou orientácia rozlišujeme, či sú pásiky vodorovné alebo zvislé. Premenná farby je trojprvkový zoznam, ktorý obsahuje farby danej zástavy. No a nakoniec, premenné x a y určujú pomer/dĺžky strán danej zástavy. Kreslenie zástavy Belgicka môžeme naprogramovať takto. Tlačidlu "Belgicko" priradíme udalosť "priZapnutí" takto:
znovu zastava 90 ["cierna "zlta6 "cervena5] 182 210
90 - určuje orientáciu, pásy sú zvislé Pre zástavu Holandska, by sme tlačidlu "Holandsko" priradili udalosť "priZapnutí" takto:
znovu zastava 0 ["modra3 "biela "cervena5] 210 140
0 - určuje orientáciu, pásy sú vodorovné Pre ostatné štáty to vyzerá nasledovne:
Belgicko - znovu zastava 90 ["cierna "zlta6 "cervena5] 182 210
Francúzsko - znovu zastava 90 ["modra3 "biela "cervena5] 140 210 Holandsko - znovu zastava 0 ["modra3 "biela "cervena5] 210 140 Luxembursko - znovu zastava 0 ["modra6 "biela "cervena6] 210 126 Nemecko - znovu zastava 0 ["zlta6 "cervena5 "cierna] 210 126 Taliansko - znovu zastava 90 ["zelena4 "biela "cervena5] 140 210
Najčastejšie chyby Najčastejšie ste používali príliš veľa procedúr (alebo niektorí žiadne). Takto sa vám riešenie príliš skomplikovalo. | ||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |