back to scratko.xyz
summaryrefslogtreecommitdiff
path: root/puzzle.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'puzzle.hpp')
-rw-r--r--puzzle.hpp45
1 files changed, 45 insertions, 0 deletions
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 <FL/Enumerations.H>
+#include <FL/Fl_Button.H>
+#include <string>
+
+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