diff options
Diffstat (limited to 'puzzle.hpp')
-rw-r--r-- | puzzle.hpp | 12 |
1 files changed, 10 insertions, 2 deletions
@@ -9,7 +9,7 @@ #include <memory> enum { - puzzle_pieces = 8, + puzzle_pieces = 9, puzzles_per_side = 3, puzzle_size = 100, spacing = 5 @@ -27,8 +27,12 @@ class GameParams { public: struct coordinates { int x, y; + bool operator==(const coordinates& v) const { + return this->x == v.x && this->y == v.y; + } }; private: + static GameParams *instance; coordinates standard_puzzle_coordinates[puzzle_pieces]; char free_puzzles[puzzle_pieces]; coordinates empty_box; @@ -42,15 +46,19 @@ private: void NextUntestedPuzzles(); bool IsSolvability(); void CreateNewPuzzles(); + friend class PuzzleGame; + friend class ASearch; friend void press_button_callback(Fl_Widget*, void*); + friend void solve_problem_callback(Fl_Widget*, void*); public: void SetXYEmptyBox(int x, int y) { empty_box.x = x; empty_box. y = y; } coordinates GetXYEmptyBox() { return empty_box; } static GameParams *SetUpParams(Fl_Window *win) { + if(instance) + return instance; GameParams *gi = new GameParams(win); gi->CalculateStandardPuzzlePos(); - gi->SetXYEmptyBox(215, 245); return gi; } }; |