From 365c27f05d5739213d3a98aa41dcc7f1cb0a6c60 Mon Sep 17 00:00:00 2001 From: scratko Date: Fri, 25 Oct 2024 00:40:58 +0300 Subject: Initial commit Creating widgets with a split image --- puzzle.hpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 puzzle.hpp (limited to 'puzzle.hpp') diff --git a/puzzle.hpp b/puzzle.hpp new file mode 100644 index 0000000..6ceb6e1 --- /dev/null +++ b/puzzle.hpp @@ -0,0 +1,45 @@ +#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 -- cgit v1.2.3