6. Skúška z programovania pre 1i, 1MI a 1FI
13.1.1999 po

 
1. Napíšte program, ktorý umožní zahrať sa domino-tetris:
  • hracia plocha je štvorcová sieť šírky SIR a výšky VYS políčok (sú konštanty programu, napr. SIR=7; VYS=10)
  • zvrchu padajú do tejto hracej plochy hracie kamene, ktoré sú obdĺžniky buď 1x2 alebo 2x2;
  • hráč môže pomocou klávesnice ovládať toto padanie:
    • zadefinujeme si konštanty programu, napr.

    • vlavo=#75; vpravo=#77; padni=' '; otoc=#13;
    • posúvanie hracieho kameňa vľavo, resp. vpravo klávesmi vpravo, resp. vlavo (ak tam nie je prekážka) 
    • kláves otoc otočí kameň o 90 stupňov tak, že ľavý horný roh kameňa je stále na tej istej pozícii;
    • kláves padni spôsobí zrýchlené padanie kameňa (použite dve konštanty cas1 a cas2, ktoré sú pozdržaniami pre normálne a zrýchlené padanie); POZOR! aj počas "pozdržania" by mal hráč mať možnosť ovládať padanie z klávesnice.
  • padajúci kameň sa zastaví na prekážke pod sebou (nahromadené kamene alebo dno hracej plochy);
  • program po dopade kameňa vyhodí všetky úplne zaplnené riadky (riadky nad nimi spadnú nižšie) a vygeneruje v hornom riadku na náhodnej pozícii nový hrací kameň, náhodnej farby (od 1 do 6) a náhodného natočenia;
  • ak po vygenerovaní nového kameňa zistí, že je hracia plocha pod ním zaplnená, tak vypíše správu 'MAS SMOLU' a program končí;
  • políčko hracej plochy je rozmeru 2x3 (napr. plných alebo rámikových) znakov; 
  • celá obrazovka mimo hracej plochy je nejako farebne odlíšená (napr. šedá).
Hraciu plochu reprezentujte objektom s metódami na inicializáciu, vykreslenie, generovanie nového kameňa, padanie kameňa a pod.
Program by sa mal dať v ľubovoľnom okamihu prerušiť klávesom ESC.
Nepoužívajte GotoXY.

 
 
2. Napíšte program pripomínajúci gulečník so zjednodušenými pravidlami pre odrazy:
  • Na gulečníkovej ploche (obrazovke) sú rozmiestnené obdĺžniky. Ak guľa narazí na obdĺžnik, resp. okraj obrazovky, natočí sa smerom k stredu, t.j. k bodu (0,0) s náhodnou odchýlkou od -30 do 30 stupňov a pohybuje sa ďalej, pokiaľ neprejde určenú dráhu.
  • Gule budú predstavovať korytnačky z triedy Velakor. Tieto budeme generovať klikaním pravým tlačidlom myši, a vtedy sa na danom mieste vytvorí vždy nová korytnačka.
  • Gule budeme rozhýbavať pomocou ľavého tlačidla myši. Pri zatlačení ľavého tlačidla na existujúcu korytnačku sa jej farba dočasne zmení na červenú a ťahaním myši určujeme, akú dráhu má daná guľa prejsť (N-násobok dĺžky ťahania myši). Počas ťahania myši sa aktívna (červená) korytnačka otáča smerom od myši. Po pustení tlačidla myši aktívna korytnačka zmení opäť farbu na zelenú a začne sa pohybovať podľa špecifikovaných pravidiel, t.j. v udanom smere dráhu dĺžky N*(vzdialenosť myši a korytnačky). Všetky rozhýbané korytnačky sa pohybujú krokom 1. Aj počas pohybu korytnačiek program umožní vytvárať nové korytnačky, resp. ich spúšťať.
  • Program na začiatku načíta popis obdĺžnikov zo súboru OBD.TXT, vykreslí ich tmavomodrou hrubou čiarou na obrazovku a umožní hrať sa korytnačkový gulečník. Súbor OBD.TXT obsahuje v každom riadku popis jedného obdĺžnika, t.j. 4 celé čísla s nasledujúcou štruktúrou: prvé dve čísla udávajú súradnice ľavého horného rohu obdĺžnika v poradí x, y. Potom nasleduje šírka a výška obdĺžnika. Môžte prepodkladať, že súbor je korektný.
  • N je konštanta programu, napr. N=100.
Program by sa mal dať v ľubovoľnom okamihu prerušiť klávesom ESC.