#include #include "ttt.h" void TicTacToe::Comp_Move(char symbol) { cout<<"Computer is making a move..."<1) { //Advanced moves and blocks if (level>2) { if (board[1][1]==symbol) { if (board[0][0]==symbol) { if (board[0][1]==' ' && board[0][2]==' ') { if (board[2][1]==' ') {board[0][1]=symbol; return;} if (board[2][0]==' ') {board[0][2]=symbol; return;} } if (board[1][0]==' ' && board[2][0]==' ') { if (board[1][2]==' ') {board[1][0]=symbol; return;} if (board[0][2]==' ') {board[2][0]=symbol; return;} } } if (board[0][2]==symbol) { if (board[0][1]==' '&& board[0][0]==' ') { if (board[2][1]==' ') {board[0][1]=symbol; return;} if (board[2][2]==' ') {board[0][0]=symbol; return;} } if (board[1][2]==' ' && board[2][2]==' ') { if (board[1][0]==' ') {board[1][2]=symbol; return;} if (board[0][0]==' ') {board[2][2]=symbol; return;} } } if (board[2][0]==symbol) { if (board[0][0]==' ' && board[1][0]==' ') { if (board[1][2]==' ') {board[1][0]=symbol; return;} if (board[2][2]==' ') {board[0][0]=symbol; return;} } if (board[2][1]==' ' && board[2][2]==' ') { if (board[0][1]==' ') {board[2][1]=symbol; return;} if (board[0][0]==' ') {board[2][2]=symbol; return;} } } if (board[2][2]==symbol) { if (board[0][2]==' ' && board[1][2]==' ') { if (board[1][0]==' ') {board[1][2]=symbol; return;} if (board[2][0]==' ') {board[0][2]=symbol; return;} } if (board[2][0]==' ' && board[2][1]==' ') { if (board[0][1]==' ') {board[2][1]=symbol; return;} if (board[0][2]==' ') {board[2][0]=symbol; return;} } } } } if ((board[0][0]==symbol2 && board[2][2]==symbol2) || (board[0][2]==symbol2 && board[2][0]==symbol2)) { if (board[0][1]==' ') {board[0][1]=symbol; return;} else if (board[1][0]==' ') {board[1][0]=symbol; return;} else if (board[1][2]==' ') {board[1][2]=symbol; return;} else if (board[2][1]==' ') {board[2][1]=symbol; return;} } if (((board[0][0]==symbol2 && board[1][1]==symbol) || (board[0][0]==symbol && board[1][1]==symbol2)) && board[2][2]==' ') {board[2][2]=symbol; return;} if (((board[2][2]==symbol2 && board[1][1]==symbol) || (board[2][2]==symbol && board[1][1]==symbol2)) && board[0][0]==' ') {board[0][0]=symbol; return;} if (((board[1][1]==symbol2 && board[2][0]==symbol) || (board[1][1]==symbol && board[2][0]==symbol2)) && board[0][2]==' ') {board[0][2]=symbol; return;} if (((board[1][1]==symbol2 && board[0][2]==symbol) || (board[1][1]==symbol && board[0][2]==symbol2)) && board[2][0]==' ') {board[2][0]=symbol; return;} if (((board[0][2]==symbol && board[2][1]==symbol) || (board[0][2]==symbol2 && board[2][1]==symbol2)) && board[2][2] ==' ') {board[2][2]=symbol; return;} if (((board[0][0]==symbol && board[2][1]==symbol) || (board[0][0]==symbol2 && board[2][1]==symbol2)) && board[2][0] ==' ') {board[2][0]=symbol; return;} if (((board[1][2]==symbol && board[2][0]==symbol) || (board[1][2]==symbol2 && board[2][0]==symbol2)) && board[2][2] ==' ') {board[2][2]=symbol; return;} if (((board[0][1]==symbol && board[2][2]==symbol) || (board[0][1]==symbol2 && board[2][2]==symbol2)) && board[0][2] ==' ') {board[0][2]=symbol; return;} if (((board[1][0]==symbol && board[2][2]==symbol) || (board[1][0]==symbol2 && board[2][2]==symbol2)) && board[2][0] ==' ') {board[2][0]=symbol; return;} if (((board[1][2]==symbol && board[2][1]==symbol) || (board[1][2]==symbol2 && board[2][1]==symbol2)) && board[2][2] ==' ') {board[2][2]=symbol; return;} } //Take middle if it's open if (board[1][1]==' ') {board[1][1]=symbol; return;} //Take a corner if (board[0][0]==' ') {board[0][0]=symbol; return;} if (board[0][2]==' ') {board[0][2]=symbol; return;} if (board[2][0]==' ') {board[2][0]=symbol; return;} if (board[2][2]==' ') {board[2][2]=symbol; return;} //Take a middle block if (board[0][1]==' ') {board[0][1]=symbol; return;} if (board[1][0]==' ') {board[1][0]=symbol; return;} if (board[1][2]==' ') {board[1][2]=symbol; return;} if (board[2][1]==' ') {board[2][1]=symbol; return;} //Error! cout<<"Error in Computer Move code."<>x; cout<<" Enter you move COL : "; cin>>y; switch (x) { case '1' : row=0; valid=true; break; case '2' : row=1; valid=true; break; case '3' : row=2; valid=true; break; default : valid=false; break; } switch (y) { case '1' : col=0; valid2=true; break; case '2' : col=1; valid2=true; break; case '3' : col=2; valid2=true; break; default : valid2=false; break; } if (valid && valid2) if (Check_Validity(row,col)) board[row][col]=symbol; else valid=false; if (!valid || !valid2) cout<<"Invalid choice. Try again."<1 || i>1 || (x>=1 && i>=1)) return 'E'; if (x==1) return 'X'; if (i==1) return 'O'; for (i=0; i<3; i++) for (x=0; x<3; x++) if (vals[i][x]==0) return ' '; return 'C'; } TicTacToe::TicTacToe (char Board[][3], int Level, int Players, int First) { //board=Board; players=Players; first=First; level=Level; int i,x; for (i=0; i<3; i++) for (x=0; x<3; x++) { if (Board[i][x] != 'X' && Board[i][x] != 'O') Board[i][x]='-'; if (Board[i][x]=='-') Board[i][x]=' '; board[i][x]=Board[i][x]; } } void TicTacToe::Display() { int i,x; for (i=0; i<3; i++) { for (x=0; x<3; x++) { cout<