Autorské riešenie
[stiahni]

  • Počet riešiteľov: 4 / 4 = 100 %

  • Úspešnosť riešenia: 5,25 / 7 =  75 %

K správnemu riešeniu viedlo vytvorenie prekážkovej trate a postupné vytváranie a odoberanie indícií (farebných kruhov) z pracovnej plochy. Takisto je potrebné si všimnúť, že kým prvá korytnačka sa po ploche pohybuje, tak na vykreslenie prekážok a farebných kruhov je potrebné pracovať s ďalšou korytnačkou (napríklad príkazmi k2'do 100 alebo pre [k2][do 100] alebo pre "k2 [do 100] alebo odteraz "k2 do 100. Začnime teda prekážkami (vyžadovali sa vodorovné alebo zvislé čiary). Pri ich generovaní by sme mali byť opatrní s náhodou, keďže pri tejto hre sa vyžaduje, aby na ploche nevznikli uzavreté oblasti. Tie by totiž mohli spôsobiť, že korytnačka sa na niektoré miesta vôbec nedostane. V prípade, ak by sa uzavretá oblasť vytvorila v strede plochy, korytnačka by sa z nej nevedela dostať už na začiatku hry. Zvoľme preto napríklad takúto nemeniacu sa formu prekážok:

   viem prekazky
      k2'nechFP "modra
      k2'nechHP 20
      k2'nechXYsur -350 -150
      k2'opakuj 2 [
         pd do 300 vp 90 do 100 ph do 100 vp 90
         pd do 300 vl 90 do 100 ph do 100 vl 90
      ]
   koniec

Pri vytváraní farebných kruhov je potrebné myslieť na to, že farebný kruh nemôže byť modrý (takej farby sú prekážky) a tiež nemôže byť biely (takej farby je pozadie). Ak sa náhodne vygeneruje modrá alebo biela farba, môžeme ju manuálne zmeniť, napríklad na čiernu. Hrúbku a pozíciu kruhov vyberáme náhodne. Ak zabezpečíme, že hrúbka kruhu bude menšia ako hrúbka prekážky, tak na testovanie vhodnosti pozície kruhu nám stačí otestovať polohu kruhu v piatich rôznych bodoch znázornených na obrázku. V pravej časti obrázka vidíme, že ak priemer kruhu je väčší ako hrúbka prekážky, takéto testovanie už použiť nemôžeme.

test

Na testovanie pozície je ideálne zvoliť cyklus kým, ak by sa náhodou dvakrát či viakrát po sebe vygenerovala nepriaznivá pozícia.

   viem vytvor
      odteraz "k2
         nechfp ?
         ak fp="modra [nechFP "cierna]
         ak fp="biela [nechFP "cierna]
         urobtu "vhodnost_pozicie "nie
         kym [:vhodnost_pozicie = "nie][
           urobtu "vhodnost_pozicie "ano
           urob "x -350 + nahodne 700
           urob "y -150 + nahodne 300
           urob "hrubka 10 + nahodne 10
           nechXYsur :x :y
           ak (farbaBodu = "modra) [urobTu "vhodnost_pozicie "nie]
          
           urobtu "polomer cpodiel :hrubka 2
           opakuj 4 [
             do :polomer
             ak (farbaBodu = "modra) [urobTu "vhodnost_pozicie "nie]
             vz :polomer
             vp 90
           ]
         ]
         bod :hrubka
         odteraz "k1
   koniec

Ostáva nám odoberanie farebných kruhov. Všimnite si, že polohu vytvoreného kruhu si pamätáme v globálnych premenných "x a "y a hrúbku v premennej "hrubka. To znamená, že stačí vyfarbiť biely kruh na aktuálnej pozícii druhej korytnačky a zvýšiť skóre. Po dosiahnutí desiateho bodu hru ukončíme.

   viem odober
     k2'nechFP "biela
     k2'bod :hrubka
     urob "skore :skore + 1
     pis "|Aktualne skore je:|
     pis :skore
     ak :skore = 10 [pis "koniec zastavvsetky]
   koniec

Vaše zaujímavé riešenia:

  • jeden tím generoval farbu kruhov náhodne a pomocou rgb zložiek vylúčil okrem modrej a bielej farby aj to, aby vygenerovaná farba nebola príliš svetlá a málo viditeľná:
       urobtu "r nahodne 240
       urobtu "g nahodne 240
       urobtu "b nahodne 240
       urobtu "farba (veta :r :g :b)
  • jeden tím vyberal farby zo zoznamu prípustných farieb,
  • vykresľovanie prekážok a testovanie vhodnosti polohy indícií testoval jeden z tímov pomocou zoznamu prípustných x-ových a y-súradníc:
       urobtu "najdene "nie
       kym [nieje :najdene] [
         ;Vyberáme náhodne x-ovú a y-ovú súradnicu zo zoznamu prípustných x-ových
         ;a y-ových súradníc. Ak nájdeme voľné miesto, vykreslíme indíciu.
       ]

Najčastejšie chyby a návrhy na vylepšenie:

  • nerozlišovanie prvej a druhej korytnačky,
  • pri niektorých náhodne generovaných prekážkach hrozí vytvorenie uzavretej oblasti,
  • v niektorých riešeniach sa vyskytli farebné kruhy len jednej farby,
  • nedostatočné otestovanie polohy kruhu vzhľadom na prekážku,
  • testovanie pozície kruhu vzhľadom na prekážku ste vykonávali podmienkou ak, pre správne riešenie bolo potrebné použiť cyklus kým,
  • chýbajúce ukončenie hry po získaní desiatich bodov.