Napíšte program, ktorý umožní jednému hráčovi riadiť robota
v labyrinte:
labyrint sa skladá zo stien a nachádza sa v ňom robot a nejaké
farebné krabice, ktoré bude robot prenášať;
robota môžeme riadiť myšou tak, že mu kliknutím niekde v
riadku alebo v stĺpci, v ktorom sa nachádza, určíme smer pohybu a on sa
potom pomaly pohybuje daným smerom, až kým nenarazí na nejakú prekážku
(aj krabice sú preňho prekážky);
robot je zobrazený bitmapou veľkosti 16x16 bodov (bitmapy
príslušne natočených robotov sú v súboroch r1.bmp, r2.bmp, r3.bmp a r4.bmp);
steny sú šedé, zložené zo štvorčekov 16x16 bodov;
krabice sú zobrazené štvorčekmi veľkosti 16x16 rôznych náhodných
farieb;
ak robot nenesie krabicu a narazí na nejakú, tak kliknutím
na túto krabicu ju uchopí a ďalej sa pohybuje s ňou (samozrejme, že ani
krabica nemôže prechádzať cez prekážky) - krabica je stále "prilepená"
k robotovi;
ak robot drží krabicu a stlačíme kláves <Enter>, tak ju
pustí.
Robota aj krabice zadefinujte ako inštancie nejakej triedy,
ktorá bude obsahovať minimálne tieto metódy: inicializačná, vykreslenie,
test, či sa môže pohnúť momentálne definovaným smerom.
Labyrint je zadaný v textovom súbore robot.txt.
Každý riadok súboru popisuje jeden "riadok" labyrintu: každý znak v ňom
reprezentuje 16x16 bodov na obrazovke, pričom znak
'x' reprezentuje stenu;
'+' pozícia hráča;
'k' rôznofarebné krabice;
'.' voľné políčko.
Môžete predpokladať, že súbor je zadaný korektne a všetky
riadky obsahujú rovnaký počet znakov. Napriek tomu, že počiatočný labyrint
aj objekty na obrazovke sú zo štvorčekov 16x16, robot aj krabice sa môžu
pohybovať v každom smere po 8 bodoch.
Pohyb robota riaďte cez Timer.
Napíšte program, pomocou ktorého môžeme riešiť problém šachového
koňa:
na šachovnici NRxNS (NR a NS sú konštanty programu a vyjadrujú
počet riadkov a počet stĺpcov) políčok prvým ťahom niekde umiestnime šachového
koňa;
ďalej pomocou myši postupne určujeme políčka, na ktoré sa
presúva tento kôň;
ak je to povolený ťah (políčko je ešte nenavštívené a je
to ťah podľa šachových pravidiel), tak sa kôň na toto políčko presunie
- políčko sa zafarbí a spojí zelenou čiarou s predchádzajúcim;
v počiatočnej situácii hry na každom políčku "sedí" jedna
korytnačka (tvaru šedý 6-uholník) a v priebehu hry sa niektorým korytnačkám
mení farba tvaru a niektoré korytnačky sa spájajú čiarou: políčko s koňom
má korytnačku s červenou farbou; už navštívené políčko bez koňa má zelenú
farbu tvaru. Tieto korytnačky realizujte pomocou vlastnej triedy (odvodenej
z Kor, v ktorej sú nejaké pomocné stavové premenné, napr. pozícia
v šachovnici, či je políčko obsadené a pod.) a ďalej využite triedu VelaKor
tak, aby ste už nepotrebovali žiadne iné polia.
V programe zadefinujte konštanty pre veľkosť šachovnice a
veľkosť políčka, napr.
const NR=5; NS=7; vel=50;