Napíšte program, ktorý umožní jednému hráčovi zahrať sa hru
Žabky:
v jazierku je vedľa seba rozmiestnených N+1 kameňov,
na ktorých sedí N žabiek (jeden kameň je voľný) - obrázok jazera
je v súbore
jazero.bmp a kameň je v súbore kamen.bmp (biela
farba je priesvitná);
každá žabka má svoje číslo od 1 do N - obrázky žabiek
sú v súboroch zaba1.bmp, zaba2.bmp, ..., zaba9.bmp,
pričom biela farba by mala byť priesvitná - môžete predpokladať, že N
nebude väčšie ako 9;
na začiatku hry sú žabky náhodne rozmiestnené, napr. takto:
3 _ 2 4 5 1, kde _ sme vyjadrili prázdny kameň;
úlohou hráča ich bude usporiadať vzostupne tak, aby prvá
žabka bola na prvom kameni, N-tá na N-tom a posledný (N+1)-vý
kameň bol voľný;
v rámci jedného ťahu hráč ukáže na niektorú žabku (kliknutím
myšou) a táto buď preskočí na voľný kameň, alebo iba poskočí na mieste;
pri skákaní môže žabka preskočiť na voľný kameň buď ak je
tento susedný, alebo ak pri tom musí preskočiť iba jednu susednú
žabku
po úspešnom vyriešení úlohy všetky žabky postupne vyskočia
na mieste.
Bitmapu jazera vykreslite tak, aby dolný okraj bitmapy bol
na dolnom okraji grafickej plochy (draw môže mať zápornú y-ovú súradnicu),
kamene sú rozostavené vo vzdialenosti 50 od seba (nemuseli by byť na jednej
priamke, ale náhodne <-10,10> okolo myslenej priamky) 100 pixelov od
spodného okraja plochy. Prvý kameň nech je 200 od ľavého okraja. Skákanie
žabiek animujte, t.j. pomocou časovača rozložte skok na niekoľko etáp (aspoň
5). Žabky, resp. kamene zadefinujte ako inštancie tried s metódami na inicializáciu,
skákanie, zistenie, či sa kliklo a podobne.
V programe použite konštanty na počet žabiek N,
výšku výskoku V a pod., napr.
const N=7; V=100;
Napíšte program, ktorý bude riešiť nasledovnú úlohu: textový
súbor subor.txt obsahuje postupnosť príkazov pre korytnačku, ktorá
popisuje nejaký obrázok. Každý príkaz v súbore začína reťazcom písmen a
za niektorými príkazmi je aj celočíselný parameter. Príkazy aj číselné
parametre sú navzájom oddelené aspoň jednou medzerou, resp. koncom riadkov.
V súbore sa môžu vyskytnúť len tieto príkazy: dopredu, vlavo,
vpravo,
opakuj a koniec, pričom okrem koniec majú všetky ostatné
jeden parameter. Prvé tri príkazy zodpovedajú metódam triedy Kor.
Príkaz opakuj umožní opakovať nejakú postupnosť
príkazov zo súboru ukončenú príkazom koniec. Počítajte s tým, že
medzi príkazmi v "tele cyklu opakuj", môžu byť opäť vnorené cykly
opakuj,
napr.
opakuj 3 opakuj 4 dopredu 100 vlavo 90 koniec
vpravo 120 koniec
nakreslí 3 navzájom pootočené štvorce.
Na vykreslenie súboru zadefinujete triedu mojaKor
potomka triedy Kor, ktorá bude obsahovať stavové premenné a metódy:
prikazy:array of príkaz;
// prikaz je napr. záznam o jednom príkaze v postupnosti
kresli(meno:string);
// meno súboru - načíta súbor do štruktúry
vykonaj(x:integer);
// x je číslo záznamu v poli
opakuj(n:integer; x:integer); // n je počet
opakovaní
Parameter x v metódach Vykonaj a Opakuj obsahuje číslo záznamu
v dynamickom poli, od ktorého sa majú interpretovať príkazy.
Metóda Vykonaj na príkaze koniec skončí, na príkaze
opakuj
zavolá metódu Opakuj (Opakuj pre n<1 neurobí nič).
Môžete predpokladať, že súbor je zadaný korektne a neobsahuje
žiadne iné príkazy ani iné znaky.