00001 #include <vector>
00002 #include <list>
00003 #include "Deklaracje.h"
00007 class PlanszaWirtualna
00008 {
00009 protected:
00010         
00011 
00015         int rozmiarBokuPlanszy;
00016 
00020         std::vector<POLE> plansza;
00021 
00026         void Przejmij(WSPOLRZEDNE_PLANSZY wspolrzedne, TURA gracz);
00027 
00031         std::vector<POLE>::size_type Indeks(WSPOLRZEDNE_PLANSZY wspolrzedne);
00032         
00033 public:
00034         PlanszaWirtualna(int rozmiarBokuPlanszy, bool_ pionyPoczatkowe=true);
00035         PlanszaWirtualna(const PlanszaWirtualna & zrodlo);
00036         std::vector<RUCH> GenerujRuchy(TURA gracz);
00037         bool_ UstawPiona(WSPOLRZEDNE_PLANSZY wsp,TURA gracz);
00038         std::list<std::pair<TURA,RUCH> > wykonaneRuchy;
00039 
00043         int PobierzRozmiarBokuPlanszy(){return rozmiarBokuPlanszy;};
00044         int IloscDostepnychPionow(TURA gracz);
00052         virtual bool_ WykonajRuch(WSPOLRZEDNE_PLANSZY zrodlo, WSPOLRZEDNE_PLANSZY cel, TURA gracz);
00053         
00054         
00055 
00056 
00064         bool_ SprawdzRuch(WSPOLRZEDNE_PLANSZY zrodlo, WSPOLRZEDNE_PLANSZY cel, TURA gracz);
00065 
00071         int IloscDostepnychRuchow(TURA gracz);
00072         
00076         POLE Pole(WSPOLRZEDNE_PLANSZY wspolrzedne);
00077 
00078 };
00083 class Plansza: public PlanszaWirtualna
00084 {
00085 private:
00086 
00087         
00088         
00092         int pozycjaXNaEkranie;
00096         int pozycjaYNaEkranie;
00100         int szerokoscPola;
00104         WSPOLRZEDNE_PLANSZY zaznaczenie;
00108         WSPOLRZEDNE_PLANSZY podswietlenie;
00109 
00110         bool_ podswietlaj;
00111         bool_ zaznaczaj;
00112 
00113 
00114         std::vector<WSPOLRZEDNE_PLANSZY> podpowiedzi;
00115 
00116 
00117 public:
00118     bool_ podpowiadaj;
00119                 void GenerujPodpowiedzi(TURA gracz);
00120         Plansza(int rozmiarBokuPlanszy,int pozycjaXNaEkranie, int pozycjaYNaekranie, int szerokoscPola, bool_ pionyPoczatkowe=true);
00121 
00122         bool_ WykonajRuch(WSPOLRZEDNE_PLANSZY zrodlo, WSPOLRZEDNE_PLANSZY cel, TURA gracz);
00126         void Rysuj();
00127 
00128 
00129         void AnimujRuch(WSPOLRZEDNE_PLANSZY zrodlo, WSPOLRZEDNE_PLANSZY cel, TURA gracz);
00130 
00134         WSPOLRZEDNE_EKRANOWE WspolrzedneEkranowe(WSPOLRZEDNE_PLANSZY wspolrzedne);
00135 
00139         WSPOLRZEDNE_PLANSZY WspolrzednePlanszy(WSPOLRZEDNE_EKRANOWE wspolrzedne);       
00140 
00144         void UstawZaznaczenie(WSPOLRZEDNE_EKRANOWE wspolrzedne);
00148         WSPOLRZEDNE_PLANSZY PobierzZaznaczenie();
00149         
00153         void UstawPodswietlenie(WSPOLRZEDNE_EKRANOWE wspolrzedne);
00157         WSPOLRZEDNE_PLANSZY PobierzPodswietlenie();
00158         
00159         void Podswietlaj(bool_ stan){podswietlaj=stan;};
00160         void Zaznaczaj(bool_ stan){zaznaczaj=stan;};
00161         bool_ StanZaznaczenia(){return zaznaczaj;};
00162 
00167         std::pair<WSPOLRZEDNE_EKRANOWE,WSPOLRZEDNE_EKRANOWE> KrawedziePlanszy();
00168 };