ttt_multi_game.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #include <furi.h>
  2. #include <stdint.h>
  3. typedef enum {
  4. TttMultiGamePlayerNone = 0,
  5. TttMultiGamePlayerX = 1,
  6. TttMultiGamePlayerO = 2,
  7. } TttMultiGamePlayer;
  8. typedef enum {
  9. TttMultiGameStateTurnO,
  10. TttMultiGameStateTurnX,
  11. TttMultiGameStateFinished
  12. } TttMultiGameState;
  13. typedef enum {
  14. TttMultiGameResultXWin,
  15. TttMultiGameResultOWin,
  16. TttMultiGameResultDraw,
  17. TttMultiGameResultNone
  18. } TttMultiGameResult;
  19. typedef struct TttMultiGame TttMultiGame;
  20. typedef struct {
  21. TttMultiGamePlayer player;
  22. uint8_t x;
  23. uint8_t y;
  24. } TttMultiGameMove;
  25. TttMultiGameMove* ttt_multi_game_move_alloc();
  26. void ttt_multi_game_move_free(TttMultiGameMove* move);
  27. void ttt_multi_game_move_copy(TttMultiGameMove* dst, const TttMultiGameMove* src);
  28. TttMultiGame* ttt_multi_game_alloc();
  29. void ttt_multi_game_free(TttMultiGame* game);
  30. void ttt_multi_game_reset(TttMultiGame* game);
  31. void ttt_multi_game_swap_player(TttMultiGame* game);
  32. void ttt_multi_game_make_move(TttMultiGame* game, TttMultiGameMove* move);
  33. bool ttt_multi_game_is_move_valid(TttMultiGame* game, TttMultiGameMove* move);
  34. TttMultiGameState ttt_multi_game_get_state(TttMultiGame* game);
  35. TttMultiGameResult ttt_multi_game_get_result(TttMultiGame* game);
  36. TttMultiGamePlayer ttt_multi_game_player_at(TttMultiGame* game, uint8_t x, uint8_t y);
  37. TttMultiGamePlayer ttt_multi_game_current_player(TttMultiGame* game);