/* Tic - Tac - Toe Program */ #include #include #include #include #include #include char Square[3][3]; Initlize (); Displayboard (); Getmove (); Makemove (); Canwin (char xoro); Checkwin (char letter); main () { clrscr (); char again; int moveCounter; while (1 == 1) { Initlize (); Square[0][0] = 'X'; Displayboard (); Getmove (); Makemove (); moveCounter = 3; while (1 == 1) { Displayboard (); Getmove (); moveCounter = moveCounter + 1; if (Checkwin ('O') == 1) { Displayboard (); printf ("Congratulations!! You win. \n"); break; } else { if (Canwin ('X') == 1) { Displayboard(); printf ("I win. Ah Haa!! \n"); break; } else { if (Canwin ('O') == 0) { Makemove (); } } } moveCounter = moveCounter + 1; if (moveCounter == 9) { Displayboard (); printf ("It's a draw. Good game. \n"); } else { continue; } } printf ("\nDo you want to play again (Y/N)? "); scanf ("\n%c", &again); if (again == 'Y' || again == 'y') { continue; } else { break; } } } Canwin (char xoro) { int row, col; row = 0; while (row < 3) { col = 0; while (col < 3) { if (Square [row][col] == ' ') { Square [row][col] = xoro; if (Checkwin (xoro) == 'X') { Square [row][col] = ' '; } else { if (Checkwin (xoro) == 'O') { Square [row][col] = ' '; } return 1; } } col = col + 1; } row = row + 1; } return (xoro); } Checkwin (char letter) { int counter = 0; while (counter < 3) { if (Square [counter][0] == letter && Square [counter][1] == letter && Square [counter][2] == letter) { return 1; } else { counter = counter + 1; } } counter = 0; while (counter < 3) { if (Square [0][counter] == letter && Square [1][counter] == letter && Square [2][counter] == letter) { return 1; } else { counter = counter + 1; } } if (Square [0][0] == letter && Square [1][1] == letter && Square [2][2] == letter) { return 1; } if (Square [0][2] == letter && Square [1][1] == letter && Square [2][0] == letter) { return 1; } return (letter); } Initlize () { int row, col; row = 0; while (row < 3) { col = 0; while (col < 3) { Square [row][col] = ' '; col = col + 1; } row = row + 1; } return 0; } Displayboard () { printf ("\n\n\n\n\n\n\n\n"); printf ("\t\t\t\t COLUMN \n"); printf ("\t\t\t\t 1 2 3 \n\n"); printf ("\t\t\t 1 %c | %c | %c \n", Square [0][0], Square [0][1], Square [0][2]); printf ("\t\t\t R ----------- \n"); printf ("\t\t\t O 2 %c | %c | %c \n", Square [1][0], Square [1][1], Square [1][2]); printf ("\t\t\t W ___________ \n"); printf ("\t\t\t 3 %c | %c | %c \n", Square [2][0], Square [2][1], Square [2][2]); printf ("\n\n\n\n\n\n"); return 0; } Getmove () { int row, col; while (1 == 1) { printf ("\nWhat row will you put O in ?"); printf ("\n Enter a number from 1 to 3 : "); scanf ("%d", &row); printf ("\nWhat column will you put O in ?"); printf ("\nEnter a number from 1 to 3 : "); scanf ("%d", &col); row = row - 1; col = col - 1; if (row < 0 || row > 2 || col < 0 || col > 2 || Square [row][col] != ' ') { printf ("%c", 7); Displayboard (); continue; } else { Square [row][col] = 'O'; break; } } return 0; } Makemove () { if (Square [0][0] == ' ') { Square [0][0] = 'X'; } else if (Square [1][1] == ' ') { Square [1][1] = 'X'; } else if (Square [2][2] == ' ') { Square [2][2] = 'X'; } else if (Square [1][0] == ' ') { Square [1][0] = 'X'; } else if (Square [1][1] == ' ') { Square [1][1] = 'X'; } else if (Square [1][2] == ' ') { Square [1][2] = 'X'; } else if (Square [2][0] == ' ') { Square [2][0] = 'X'; } else if (Square [2][1] == ' ') { Square [2][1] = 'X'; } else if (Square [2][2] == ' ') { Square [2][2] = 'X'; } return 0; }