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

 
1.

testovací textový súbor

Naprogramujte hru Robinson:
  • Robinson sa nachádza na opustenom ostrove a chce sa dostať na ostrov, na ktorom býva Robinsonka;
  • medzi ich ostrovmi sa nachádza množstvo ponárajúcich sa a vynárajúcich sa ostrovov;
  • Robinson sa snaží preskákať po susediacich ostrovoch až do cieľa, pričom nesmie spadnúť do mora, resp. sa s ním nesmie ostrov ponoriť, lebo by ho v momente zožrali žraloky;
  • Robinson sa ovláda klávesmi šípok.
Súostrovie je reprezentované v štvorcovej sieti, v ktorej každý štvorček má výšku VYS riadkov obrazovky a šírku SIR stĺpcov obrazovky. V každom políčku hracej plochy sa nachádza ostrov (v nejakej fáze ponárania) alebo more. Políčok hracej plochy je MxN (M riadkov a N stĺpcov). Hracia plocha je popísaná v súbore Robinson.txt:
  • prvý riadok obsahuje čísla: M N VYS SIR
  • ďalej až do konca súboru nasledujú trojice: (znak,riadok,stĺpec), ktoré popisujú políčko na súradniciach (riadok,stĺpec) a znak má túto interpretáciu:
    • + Robinsonov ostrov
    • ! cieľový ostrov s Robinsonkou
    • * vždy vynorený ostrov
    • . nikdy nevynáraný ostrov
    • číslica '1'..'9' označuje ostrov, ktorý sa vynára s pravdepodobnosťou číslica*10%
  • všetky ostatné políčka sú ostrovy, ktoré sa vynárajú s pravdepodobnosťou 50%
  • môžete predpokladať, že súbor je korektný
Každý vynorený ostrov (okrem štartového, cieľového a nikdy neponárajúceho sa) sa pomaly ponára, pričom sa môžu ponárať náhodnou "rýchlosťou".

Políčka hracej plochy aj hráča realizujte pomocou objektov, pričom okrem inicializačnej metódy zadefinujte aj metódu na vykreslenie objektu do video-pamäti (nepoužívajte GotoXY) a tiež pre políčko hracej plochy metódu na zmenu stavu (napr. postupné ponáranie ostrova, vynorenie ostrova a pod.). Úplne vynorený ostrov je vykreslený znakom #219, postupné ponáranie je zobrazené znakmi #178, #177, #176; more by malo byť modré.

Program by sa mal dať v ľubovoľnom okamihu prerušiť klávesom ESC.


 
 
2. Vytvorte triedu MojaKor, ktorá má pridanú stavovú premennú sused:PKor a metódy ZmenSused a UrobTvar. Stavová premenná sused má pri inicializácii hodnotu NIL, metóda ZmenSused (s parametrom typu PKor) priradí do stavovej premennej sused zadanú hodnotu. Metóda UrobTvar (bez parametrov) zmení tvar korynačky tak, že tvarom bude úsečka dĺžky vzdialenosti k susedovi a táto úsečka bude natočená k tomuto susedovi.

Váš program najprv vygeneruje N takýchto korytnačiek na náhodných pozíciách v ploche. Potom každej korytnačke priradí ako suseda nasledovnú korytnačku (i+1), resp. N-tej priradí prvú. Príkaz UKAZ by mal zobraziť spojnice medzi korytnačkami.

Ďalej program umožní pomocou myši ťahať ľubovoľnú korytnačku, pričom sa niektorým korytnačkám bude musieť meniť tvar tak (pomocou UrobTvar), aby spojnice stále spájali susedné korytnačky.

Môžete použiť len unity KorUnit, VelaUnit a MysUnit.