00001 #include "Puzzle.h" 00002 00003 #ifndef STRATEGY_H 00004 #define STRATEGY_H 00005 00014 class Strategy { 00015 00016 private: 00017 00021 Strategy(); 00022 00026 Strategy(const Strategy &s); 00027 00031 Strategy& operator=(const Strategy &s); 00032 00033 protected: 00034 00038 Puzzle *p; 00039 00044 size_t depth; 00045 00046 public: 00047 00048 size_t calls; 00049 00053 Strategy(const Puzzle &p) : depth(0), calls(0) { this->p = new Puzzle(p); } 00054 00058 virtual ~Strategy(); 00059 00064 virtual void setStartCell(size_t &x, size_t &y) = 0; 00065 00071 virtual bool solve(); 00072 00076 void printPuzzle(); 00077 }; 00078 00079 #endif