Feladat: I.285 Korcsoport: - Nehézségi fok: -
Füzet: 2012/január, 33 - 34. oldal  PDF  |  MathML 

A szöveg csak Firefox böngészőben jelenik meg helyesen. Használja a fenti PDF file-ra mutató link-et a letöltésre.

Valószínűleg sokan ismerik az általános vagy középiskolából a Logo nyelvet, amelyben érdekes és izgalmas ábrákat készíthetünk egy teknőc irányításával. Az Imagine Logo programozási környezetet minden tanuló és tanár számára szabadon használható és letölthető a http://logo.sulinet.hu oldalról. A feladatunk az lesz, hogy tanítsuk meg a teknőcöt labirintust rajzolni, illetve kitalálni egy labirintusból.
Először rajzoljunk egy véletlen labirintust, melynek minden járata és minden fala 11 egység széles, tehát alapelemként 11×11 méretű fehér (járat) vagy fekete (fal) négyzetekből áll. A labirintust létrehozó labkész :n :m eljárás két paramétere a labirintus négyzeteinek vízszintes és függőleges száma (két páratlan pozitív egész). A labirintus közepe a rajzlap közepére kerüljön, és egy kijáratot tartalmazzon a bal felső sarok alatti négyzet helyén.
A teknőc érzékeli a lapon az adott helye alatti pont színét. Másodszor ennek felhasználásával készítsünk egy elhelyez :n :m eljárást, amely véletlenszerűen elhelyezi a teknőcöt a labirintusba egy járat négyzet közepére úgy, hogy észak felé nézzen, és egy kitalál :n :m eljárást, amely megpróbálja kivezetni a teknőcöt a labirintusból. A teknőc húzzon egy 5 egység vastag színes vonalat, amely mutatja, hogy mely járatokon haladt keresztül, de a négyzeteken belüli apró mozgásoknál a teknőc ne húzzon vonalat. Az eljárás érjen véget, ha a teknőc kiért a labirintusból.
A kivezető algoritmus nagyon egyszerű is lehet, tehát nem követelmény, hogy a teknőc minden labirintusból kijusson. A körjáratot nem tartalmazó labirintusokból pl. ki lehet jutni úgy, hogy olyan módon mozgunk, hogy közben tőlünk jobbra mindig fal van.
A megoldás során csak a teknőcgrafikát és a Logo nyelv funkcionális részét használjuk. Ne alkalmazzunk változókat, csak rekurzió segítségével valósítsunk meg ismétlést. Igyekezzünk minél több önállóan is értelmes függvényre és eljárásra bontani a megoldást, pl. négyzet rajzolása, annak megállapítása, hogy van-e fal előttem stb.
Beküldendő egy i285.zip tömörített állományban a megoldást tartalmazó i285.imp Imagine Logo Project és egy i285.txt szöveges állomány, amely ismerteti a megoldás során készített egyes eljárásokat és függvényeket.