Skúška z programovania pre 1i, 1MI a 1FI
14.1.2000 po
  1. Napíšte program, pomocou ktorého budeme sledovať správanie myši v labyrinte:
  2. V súboroch lab1.bmp, ..., lab9.bmp nájdete zodpovedajúce bitmapy pre políčka labyrintu. Labyrint realizujte pomocou komponentu StringGrid, ktorý má políčka veľkosti 50x50 pixelov -- tento nebude väčší ako 10 riadkov po 15 stĺpcov. V programe zadefinujte triedu Hra, ktorá bude obsahovať všetky potrebné dátové štruktúry (informácie o políčkach, pozíciu myši, bitmapy a pod.) a metódy na načítanie labyrintu zo súboru , nakreslenie jedného políčka labyrintu do Canvasu StringGridu, náhodný pohyb myši a pod.
    Labyrint je definovaný v textovom súbore labyrint.txt -- každý znak popisuje jedno políčko labyrintu (súbor je korektný): Ak myš príde na políčko so syrom, už z tohoto políčka neodíde, len sa náhodne vrtí na mieste.
  1. Napíšte program, ktorý bude robiť nasledovný efekt:
  2. Zadefinujte typ prikaz a triedu mojaKor (deklaráciu môžete mierne zmeniť):
      type
        prikaz = record typ:(tph,tpd); bod:TPoint end;

        mojaKor = class(kor)
          plan:array of prikaz;
          ix:integer;
          constructor Create;
          procedure pridajPD(x,y:integer);
          procedure pridajPH(x,y:integer);
          procedure urobKrok;
        end;

    Počas kreslenia myšou po ploche budete body kresby ukladať korytnačke do dynamického poľa plan a to buď typu tph alebo tpd, podľa toho, či sa do príslušného bodu treba dostať so zdvihnutým perom (tph) alebo spusteným (tpd). Metódy pridajPH a pridajPD pridávajú do tohoto dynamického poľa vety príslušného typu.
    Metóda urobKrok spraví jeden malý krok z obrázku (z poľa plan), pričom spracovávaný bod (ku ktorému sa korytnačka blíži) má index v stavovej premennej ix. Dĺžka elementárneho kroku je v konštante programu krok (môže mať hodnotu napr. 3). Korytnačka pri kreslení čiary nesmie prejsť dlhší úsek ako krok -- ak je veľmi blízko cieľového bodu, tak sa do neho presunie priamo.
© AB
Skúška Z10/2000