Napíšte program, pomocou ktorého sa zahráme hru labyrint:
labyrint sa skladá z veľkej štvorcovej siete, pričom každé
políčko labyrintu je buď voľné (bitmapa v1.bmp) alebo obsadené hráčom
(bitmapa hrac.bmp), alebo sa na ňom nachádza nejaké zvieratko (bitmapy
z1.bmp, z2.bmp, ...), alebo je tam jedna z prekážok (bitmapy
p1.bmp, p2.bmp, ...) -- všetky bitmapy sú rovnakého rozmeru
100x100;
labyrint zadaný je v súbore labyrint.txt pričom všetky
riadky sú rovnako dlhé reťazce znakov -- každý znak reprezentuje jedno
políčko labyrintu (súbor je korektný):
'.' - voľné políčko;
'+' - políčko s hráčom;
'1', '2', ... - políčka so zvieratkami;
'a',b', ... - prekážky (zodpovedajú im bitmapy p1.bmp,
p2.bmp, ...).
hráč sa pohybuje v labyrinte pomocou šípok - môže stúpiť
len na voľné políčko, okrem neho sa v nejakých náhodných intervaloch pohybujú
aj zvieratká - samozrejme, že tiež môžu stúpiť len na prázdne políčko;
z labyrintu je na obrazovke vysvietené len "malé okno" --
je to výrez veľkosti 5x5 políčok, pričom hráč je vždy v strede tohoto výrezu
-- na začiatku vidíme okolie hráča a potom počas jeho pohybu po labyrinte
hráč sa stále nachádza v strede výrezu a mení sa len okolie;
zrejme ak sa nejaké zvieratko pohne a táto zmena sa týka
výrezu, tak to uvidíme;
výrez 5x5 políčok realizujte pomocou komponentu TStringGrid
veľkosti 5x5 políčok - každe 100x100 pixelov
Labyrint v programe realizujte ako objekt s konštruktorom,
ktorý načíta súbor a s metódami na zabezpečenie vykreslenia políčka niekde
do StringGridu, resp. na pohyb hráča a zvieratiek.
Napíšte program, ktorý bude riešiť nasledujúcu úlohu. Najprv
dovolí kresliť obrázky pomocou myši. Potom, každé stlačenie medzery zmaže
plochu a každé stlačenie klávesu <Enter> bude vykresľovať tie isté obrázky
na tých istých počiatočných pozíciách, ale vždy otočené oproti predchádzajúcemu
natočeniu o nejaký počet stupňov (konštanta otoc) doprava.
Kreslenie myšou realizujte pomocou korytnačiek (trieda
mojaKor), ktoré budú prvkami triedy velaKor, nasledovne:
vždy pri kliknutí do plochy (začiatok kreslenia) vytvorte
novú inštanciu korytnačky na mieste, kde sa kliklo;
zapamätajte si jej domovskú pozíciu, počiatočný uhol (na
začiatku 0);
potom pri kreslení podľa pohybu myši (OnMouseMove) si zapamätávajte
do stavovej premennej obraz (dynamické pole) aj samotnú kresbu ako
postupnosť príkazov vpravo a dopredu (t.j. dvojice reálnych čísel) -- zadefinujte
na to pomocnú metódu Pridaj triedy mojaKor, ktorá dostane
súradnice bodu myši a prepočíta ich na korytnačie príkazy;
metóda kresli nastaví korytnačku do domovskej pozície,
počiatočný uhol zväčší o otoc a zrealizuje zapamätanú postupnosť
obraz;