Facebook
From Paltry Goose, 4 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 189
  1. //ZADANIE 4 (Polimorfizm)
  2.  
  3. //Dane są następujące klasy:
  4.  
  5. class Szachownica
  6.   {
  7.       friend class Figura;
  8.  
  9.       Figura *sz[8][8];                                         // tablica kontrolna zawierająca wskażniki do ustawionych figur // NULL w przypadku gdy pole jest puste;
  10.      
  11.           char wiz[8][8];                                               // tablica do wizualizacji : 'O' pole puste 'X' pole bite , 'G'- polożenie gońca,
  12.                                                                                         // 'W' - położenie wieży; zapisywane przez metodę range klasy Figura
  13.     public:
  14.        
  15.       Szachownica()                                                     // tworzy pustą szachownicę: pola w tablicy sz ustawione na NULL , w tablicy wiz na 'O'
  16.       {
  17.         clear();
  18.       }
  19.          
  20.       void showRange();                                         // metoda wywołuje na wszystkich polach tablicy sz (różnych od NULL) //metodę wirtualną range
  21.       void display();                                           // wyświetla szachownnice (tablica wiz)
  22.       void clear();                                                     // tworzy pustą szachownice, wywołuje metode remove na wszystkich polach tablicy sz (różnych od NULL)
  23.                                                                                         // UWAGA usunięcie figury nie oznacza usunięcie z pamięci - nie wywołujemy delete
  24.  
  25.   };
  26.  
  27.  
  28.  
  29. class Figura
  30.   {
  31.     protected:
  32.         Szachownica *s;                                         //figura zna swoją szachownice - ustawiane przez set
  33.         int x,y;                                                        // położenie na szachownicy ustawiane przez set
  34.                
  35.                
  36.       bool set(int x,int y, char z)             //pomocnicza uzywana przez range i set w sekcji public   ||UWAGA:(friend nie jest dziedziczony)
  37.         {
  38.         s->wiz[x][y]=z;                                         //sprawdzic czy pole nie jest zajęte (zwracamy wtedy false)
  39.         return true;
  40.         };
  41.                
  42.                
  43.       bool set(int x,int y,Figura *f)           // ustawia pole x,y tablicy sz na wskaźnik do klasy dziedziczącej z klasy Figura (Wieza , Goniec)
  44.         {
  45.         s->sz[x][y]=f;                                          //sprawdzic czy pole nie jest zajęte (zwracamy wtedy false)
  46.         return true;
  47.         };
  48.                
  49.                
  50.     public:
  51.         Figura(){s=NULL;};
  52.                
  53.         virtual bool set(Szachownica *s, int x_,int y_)=0;
  54.                                                                                                                         //metoda ustawia figure na szachownicy
  55.                                                                                                                         // zwraca false gdy pole jest zajęte
  56.                                                                                                                         // w tablicy wiz ustawia 'W' lub 'G' (dalsza część zadania)
  57.                                                                                                                         // za pomocą set(int x,int y,Figura *f) ustawia pole w tablicy sz.
  58.  
  59.         void remove()
  60.         {
  61.           s->sz[x][y]=NULL;
  62.           s->wiz[x][y]='.';
  63.           s=NULL;// ustawia s na NULL - figura zdjęta z szachownicy
  64.         };
  65.                
  66.       virtual void range()=0;//pokazuje zasięg bicia na szachownicy - operuje na tablicy wiz klasy Szachownica
  67.  
  68.   };
  69.  
  70.  
  71.  
  72. class Wieza : public Figura
  73.   {
  74.   public:
  75.     Wieza():Figura(){};
  76.    
  77.    bool set(Szachownica *s_, int x_,int y_)
  78.     {
  79.       s=s_;
  80.       Figura::set(x_,y_,'W');
  81.                
  82.           // wywołać set(int x,int y,Figura *f) z odpowiednim parametrem
  83.      
  84.           return true;
  85.     }
  86.        
  87.     void range();                                                               //zdefiniować zasięg bicia dla Wieży
  88.   };
  89.  
  90.  
  91.  
  92. class Goniec : public Figura
  93.   {
  94.     // uzupełnić
  95.   };
  96.  
  97. //-------------------------------------------------------------chujwe metody
  98.  
  99. void Szachownica::clear()
  100.   {
  101.     for(int i=0;i<8;i++)
  102.       for(int j=0;j<8;j++)
  103.         {
  104.           wiz[i][j]='.';
  105.           sz[i][j]=NULL;
  106.         };
  107.    };
  108.    
  109. void Szachownica::display()
  110.   {
  111.     for(int i=0;i<8;i++)
  112.       {
  113.         for(int j=0;j<8;j++)
  114.           cout<<wiz[i][j];
  115.         cout<<endl;
  116.       }
  117.   }
  118.  
  119. //------------------------------------------------main od microsofta na chuj potrzeby
  120.  
  121. int _tmain(int argc, _TCHAR* argv[])
  122.   {
  123.  
  124.   // uzupełnić
  125.   }
  126.  
  127.  
  128.  
  129. Uzuełnić powyższy kod - dodać klasę Goniec która dzidziczy z klasy Figura zdefiniować metodę wirtualną showRange().
  130. Napisać program który tworzy dwie puste szachownice, na pierwszej ustawia gońca , na drugiej gońca i wieże ( w dowolnym miejscu),
  131. wyświetla te dwie szachownice; następnie wywołuje metodę showRange() i ponownie je wyświetl.
  132. Na końcu wywołujemy metodę clear;
  133.  
  134. //pozdrawiam z rodzinka