Skúška z programovania pre 1i, 1MI a 1FI
11.1.2000 do
  1. Faraón zadal Abdulovi vyčistiť všetky kvádre jeho novej pyramídy. Začať má na ľubovoľnom kvádri v spodnom rade a postupne má vyčistiť všetky kvádre. Pyramída má v spodnom rade N kvádrov, v rade nad nimi je N-1 kvádrov, atď. až v najvyššom N-tom rade je už len jeden. Aby to pre Abdula nebola taká jednotvárna robota, faraón mu vymyslel ešte dve pravidlá:
  2. Napíšte program, pomocou ktorého sa pokúsite prejsť všetky políčka pyramídy (každé nepárny počet-krát). Kvádre pyramídy zobrazujte pomocou bitmáp kamen1.bmp (špinavý) a kamen2.bmp (čistý) a hráča bitmapou hrac.bmp (bielu farbu urobte priesvitnou).
    Hráč sa bude ovládať klikaním ľavým tlačidlom myši na kvádre. Pri štarte programu hráč ešte nie je zobrazený, ale čaká sa na prvé kliknutie do spodného radu.
    Na začiatku hry môžu byť niektoré kvádre pyramídy už čisté. Počiatočnú informáciu načítate z textového súboru vstup.txt:
  1. Napíšte program, ktorý bude pomocou korytnačiek simulovať pohyb červíka na obrazovke. Červík sa skladá z niekoľkých dielikov (každý dielik je jedna korytnačka s trojuholníkovým tvarom, pričom prvá - hlava je zelená a ostatné sú svetlošedé) a pohybuje sa podľa týchto pravidiel:
  2. Červík má na začiatku dĺžku 6 dielikov.
    Okrem červíka sa v ploche nachádza N kúskov potravy (na začiatku hry sú náhodne rozhádzané po ploche) - aj tieto sú zobrazené korytnačkami (s tvarom červený krížik). Ak hlava červíka prejde blízko nejakej potravy (použite metódu blízko), tak tento kúsok potravy zmizne (zruší sa príslušná korytnačka) a červík sa na konci predĺži o jeden dielik (pribudne jedna korytnačka na pozícii posledného dielika).
    Červíka aj zoznam kúskov potravy reprezentujte dvoma triedami, napr.
     
    cervik = class
      v:VelaKor;
      constructor Create(n:integer);
      destructor Destroy; override;
      procedure krok;    // červík urobí jeden krok
      procedure pridaj;  // pridá dielik na koniec červíka
    end;
    potrava = class
      v:VelaKor;
      constructor Create(n:integer);
      destructor Destroy; override;
    end;

    Na pohyb červíka netreba časovač - v procedúre WMstart urobte nekonečný cyklus, v ktorom sa hýbe červík a kontroluje potrava.
    V programe zadefinujte konštanty pre dĺžky a uhol, napr. takto

      const d=3; u=20; dd=10; N=30;
© AB
Skúška Z03/2000