Úlohy celoštátneho kola 7. ročníka súťaže COLOGOBEŽKA

1. Štvorce
Napíšte program, ktorý nakreslí obrázok skladajúci sa z niekoľkých štvorcov: V tretine každej strany väčšieho štvorca sa nachádza štvorec s veľkosťou strany jednej tretiny väčšieho štvorca.
Ľahší variant: Napíšte príkaz stvorce s jedným vstupom – dĺžkou strany najväčšieho štvorca, ktorý nakreslí takýto obrázok pre volanie stvorce 170.
Ťažší variant: Napíšte rekurzívny príkaz stvorceRec s dvoma vstupmi – dĺžkou strany a úrovňou rekurzie. Príkaz kreslí takýto obrázok pre rekurzívne volanie stvorceRec 170 3.



2. Hodiny
Napíšte demo program, ktorý umožní žiakom prvého ročníka učiť sa s rodičmi alebo s učiteľkou v škole hodiny nasledujúcim spôsobom: počítač zobrazí nejaký čas na analógových hodinkách a čaká na stlačenie nejakého klávesu. Úlohou dieťaťa je povedať tento čas pani učiteľke.
V demo programe sa najprv zobrazia tlačidlá, pomocou ktorých je možné nastaviť jednu z troch úrovní. V najjednoduchšej úrovni sa zobrazujú iba polhodiny a celé hodiny, druhá úroveň zobrazuje minúty po štvrťhodinách a tretia úroveň ich zobrazuje po 5 minútach. Potom, ako sa stlačí tlačidlo s výberom úrovne, sa tlačidlá s nastaveniami skryjú a na ploche sa zobrazia hodiny, na ktorých sa nastaví nejaký čas. Ďalej program čaká na stlačenie ľubovoľného klávesu. Po jeho stlačení sa na hodinách náhodne vygeneruje ďalší čas, podľa zvolených nastavení na začiatku.
Program končí stlačením klávesu Esc – vtedy sa opäť objavia tlačidlá s možnosťou výberu úrovne.
Pri nastavovaní času na hodinkách nezabudnite na to, že malá ručička v čase, ktorý neurčuje celú hodinu, neukazuje presne na niektoré z čísel, napr. o pol jedenástej je asi v polovici dráhy medzi desiatkou a jedenástkou.
Obrázok hodín nájdete v súbore hodiny.bmp, obrázky ručičiek sú v súboroch rucickaM.lgw a rucickaV.lgw.
Nezabudnite napísať príkaz start, ktorým sa tento demo program spustí.


3. Sokoban

Napíšte program, ktorý umožní jednému hráčovi hrať hru Sokoban: na hracej ploche sa nachádza miestnosť ohraničená stenami. V miestnosti je rozmiestnených niekoľko debien a sú v nej vyznačené miesta, kam tieto debny patria. Úlohou hráča je pomocou panáčika–Sokobana, odtlačiť debny na vyznačené miesta. Sokoban dokáže pred sebou tlačiť práve jednu debnu a vie ju potlačiť iba na také miesto, ktoré je voľné – nie je na ňom iná debna ani tam nie je stena.
Hráč pohybuje Sokobanom pomocou šípok. Po stlačení šípky sa Sokoban otočí v smere príslušnej šípky a presunie na políčko v tomto smere, ale iba v tom prípade, ak je toto políčko voľné alebo vtedy, ak je na ňom debna, ktorú môže v tom smere tlačiť pred sebou (debnu vtedy potlačí na jej nové miesto). Ak sa v smere šípky nemôže posunúť, tak sa tým smerom iba otočí.
Ak sa debna dostane na niektoré vyznačené miesto, zmení sa jej obrázok tak, aby bolo vidieť, že táto debna je už na mieste (použite druhú fázu jej obrázka). Debna sa v budúcnosti dá odtlačiť aj z takéhoto miesta, vtedy sa jej obrázok zmení opäť na pôvodný tvar.
Hra končí správou HOTOVO vtedy, keď sú všetky debny umiestnené na vyznačených miestach.
V textovom súbore soko01.txt je zadaný tvar prvej miestnosti (v ďalších txt súboroch sú ďalšie miestnosti). Podčiarovník v tomto súbore označuje voľné políčko, # stenu, @ sokobana, $ debnu a . (bodka) miesto, kde je potrebné dotlačiť debnu. Program navrhnite tak, aby vedel vytvoriť miestnosť podľa zadaného textového súboru. Na prácu s textovým súborom použite základné príkazy citaj.z a citaj.slovo, (Imagine – čítajTextovýSúbor) – prácu s ním si pozrite v pomocníkovi programu. Ak sa vám nepodarí príkaz pochopiť a naprogramovať spracovávanie súboru, navrhnite na ploche jednu konkrétnu miestnosť, napr. podľa soko01.txt a naprogramujte aspoň ostatné časti hry – pohyb, tlačenie, kontrolu umiestnenia debien... Obrázok steny nájdete v súbore stena.lgw, Sokobana v súbore sokoban.lgw, debny v súbore debna.lgw (obrázok má dve fázy) a miest, kam umiestniť debny v súbore miesto.lgw.
V programe nezabudnite napísať príkaz start, ktorý umožní hráčovi pohybovať sokobanom a upratovať debny.




© Monika Tomcsányiová