#include "ttt-board.h"
-int ttt_board_is_won (ttt_board_t *board);
-
int ttt_board_is_won (ttt_board_t *board)
{
if (
- board->cells[0] == board->cells[3] && board->cells[3] == board->cells[6] ||
- board->cells[1] == board->cells[4] && board->cells[4] == board->cells[7] ||
- board->cells[2] == board->cells[5] && board->cells[5] == board->cells[8] ||
- board->cells[0] == board->cells[1] && board->cells[1] == board->cells[2] ||
- board->cells[3] == board->cells[4] && board->cells[4] == board->cells[5] ||
- board->cells[6] == board->cells[7] && board->cells[7] == board->cells[8] ||
- board->cells[0] == board->cells[4] && board->cells[4] == board->cells[8] ||
- board->cells[2] == board->cells[4] && board->cells[4] == board->cells[6]
+ (board->cells[0] == board->cells[3] && board->cells[3] == board->cells[6] && board->cells[0] != TTT_CELL_EMPTY) ||
+ (board->cells[1] == board->cells[4] && board->cells[4] == board->cells[7] && board->cells[1] != TTT_CELL_EMPTY) ||
+ (board->cells[2] == board->cells[5] && board->cells[5] == board->cells[8] && board->cells[2] != TTT_CELL_EMPTY) ||
+ (board->cells[0] == board->cells[1] && board->cells[1] == board->cells[2] && board->cells[0] != TTT_CELL_EMPTY) ||
+ (board->cells[3] == board->cells[4] && board->cells[4] == board->cells[5] && board->cells[3] != TTT_CELL_EMPTY) ||
+ (board->cells[6] == board->cells[7] && board->cells[7] == board->cells[8] && board->cells[6] != TTT_CELL_EMPTY) ||
+ (board->cells[0] == board->cells[4] && board->cells[4] == board->cells[8] && board->cells[0] != TTT_CELL_EMPTY) ||
+ (board->cells[2] == board->cells[4] && board->cells[4] == board->cells[6] && board->cells[2] != TTT_CELL_EMPTY)
)
-/* printf ("'board->current_player''s Win!") */
+ {
+ printf ("%c's Win! ", board->current_player);
return(1);
+ }
else
return(0);
}
* 3|4|5
* 6|7|8
*
- * Returns: 1 if a move is made succesfully. O if a move is invalid
- * (the given cell is not empty).
- *
- * Bugs: Currently this function always places X for all moves. So,
- * yeah, we'll need to fix that.
+ * Returns: TTT_ERROR_NONE if a move is made succesfully. TTT_ERROR_NOT_VALID_MOVE
+ * if a move is invalid (the given cell is not empty).
*/
-
ttt_error_t ttt_board_make_move (ttt_board_t *board, int move)
{
if (board->cells[move] != TTT_CELL_EMPTY)
board->cells[move] = board->current_player;
if (board->current_player == TTT_CELL_X)
+ {
+ ttt_board_is_won (board);
board->current_player = TTT_CELL_O;
+ }
else
board->current_player = TTT_CELL_X;
-
+
return TTT_ERROR_NONE;
}