#ifndef PUZZLE_HPP_SENTRY #define PUZZLE_HPP_SENTRY #include #include #include enum { puzzle_pieces = 15, puzzles_per_side = 4, puzzle_size = 75, spacing = 5 }; class Puzzle : Fl_Button{ unsigned int sequence_number; std::string path; Puzzle(int x, int y) : Fl_Button(x, y, puzzle_size, puzzle_size), sequence_number(0) {} friend class GameParams; }; class GameParams { struct coordinates { int x, y; }; coordinates puzzle_coordinates[puzzle_pieces]; char free_puzzles[puzzle_pieces]; Puzzle *puzzles[puzzle_pieces]; GameParams() : puzzles{nullptr} {} void ResetFreePuzzles(); void CalculatePuzzlePos(); void CreateNewPuzzles(); public: void NewGame(); static GameParams *StartParams() { GameParams *gi = new GameParams; gi->CalculatePuzzlePos(); return gi; } }; #endif