00001 #include "Deklaracje.h"
00002 #include <vector>
00003 #include <list>
00004 
00005 class Plansza;
00006 class PlanszaWirtualna;
00007 
00008 class Gracz
00009 {
00010 protected:
00011         Plansza * plansza;
00012 
00013         TURA identyfikator;     
00014 
00015         bool_ turaZakonczona;
00016 public:
00017         TURA Id(){return identyfikator;};
00018         Gracz(Plansza *plansza, TURA id);
00019         bool_ StanTury(){return turaZakonczona;};
00020         virtual void RozpocznijTure() {turaZakonczona=false;};
00021         virtual void ObslugaMyszy(WSPOLRZEDNE_EKRANOWE wspolrzedne){;};
00022 
00023         
00024 };
00025 
00026 class Czlowiek: public Gracz
00027 {
00028 public:
00029         Czlowiek(Plansza* plansza, TURA id): Gracz(plansza,id){;};
00030         void ObslugaMyszy(WSPOLRZEDNE_EKRANOWE wspolrzedne);
00031 
00032 };
00033 
00034 class Komputer: public Gracz
00035 {
00036 private:
00037         int sredniaLiczbaOdwiedzin;
00038         int liczbaOdwiedzin;
00039         std::vector<std::pair<int,RUCH>> tablicaHistorii;
00040         std::pair<int,RUCH> NegMax(PlanszaWirtualna model,int glebokosc, TURA gracz);
00041         std::pair<int,RUCH> AlphaBeta(PlanszaWirtualna model,int glebokosc, TURA gracz, std::pair<int,RUCH> alpha,  std::pair<int,RUCH> beta);
00042         std::pair<int,RUCH> AlphaBetaHT(PlanszaWirtualna model,int glebokosc, TURA gracz, std::pair<int,RUCH> alpha,  std::pair<int,RUCH> beta);
00043         int Ocena(PlanszaWirtualna model, TURA gracz, int glebokosc);
00044         int glebokoscMax;
00045         int algorytm;
00046         void WypelnijTabliceHistorii();
00047 
00048         std::list<RUCH> porzednieRuchy;
00049 public:
00050         Komputer(Plansza* plansza, TURA id,int glebokosc,int algorytm): Gracz(plansza,id), sredniaLiczbaOdwiedzin(0), glebokoscMax(glebokosc), algorytm(algorytm) {     WypelnijTabliceHistorii();};
00051         void RozpocznijTure();
00052 
00053 };