X-Git-Url: https://git.cworth.org/git?p=ttt;a=blobdiff_plain;f=src%2Ftest-board.c;h=0ec4e24275565ff3c2cdec05b229d7914db0a9f2;hp=313573528a0c156a57c59351ee39409bd7fbe2b9;hb=54c540ee6df71b5e39f4ff63d90b55e595a9209f;hpb=a17b73b1671accfb7d68f6e07616a265ae64e500 diff --git a/src/test-board.c b/src/test-board.c index 3135735..0ec4e24 100644 --- a/src/test-board.c +++ b/src/test-board.c @@ -2,52 +2,61 @@ #include "ttt-board.h" -int ttt_board_is_won (ttt_board_t *board) -{ - if ( - (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 ("%c's Win! ", board->current_player); - return(1); - } - else - return(0); -} - int main (void) { ttt_board_t board; int m, i, newline; + ttt_cell_t winner, move_result; ttt_board_init (&board); - for (i = 0; i <= 8; i++) + + i = 0; while (i < 9) { - printf ("This is the board \""); ttt_board_write (&board, stdout); - printf ("\"\n"); - - printf ("Make a move \n"); + printf ("\n"); + + printf ("Make a move: "); m = getchar(); + if (m == EOF) + { + printf ("\nGoodbye.\n"); + exit (1); + } newline = getchar(); - printf ("getchar returned a numeric value of %d which is character '%c'\n", m, m); - m = m - '0'; - ttt_board_make_move (&board, m); + m -= '0'; + move_result = ttt_board_make_move (&board, m); + if (move_result == TTT_ERROR_NOT_GRID) + { + printf ("Sorry, %c is an invalid move.\n" + "Please enter a number between 0 & 8.", m + '0'); + continue; + } + if (move_result == TTT_ERROR_NOT_VALID_MOVE) + continue; + + winner = ttt_board_is_won (&board); + if (winner == TTT_CELL_X) + { + printf ("X's Win! "); + break; + } + else if (winner == TTT_CELL_O) + { + printf ("O's Win! "); + break; + } + else if (i == 8) + { + printf ("Cat's Game!"); + break; + } + i++; } - - printf ("This is the board \""); + ttt_board_write (&board, stdout); - printf ("\"\n"); - + printf ("\n"); return 0; }