From 5166baca35916a708e6ad8539e5cb333bbcfeb18 Mon Sep 17 00:00:00 2001 From: Kevin Worth Date: Fri, 16 Dec 2005 01:27:15 +0000 Subject: [PATCH] Prevented random memory corruption and other cleanup --- src/test-board.c | 19 +++++++++++++++---- src/ttt-board.c | 11 ++++++++--- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/src/test-board.c b/src/test-board.c index 89af871..e07e28d 100644 --- a/src/test-board.c +++ b/src/test-board.c @@ -7,7 +7,7 @@ main (void) { ttt_board_t board; int m, i, newline; - ttt_cell_t winner; + ttt_cell_t winner, move_result; ttt_board_init (&board); @@ -16,12 +16,23 @@ main (void) ttt_board_write (&board, stdout); printf ("\n"); - printf ("Make a move "); + printf ("Make a move: "); m = getchar(); + if (m == EOF) + { + printf ("\nGoodbye.\n"); + exit (1); + } newline = getchar(); - m = m - '0'; - if (ttt_board_make_move (&board, m) == TTT_ERROR_NOT_VALID_MOVE) + 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'); + + if (move_result == TTT_ERROR_NOT_VALID_MOVE) continue; + winner = ttt_board_is_won (&board); if (winner == TTT_CELL_X) { diff --git a/src/ttt-board.c b/src/ttt-board.c index 2737021..d231ea9 100644 --- a/src/ttt-board.c +++ b/src/ttt-board.c @@ -94,15 +94,20 @@ ttt_board_write (ttt_board_t *board, FILE *file) * 3|4|5 * 6|7|8 * - * 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). + * 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_NOT_GRID if the move is + * impossible (user input 'a' or '9' etc.) */ ttt_error_t ttt_board_make_move (ttt_board_t *board, int move) { + if (move < 0 || move > 8) + return TTT_ERROR_NOT_GRID; + if (board->cells[move] != TTT_CELL_EMPTY) return TTT_ERROR_NOT_VALID_MOVE; - + board->cells[move] = board->current_player; if (board->current_player == TTT_CELL_X) -- 2.43.0