5. Skúška z programovania pre 1i, 1MI a 1FI
13.1.1999 do

 
1.

testovací textový súbor

ďalší testovací textový súbor

Napíšte program, ktorý umožní zahrať sa s robotom Karlom:
  • robot Karel sa pohybuje v štvorcovej sieti rozmerov 6 riadkov po 8 stĺpcov, pričom rozmery políčka na obrazovke sú 3x5 a medzi políčkami je jeden znak s kódom #176;
  • robot je vždy natočený v jednom zo smerov (sever, východ, juh, západ) a zobrazený jedným zo znakov ('^','>','v','<')žltou farbou;
  • robot sa riadi nasledujúcimi klávesmi:
    • šípka hore, resp. dole – robot vykoná jeden krok dopredu, resp. vzad v momentálnom smere, ak sa nedá, program pípne;
    • šípka vľavo, resp. vpravo – robot sa otočí vľavo, resp. vpravo o 90 stupňov;
    • číslica '0' .. '7' – zafarbí políčko pod robotom príslušnou farbou (0 je čierna, 1 modrá, ...);
    • Ctrl + písmeno – naštartovanie definovania príslušného makra, t.j. od tohoto momentu sa zapamätávajú všetky klávesnicové príkazy do reťazca a zároveň sa vykonávajú; definovanie makra sa ukončí opätovným stlačením Ctrl + ľubovoľné písmeno; počas definovania makra je v pravom hornom rohu vypísaná správa MAKRO a príslušné písmeno;
    • 'A'..'Z' – spustí príslušné makro; ak sa počas definície makra vyvolá nejaké makro, tak toto sa naozaj vykoná a do definície makra sa zapíšu len samotné príkazy makra;
    • ESC – uloží všetky informácie o štvorcovej sieti, Karlovi a definovaných makrách do súboru a program skončí.
Makro je vnútorne kódované ako znakový reťazec (do 255 znakov), v ktorom šípky sú zapísané malými písmenami 'l','p','d','z' (pre vlavo, vpravo, dopredu a vzad) a zafarbovanie políčka príslušnou cifrou.
Program pri štarte načíta súbor karel.txt tejto štruktúry:
  • prvých 6 riadkov obsahuje po 8 cifier 0..7, ktoré reprezentujú farby príslušných políčok štvorcovej siete;
  • v ďalšom riadku nasleduje pozícia a natočenie robota: riadok, stĺpec, smer (0=sever, 1=východ, 2=juh, 3=západ);
  • až do konca súboru nasledujú definície makier vo formáte písmeno=definícia makra.
Políčko štvorcovej siete aj robota reprezentujte objektami s metódami na inicializáciu, vykreslenie a pod. 

Nepoužívajte GotoXY.


 
 
2. Napíšte program, ktorý pomocou korytnačiek zrealizuje nasledovný efekt:
  • ak pomocou myši (so zatlačeným ľavým tlačidlom) niečo nakreslíme jedným ťahom, z tejto kresby sa stane obrys novej korytnačky a môžeme kresliť ďalšiu kresbu;
  • všetky takto vytvorené nové korytnačky (realizujte pomocou VelaKor) sa pomaly pohybujú náhodným smerom (pričom sa náhodne otáčajú o –1..1 stupeň vpravo); ak sa od (0,0) vzdialia viac ako o 200, tak sa natočia smerom k (0,0);
  • zmenu tvaru novej korytnačky urobte metódou ZmenTvar, pre ktorú vytvoríte postupnosť "povelov" vpravo a dopredu a obrys zafarbíte na zeleno;
Program by sa mal dať v ľubovoľnom okamihu prerušiť klávesom ESC.