Autorské riešenie Táto úloha vyzerá na prvý pohľad komplikovane. Pri vykresľovaní plániku pre hru musíme zohľadniť viac parametrov: počet hráčov, počet a veľkosť figúrok. Políčka by sa nemali vzájomne prekrývať a z plániku hry by malo byť jasné, ako idú políčka za sebou (teda, ako sa majú figúrky posúvať). Navyše musí mať každý hráč figúrky odlišnej farby ako jeho protihráči. Keď sa pozrieme na hrací plánik všimneme si, že celý hrací plán sa dá rozdeliť na skoro rovnaké časti. Ich počet závisí od počtu hráčov. Tieto časti sa líšia len farbou niektorých políčok, pozíciou a vzájomným pootočením. Niektoré políčka sú spojené čiarkou, iné nie. Aby sme sa nemuseli zdržiavať kreslením malých čiarok, pomôžeme si jednoduchou fintou. Najskôr nakreslíme jednu súvislú čiaru a potom do obrázka nakreslíme políčka hry. Niektoré z nich prekryjú čaru, ktorá tak prirodzene vytvorí spojnicu medzi nimi. Štruktúra procedúry kresliPlan by teda mohla vyzerať nejako takto: viem kresliPlan :pocetHracov :velkostFigurky :pocetFigurok Ďalej si môžeme všimnúť, že jednotlivé časti (tak, ako sme ich vyznačili vyššie) sú zložené z niekoľkých radov, ktoré obsahujú rôzne počty farebných políčok. Aby sme si uľahčili kreslenie týchto radov, vytvorme si na to procedúru. viem rad :pocetBodiek :velkostFigurky :farba Celý plán hry sme podľa počtu hráčov rozdelili na niekoľko častí. Každú z týchto častí nakreslíme z niekoľkých radov hracích políčok. Výsledná procedúra by teda mohla vyzerať nasledovne: viem kresliPlan :pocetHracov :velkostFigurky :pocetFigurok Vzdialenosť medzi stredmi dvoch susedných políčok sme si určili na 1,5 násobok ich veľkosti. Aby sme túto hodnotu nemuseli opakovane počítať, uložili sme si ju do premennej "posun. Veľkosť uhla, ktorý zvierajú "ramená" hracieho plánu je 360º / "pocetHracov. Korytnačka sa však musí otočiť o doplnkový ohol, teda o 180º - 360º / "pocetHracov. Urobí to na 2 krát, otočí sa teda 2 krát o uhol 90º - 180º / "pocetHracov. Týmto sme zabezpečili, že aj pri väčšom počte hráčov sa žiadne políčka nebudú vzájomne prekrývať tak, ako je to na nasledujúcom obrázku.
Všimnite si ešte, ako sme vyriešili farby pre jednotlivých hráčov. Každý hráč musí mať farbu odlišnú od jeho protihráčov. V Imagine môžeme farby číslovať od 0 do 15. Keďže máme vytvoriť plánik pre maximálne 14 hráčov, môžeme každému hráčovi dať takú farbu, aké je poradie vykreslenia jeho domčeka. Vaše zaujímavé riešenia a najčastejšie chyby Pri generovaní farieb políčok ste použili "príliš voľnú" náhodu. Tá často spôsobila, že niektoré políčka (pre rôznych hráčov) mali rovnakú farbu. Pri kreslení "ramien" plániku ste si neuvedomili, že pri väčšom počte hráčov sa políčka budú vzájomne prekrývať. Niektorí z vás zabudli na veľkosť polička, ktorá sa mohla tiež meniť podľa požiadaviek na hrací plán.
|
||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |