/* tictac_lib.c Library file implementation. See tictac_lib.h for the definition of the functions. */ #include #include #include "tictac_def.h" int isRowFull(char board[10][10], int N, char player, int row) { int count = 0, col = 0; for (col = 0; col < N; col++) { if (board[row][col] == player) count++; } return (count == N); } int isColFull(char board[10][10], int N, char player, int col) { int count = 0, row = 0; for (row = 0; row < N; row++) { if (board[row][col] == player) count++; } return (count == N); } int isDiagFull(char board[10][10], int N, char player) { int count = 0, i = 0; for (i = 0; i < N; i++) { if (board[i][i] == player) count++; } return (count == N); } int isMinorDiagFull(char board[10][10], int N, char player) { int count = 0, i = 0; for (i = 0; i < N; i++) { if (board[i][N-i-1] == player) count++; } return (count == N); } int hasPlayerWon(char board[10][10], int N, char player) { int playerWon = FALSE; int row = 0, col = 0; for (row = 0; row < N; row++) { if (isRowFull(board, N, player, row)) return TRUE; } for (col = 0; col < N; col++) { if (isColFull(board, N, player, col)) return TRUE; } if (isDiagFull(board, N, player)) return TRUE; if (isMinorDiagFull(board, N, player)) return TRUE; return FALSE; } int gameOver(char board[10][10], int N) { int row = 0, col = 0; for (row = 0; row < N; row++) { for (col = 0; col < N; col++) { if (board[row][col] == EMPTY) return FALSE; } } return TRUE; } void init_board(char board[10][10], int N) { int row, col; for (row = 0; row < N; row++) { for (col = 0; col < N; col++) { board[row][col] = EMPTY; } } } void show_board(char board[10][10], int N) { int row, col; for (row = 0; row < N-1; row++) { for (col = 0; col < N-1; col++) { printf(" %c |", board[row][col]); } printf(" %c\n", board[row][N-1]); for (col = 0; col < N-1; col++) { printf("---|"); } printf("---\n"); } for (col = 0; col < N-1; col++) { printf(" %c |", board[N-1][col]); } printf(" %c\n", board[N-1][N-1]); } void getMove(char board[10][10], int N, char player) { int row, col; int valid_move = FALSE; while (!valid_move) { printf("\nPlayer %c, enter row col: ", player); scanf("%d%d", &row, &col); if (row < 1) printf("\tSorry, row must be positive\n"); else if (row > N) printf("\tSorry, row must be less than %d\n", (N+1)); else if (col < 1) printf("\tSorry, col must be positive\n"); else if (col > N) printf("\tSorry, col must be less than %d\n", (N+1)); else if (board[row-1][col-1] != EMPTY) printf("\tSorry, that position is already taken\n"); else { board[row-1][col-1] = player; valid_move = TRUE; } } }