]> git.draconx.ca Git - rrace.git/blobdiff - src/game.h
Check victory condition so the game is winnable.
[rrace.git] / src / game.h
index f4473a71ae8d64e332e3bd5690c1f0cc1310ea3c..d17eb992f7fd3d86d19d521b537588c4e1dbe2c5 100644 (file)
@@ -42,11 +42,11 @@ struct board {
         * corresponds to position (0,0), bit 4 is position (4,0) and bit 25
         * is position (4, 4).
         *
-        *   game[0] - the board mask, all bits set except one indicating the
+        *   game[0] - least significant bit of the tile's colour.
+        *   game[1] - tile colour.
+        *   game[2] - most significant bit of the tile's colour.
+        *   game[3] - the board mask, all bits set except one indicating the
         *             absense of a tile at this position.
-        *   game[1] - least significant bit of the tile's colour.
-        *   game[2] - tile colour.
-        *   game[3] - most significant bit of the tile's colour.
         */
        uint_least32_t game[4];
 
@@ -119,6 +119,11 @@ static inline uint_fast32_t board_mask_v(int x, int y0, int y1)
  */
 int game_do_move(struct board *board, int x, int y);
 
+/*
+ * Returns 1 if the game is in a winning position, or 0 otherwise.
+ */
+int game_check_goal(struct board *board);
+
 /*
  * Initialize the game RNG such that the next call to game_reset will produce a
  * new board that is entirely dependent on the given seed value.
@@ -130,4 +135,9 @@ void game_reseed(unsigned long long seed);
  */
 void game_reset(struct board *board);
 
+/*
+ * Disable new moves and clear all tile bits other than the 9 goal tiles.
+ */
+void game_finish(struct board *board);
+
 #endif