aboutsummaryrefslogtreecommitdiffstats
path: root/src/displayapp/screens/Twos.h
diff options
context:
space:
mode:
authorJed <jed@mijar.es>2021-01-02 14:08:12 -0600
committerJed <jed@mijar.es>2021-01-02 14:15:12 -0600
commit12617ed1bf0738970c1ccf32d0b523e6d5999531 (patch)
treefe2d90d5495906266bff927516b5284627e66444 /src/displayapp/screens/Twos.h
parentb4fb8897ac97e5ee6299842dac0384ce585743bb (diff)
adds 2048 clone game
styles table reads touch events allows moving tiles allows merging tiles improves tile movement allows merging tiles adds score display implements color edit comments adjust game logic disallows double merges
Diffstat (limited to 'src/displayapp/screens/Twos.h')
-rw-r--r--src/displayapp/screens/Twos.h34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/displayapp/screens/Twos.h b/src/displayapp/screens/Twos.h
new file mode 100644
index 00000000..ad80ca15
--- /dev/null
+++ b/src/displayapp/screens/Twos.h
@@ -0,0 +1,34 @@
+#pragma once
+
+#include <lvgl/src/lv_core/lv_obj.h>
+#include "Screen.h"
+
+namespace Pinetime {
+ namespace Applications {
+ struct Tile {
+ bool merged = false;
+ unsigned int value = 0;
+ };
+ namespace Screens {
+ class Twos : public Screen {
+ public:
+ Twos(DisplayApp* app);
+ ~Twos() override;
+ bool Refresh() override;
+ bool OnButtonPushed() override;
+ bool OnTouchEvent(TouchEvents event) override;
+
+ private:
+ bool running = true;
+ lv_obj_t *scoreText;
+ lv_obj_t *gridDisplay;
+ Tile grid[4][4];
+ unsigned int score = 0;
+ void updateGridDisplay(Tile grid[][4]);
+ bool tryMerge(Tile grid[][4], int &newRow, int &newCol, int oldRow, int oldCol);
+ bool tryMove(Tile grid[][4], int newRow, int newCol, int oldRow, int oldCol);
+ bool placeNewTile();
+ };
+ }
+ }
+} \ No newline at end of file