C examples for Array:Multidimensional Arrays
Access the matrix array for simple Tic Tac Toe game
#include <stdio.h> #include <stdlib.h> char matrix[3][3]; /* the tic tac toe matrix */ char check(void); void init_matrix(void); void get_player_move(void); void get_computer_move(void); void disp_matrix(void); int main(void) { char done;/*from w w w . j ava 2 s. co m*/ printf("This is the game of Tic Tac Toe.\n"); printf("You will be playing against the computer.\n"); done = ' '; init_matrix(); do { disp_matrix(); get_player_move(); done = check(); /* see if winner */ if (done != ' ') break; /* winner!*/ get_computer_move(); done = check(); /* see if winner */ } while (done == ' '); if (done == 'X') printf("You won!\n"); else printf("I won!!!!\n"); disp_matrix(); /* show final positions */ return 0; } /* Initialize the matrix. */ void init_matrix(void) { int i, j; for (i = 0; i<3; i++) for (j = 0; j<3; j++) matrix[i][j] = ' '; } /* Get a player's move. */ void get_player_move(void) { int x, y; printf("Enter X,Y coordinates for your move: "); scanf("%d%*c%d", &x, &y); x--; y--; if (matrix[x][y] != ' ') { printf("Invalid move, try again.\n"); get_player_move(); } else matrix[x][y] = 'X'; } /* Get a move from the computer. */ void get_computer_move(void) { int i, j; for (i = 0; i<3; i++) { for (j = 0; j<3; j++) if (matrix[i][j] == ' ') break; if (matrix[i][j] == ' ') break; } if (i*j == 9) { printf("draw\n"); exit(0); } else matrix[i][j] = 'O'; } /* Display the matrix on the screen. */ void disp_matrix(void) { int t; for (t = 0; t<3; t++) { printf(" %c | %c | %c ", matrix[t][0], matrix[t][1], matrix[t][2]); if (t != 2) printf("\n--- |--- |---\n"); } printf("\n"); } /* See if there is a winner. */ char check(void) { int i; for (i = 0; i<3; i++) /* check rows */ if (matrix[i][0] == matrix[i][1] && matrix[i][0] == matrix[i][2]) return matrix[i][0]; for (i = 0; i<3; i++) /* check columns */ if (matrix[0][i] == matrix[1][i] && matrix[0][i] == matrix[2][i]) return matrix[0][i]; /* test diagonals */ if (matrix[0][0] == matrix[1] [1] && matrix[1][1] == matrix[2][2]) return matrix[0][0]; if (matrix[0][2] == matrix[1] [1] && matrix[1][1] == matrix[2][0]) return matrix[0][2]; return ' '; }