Autorské riešenie
[stiahni]

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.

plan hry

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.

plan hry

Štruktúra procedúry kresliPlan by teda mohla vyzerať nejako takto:

viem kresliPlan :pocetHracov :velkostFigurky :pocetFigurok

  ;nakreslime spojnice policok
  opakuj :pocetHracov [

  ]

  ;nakreslime hracie policka
  opakuj :pocetHracov [
 
  ]
koniec

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

plan hry

Aby sme si uľahčili kreslenie týchto radov, vytvorme si na to procedúru.

viem rad :pocetBodiek :velkostFigurky :farba
  urobTu "posun 3*:velkostFigurky / 2
  nechFarbaVyplne :farba
  opakuj :pocetBodiek [
    kruh :velkostFigurky
    do :posun
  ]
koniec

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
  urobTu "posun 3*:velkostFigurky / 2
  nechFP "cierna

  ;nakreslime spojnice policok
  pd
  opakuj :pocetHracov [
    do 4 * :posun
    vl 90
    do 2 * :posun
    vl 90
    do 4 * :posun
    vp 90 - 180 / :pocetHracov
    do :posun
    vp 90 - 180 / :pocetHracov
  ]

  ;nakreslime hracie policka
  ph
  opakuj :pocetHracov [
    rad 4 :velkostFigurky "biela
    vp 45
    rad :pocetFigurok+1 :velkostFigurky pocitadlo
    vz (:pocetFigurok+1) * :posun
    vl 135
    do :posun
    vl 90
    do :posun
    rad :pocetFigurok :velkostFigurky pocitadlo
    vz (:pocetFigurok+1) * :posun
    vp 90
    rad 1 :velkostFigurky "biela
    vl 90
    rad 5 :velkostFigurky "biela
    vz :posun
    vp 90 - 180 / :pocetHracov
    do :posun
    vp 90 - 180 / :pocetHracov
  ]
koniec

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.

plan hry

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.

farby

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.