back to scratko.xyz
summaryrefslogtreecommitdiff
path: root/puzzle.hpp
diff options
context:
space:
mode:
authorscratko <m@scratko.xyz>2024-10-25 00:40:58 +0300
committerscratko <m@scratko.xyz>2024-10-25 00:50:53 +0300
commit365c27f05d5739213d3a98aa41dcc7f1cb0a6c60 (patch)
tree96fd9f7a1a808b6ab96e310037b9db376921d2f1 /puzzle.hpp
download15-puzzle-master.tar.gz
15-puzzle-master.tar.bz2
15-puzzle-master.zip
Initial commitHEADmaster
Creating widgets with a split image
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