Autorské riešenie
[stiahni]

  • Počet riešiteľov: 6 / 7 = 86 %

  • Úspešnosť riešenia: 4,5 / 6 =  75 %

K správnemu riešeniu viedlo vytvorenie prekážkovej trate a postupné vytváranie a odoberanie farebných kruhov. 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. 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. Môžeme zvážiť aj to, či by sme hrúbku kruhu nemali voliť menšiu ako je hrúbka prekážky. Polohu kruhu stále testujeme vzhľadom na modrú farbu, ideálne je 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]
         urob "x -350 + nahodne 700
         urob "y -150 + nahodne 300
         urob "hrubka 10 + nahodne 10
         nechXYsur :x :y
         kym [farbaBodu = "modra] [
           urob "x -350 + nahodne 700
           urob "y -150 + nahodne 300
           nechXYsur :x :y
         ]
         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:

  • viacerí z vás vytvárali prekážky pomocou čiar náhodnej dĺžky a náhodného smeru,
  • niektoré tímy vyberali hrúbku a farbu kruhov pomocou zoznamu prípustných hodnôt, napr.:
       nechfp ?prvok [0 2 4 5 6 7 8 10 12 13 14 ]
       bod ?prvok[15 16 17 18 19 20 21 22 23 24 25 26 27]
  • jeden tím navrhol meniace sa prekážky vo forme čiar s medzerami (náhodne sa generoval počet stĺpcov) a zabezpečil tak podmienku neuzavretej oblasti:

    prekazky

  • jeden tím navrhol na výber fixné alebo meniace sa prekážky.

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

  • 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,
  • 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.