adding game_ext.h + game_ext.c
This commit is contained in:
1 parent
af17b34a9a
commit
5e65b3c99f
2 files changed
+95
No files matched your search
@@ -0,0 +1,3 @@
|
||||
#include <stdio.h>
|
||||
#include <stdio.h>
|
||||
#include "game_ext.h"
|
||||
+92
@@ -0,0 +1,92 @@
|
||||
/**
|
||||
* @file game_ext.h
|
||||
* @brief Extended Game Functions.
|
||||
* @details See @ref index for further details.
|
||||
* @copyright University of Bordeaux. All rights reserved, 2021.
|
||||
**/
|
||||
|
||||
#ifndef __GAME_EXT_H__
|
||||
#define __GAME_EXT_H__
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "game.h"
|
||||
|
||||
/**
|
||||
* @name Extended Functions
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Creates a new game with extended options and initializes it.
|
||||
* @details See description of game extensions on @ref index.
|
||||
* @param nb_rows number of rows in game
|
||||
* @param nb_cols number of columns in game
|
||||
* @param squares an array describing the initial state of each square
|
||||
* (row-major storage)
|
||||
* @param wrapping wrapping option
|
||||
* @return the created game
|
||||
**/
|
||||
game game_new_ext(uint nb_rows, uint nb_cols, square* squares, bool wrapping);
|
||||
|
||||
/**
|
||||
* @brief Creates a new empty game with extended options.
|
||||
* @details All squares are initialized with empty squares.
|
||||
* @details See description of game extensions on @ref index.
|
||||
* @param nb_rows number of rows in game
|
||||
* @param nb_cols number of columns in game
|
||||
* @param wrapping wrapping option
|
||||
* @return the created game
|
||||
**/
|
||||
game game_new_empty_ext(uint nb_rows, uint nb_cols, bool wrapping);
|
||||
|
||||
/**
|
||||
* @brief Gets the number of rows (or height).
|
||||
* @param g the game
|
||||
* @return the number of rows on this game
|
||||
* @pre @p g is a valid pointer toward a cgame structure
|
||||
**/
|
||||
uint game_nb_rows(cgame g);
|
||||
|
||||
/**
|
||||
* @brief Gets the number of columns (or width).
|
||||
* @param g the game
|
||||
* @return the the number of columns on this game
|
||||
* @pre @p g is a valid pointer toward a cgame structure
|
||||
**/
|
||||
uint game_nb_cols(cgame g);
|
||||
|
||||
/**
|
||||
* @brief Checks if the game has the wrapping option
|
||||
* @return true, if wrapping, false otherwise
|
||||
* @pre @p g is a valid pointer toward a cgame structure
|
||||
**/
|
||||
bool game_is_wrapping(cgame g);
|
||||
|
||||
/**
|
||||
* @brief Undoes the last move.
|
||||
* @details Searches in the history the last move played (by calling
|
||||
* @ref game_play_move or @ref game_redo), and restores the state of the game
|
||||
* before that move. If no moves have been played, this function does nothing.
|
||||
* The @ref game_restart function clears the history.
|
||||
* @param g the game
|
||||
* @pre @p g is a valid pointer toward a cgame structure
|
||||
**/
|
||||
void game_undo(game g);
|
||||
|
||||
/**
|
||||
* @brief Redoes the last move.
|
||||
* @details Searches in the history the last cancelled move (by calling @ref
|
||||
* game_undo), and replays it. If there are no more moves to be replayed, this
|
||||
* function does nothing. After playing a new move with @ref game_play_move, it
|
||||
* is no longer possible to redo an old cancelled move.
|
||||
* @param g the game
|
||||
* @pre @p g is a valid pointer toward a cgame structure
|
||||
**/
|
||||
void game_redo(game g);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif // __GAME_EXT_H__
|
||||
Reference in new issue
Block a user