Skúška z programovania pre 1i, 1MI a 1FI
12.1.2000 po
  1. Naprogramujte hru Skákajúci Jánošík:
  2. Obrázky ku hre sú v súboroch janosik.bmp, drevo.bmp a truhla.bmp -- všetky tri majú mať bielu ako priesvitnú farbu. Výška jedného radu brvien je v konštante programu vzd a cieľový breh na obrazovke má výšku v konštante breh -- všetky ostatné hodnoty na obrazovke vypočítajte z týchto konštánt. Podobne zadefinujte konštanty pre počty brvien v jednotlivých radoch (poc) a rýchlosť pohybu týchto radov (rych), napr. takto (podľa potreby si tieto deklarácie pozmeňte)
      const vzd = 50; breh = 150;
        poc:array[1..4] of integer = (4,3,3,2);
        rych:array[1..4] of integer = (4,-7,7,-10);
    Jánošík skáče nahor po zatlačení klávesu medzera -- buď skočí na brvno a vtedy sa s ním vezie (na kraji obrazovky sa utopí), alebo skočí mimo a vtedy sa utopí - na svojom mieste zmizne, v hornom páse sa objaví truhlička a po krátkom čase sa objaví na štartovnej pozícii. Ak sa pri skoku dostane na protiľahlý breh, jeho obrázok sa objaví v hornom páse a po krátkom čase sa objaví zase na štartovnej pozícii.
    Jánošíka aj brvná reprezentujte ako inštancie nejakých vami navrhnutých tried.
  1. Daný je textový súbor body.txt, ktorý popisuje nejaký obrázok (postupnosťou bodov v súradnicovej sústave) a počiatočné informácie o niekoľkých korytnačkách:
  2. Napíšte program, ktorý načíta daný textový súbor, vytvorí v ňom popísané korytnačky, ktoré budú kresliť zadefinovaný obrázok ale každá zo svojej domovskej pozície so svojim natočením a danou farbou. Zrejme najprv prevediete postupnosť bodov do postupnosti korytnačích príkazov vpravo a dopredu a až tieto príkazy sa budú vykonávať danými korytnačkami. Môžete si zadefinovať pomocnú korytnačku, ktorá bude so zdvihnutým perom "obchádzať" body obrázku a počítať parametre pre dopredu (vzdialenosť od predchádzajúceho bodu) a vpravo (uhol od momentálneho natočenia pomocou metódy smerom). Postupnosť korytnačích príkazov ukladajte do dynamického poľa.
    Zadefinujte triedu mojaKor:
        mojaKor = class(Kor)
          dx,dy,dsmer:integer;
          constructor Create(var tx:TextFile);
          procedure domov;
          procedure kresli(const d:array of real);
        end;
    Stavové premenné dx, dy a dsmer si pamätajú domovskú pozíciu (tam kde vznikla) a metóda domov presunie korytnačku do domovskej pozície. Metóda kresli zinterpretuje obrázok uložený v dynamickom poli.
    Program po načítaní súboru a vytvorení korytnačiek (ako prvky VelaKor) postupne vykreslí obrázok všetkými korytnačkami (metóda kresli) a potom po kliknutí myšou zmaže obrazovku a znovu nakreslí tento obrázok ale paralelne všetkými korytnačkami naraz.
© AB
Skúška Z06/2000