Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*-------------------------------------------------------------------------
- Include files:
- -------------------------------------------------------------------------*/
- #include <stdio.h>
- #include <stdbool.h>
- /*-------------------------------------------------------------------------
- Constants and definitions:
- -------------------------------------------------------------------------*/
- #define N 11
- #define space '_'
- #define player1 1
- #define player2 2
- #define x 'X'
- #define o 'O'
- /*-------------------------------------------------------------------------
- Function declaration
- -------------------------------------------------------------------------*/
- void print_welcome();
- void print_enter_board_size();
- void print_board(char board[N][N], int n);
- void print_player_turn(int player_index);
- void print_error();
- void print_winner(int player_index);
- void print_tie();
- void filltheemptyboard(char board[N][N], int boardsize);
- void fillforplayer1(char board[N][N], int boardsize);
- void fillforplayer2(char board[N][N], int boardsize);
- bool straightlineOfx(char board[N][N],int boardsize);
- bool straightlineOfo(char board[N][N],int boardsize);
- bool straightRowOfx(char board[N][N],int boardsize);
- bool straightRowOfo(char board[N][N],int boardsize);
- bool DiameterX(char board[N][N],int boardsize);
- bool DiameterO(char board[N][N],int boardsize);
- bool OppDiameterX(char board[N][N], int boardsize);
- bool OppDiameterO(char board[N][N], int boardsize);
- bool Player2Winner( char board [N][N],int boardsize);
- bool Player1Winner( char board [N][N],int boardsize);
- void TheWinner(char board[N][N],int boardsize);
- bool theboardisfull(char board[N][N], int boardsize);
- int TheGame(char board[N][N],int boardsize);
- int main()
- {
- int boardsize;
- print_welcome();
- print_enter_board_size();
- scanf("%d",&boardsize);
- char board[N][N];
- filltheemptyboard(board,boardsize);
- TheGame(board, boardsize);
- return 0;
- }
- //print welcome message
- //1 lines
- void print_welcome()
- {
- printf("*** Welcome to AVOIDANCE TIC-TAC-TOE game ***\n\n");
- }
- //print message to enter board size
- //1 lines
- void print_enter_board_size()
- {
- printf("Please enter board size (1 to %d):\n", N);
- }
- //print the board
- //7 lines
- void print_board(char board[N][N], int n)
- {
- printf("\nCurrent board:\n");
- for (int i = 0; i < n; i++)
- {
- printf("|");
- for (int j = 0; j < n; j++)
- {
- printf("%c|", board[i][j]);
- }
- printf("\n");
- }
- printf("\n");
- }
- //print a request for player with index "player_index" to move
- //1 lines
- void print_player_turn(int player_index)
- {
- printf("\nPlayer ** %d **, enter next move:\n", player_index);
- }
- //print error message
- //1 lines
- void print_error()
- {
- printf("Illegal move!!!, please try again:\n");
- }
- //print the winner
- //1 lines
- void print_winner(int player_index)
- {
- printf("Player %d Wins! Hooray!\n", player_index);
- }
- //print message to announce there is a tie (no one wins)
- //1 lines
- void print_tie()
- {
- printf("It's a tie!\n");
- }
- void filltheemptyboard(char board[N][N],int boardsize)
- {
- for(int i=0;i<boardsize;i++){
- for(int j=0;j<boardsize;j++){
- board[i][j]=space;
- }
- }
- print_board( board, boardsize);
- }
- void fillforplayer1(char board[N][N], int boardsize){
- int i,j;
- scanf("%d",&i);
- scanf("%d", &j);
- if(board[i-1][j-1]==space){
- board[i-1][j-1]= x;
- print_board(board,boardsize);
- }
- else {
- print_error();
- fillforplayer1(board, boardsize);
- }
- }
- void fillforplayer2(char board[N][N], int boardsize){
- int i,j;
- scanf("%d",&i);
- scanf("%d", &j);
- if(board[i-1][j-1]==space){
- board[i-1][j-1]= o;
- print_board(board,boardsize);
- }
- else{
- print_error();
- fillforplayer2(board, boardsize);
- }
- }
- bool theboardisfull(char board[N][N], int boardsize)
- {
- bool fullboard = false;
- for(int i=0;i<boardsize;i++){
- for(int j=0;j<boardsize;j++){
- if(board[i][j]==space)
- return fullboard;
- }
- }
- fullboard = true;
- return fullboard;
- }
- bool straightlineOfx(char board[N][N],int boardsize)
- {
- bool straightline = true;
- for(int i=0;i<boardsize;i++){
- for(int j=0;j<boardsize;j++)
- {
- if(board[i][j]!=x){
- straightline = false;
- }
- }
- if(straightline==true)
- {
- return straightline;
- }
- }
- return straightline;
- }
- bool straightlineOfo(char board[N][N],int boardsize)
- {
- bool straightline = true;
- for(int i=0;i<boardsize;i++){
- for(int j=0;j<boardsize;j++)
- {
- if(board[i][j]!=o){
- straightline = false;
- }
- }
- if(straightline==true)
- {
- return straightline;
- }
- }
- return straightline;
- }
- bool straightRowOfx(char board[N][N],int boardsize)
- {
- bool straightline = true;
- for(int i=0;i<boardsize;i++){
- for(int j=0;j<boardsize;j++)
- {
- if(board[j][i]!=x){
- straightline = false;
- }
- }
- if(straightline==true)
- {
- return straightline;
- }
- }
- return straightline;
- }
- bool straightRowOfo(char board[N][N],int boardsize)
- {
- bool straightline = true;
- for(int i=0;i<boardsize;i++){
- for(int j=0;j<boardsize;j++)
- {
- if(board[j][i]!=o){
- straightline = false;
- }
- }
- if(straightline==true)
- {
- return straightline;
- }
- }
- return straightline;
- }
- bool DiameterX( char board[N][N],int boardsize)
- {
- bool DiameterOfX = true;
- int j = 0;
- for(int i=0;i<boardsize;i++){
- if(board[i][j]!=x){
- DiameterOfX = false ;
- return DiameterOfX;
- }
- j++;
- }
- return DiameterOfX;
- }
- bool DiameterO( char board[N][N],int boardsize)
- {
- bool DiameterOfo = true;
- int j = 0;
- for(int i=0;i<boardsize;i++){
- if(board[i][j]!=o){
- DiameterOfo = false ;
- return DiameterOfo;
- }
- j++;
- }
- return DiameterOfo;
- }
- bool OppDiameterX( char board[N][N], int boardsize)
- {
- bool DiameterX = true;
- int j =boardsize-1;
- for(int i=0;i<boardsize;i++){
- if(board[i][j]!=x){
- DiameterX = false ;
- return DiameterX;
- }
- j--;
- }
- return DiameterX;
- }
- bool OppDiameterO(char board[N][N], int boardsize)
- {
- bool DiameterO = true;
- int j =boardsize-1;
- for(int i=0;i<boardsize;i++){
- if(board[i][j]!=x){
- DiameterO = false ;
- return DiameterO;
- }
- j--;
- }
- return DiameterO;
- }
- bool Player2Winner( char board [N][N],int boardsize){
- bool Player2Winner = false;
- if(straightlineOfx(board,boardsize)||straightRowOfx(board,boardsize)||OppDiameterX(board, boardsize)||DiameterX(board, boardsize)==1){
- Player2Winner = true;
- return Player2Winner;
- }
- return Player2Winner;
- }
- bool Player1Winner( char board [N][N],int boardsize)
- {
- bool Player1Winner = false;
- if(straightlineOfo(board,boardsize)||straightRowOfo(board,boardsize)||OppDiameterO(board, boardsize)||DiameterO(board, boardsize)==1){
- Player1Winner = true;
- return Player1Winner;
- }
- return Player1Winner;
- }
- void TheWinner(char board[N][N],int boardsize)
- {
- if(Player1Winner(board,boardsize)){
- print_winner(player1);
- }
- if(Player2Winner(board, boardsize)){
- print_winner(player2);
- }
- }
- int TheGame(char board[N][N],int boardsize){
- while(theboardisfull(board, boardsize)!=1){
- print_player_turn(player1);
- fillforplayer1(board, boardsize);
- if(Player2Winner(board, boardsize)){
- print_winner(player2);
- return 0;
- }
- print_player_turn(player2);
- fillforplayer2(board, boardsize);
- if(Player1Winner(board, boardsize)){
- print_winner(player1);
- return 0;
- }
- }
- return 0;
- }
- int undo(char board[N][N], int boardsize, int Undonum){
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement