Autorské riešenie
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.
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:
Najčastejšie chyby a návrhy na vylepšenie:
| ||||||||||
© Univerzita Pavla Jozefa Šafárika v Košiciach, Prírodovedecká fakulta, Ústav informatiky palmaj (zavinac) upjs.sk |