اگه x-o نیست این هم x-o که با کامپیوتر هم میشه بازی کنه کامپالر هم VS 2010 می باشد

#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <string>
#include <vector>
using namespace std;

void DisplayBoard(char BoardArray[]);
int CheckGameOver(char BoardArray[]);
void ResetBoard(char* BoardArray[]);
int could_win(char BoardArray[],char Player);
int AI_Move(char BoardArray[],char AI,char player);//A.I
int main()
{
int Player1Move = 0;
int Player2Move = 0;
char BoardArray[9] = {' ',' ',' ',' ',' ',' ',' ',' ',' '};
char BoardNumbers[9] = {'0','1','2','3','4','5','6','7','8'};
system("cls");
cout << "if you want AI move instead of you press 9"<<endl;
system("pause");
while(true)
{
system("cls");
DisplayBoard(BoardNumbers);
DisplayBoard(BoardArray);

cout << "X:";
cin >> Player1Move;
if(Player1Move ==9)
Player1Move =AI_Move(BoardArray,'X','O');

if((Player1Move >= 0 && Player1Move <=8) && BoardArray[Player1Move] == ' ')
{
BoardArray[Player1Move] = 'X';
}
else
{
cout << "Error in move...Press enter\n";
system("PAUSE > NULL");
continue;
}

system("cls");
DisplayBoard(BoardNumbers);
DisplayBoard(BoardArray);

switch(CheckGameOver(BoardArray))
{
case 0:
break;
case 1:
cout << "TIE! Press enter to play again!";
system("PAUSE > NULL");
for(int n = 0; n <= 8; n++)
{
BoardArray[n] = ' ';
}
continue;
case 2:
cout << "X wins! Press enter to play again!";
system("PAUSE > NULL");
for(int n = 0; n <= 8; n++)
{
BoardArray[n] = ' ';
}
continue;
case 3:
cout << "O wins! Press enter to play again!";
system("PAUSE > NULL");
for(int n = 0; n <= 8; n++)
{
BoardArray[n] = ' ';
}
continue;
}

cout << "O:";
Player2Move=AI_Move(BoardArray,'O','X');
// cin >> Player2Move;

if((Player2Move >= 0 && Player2Move <=8) && BoardArray[Player2Move] == ' ')
{
BoardArray[Player2Move] = 'O';
}
else
{
cout << "Error in move...Press enter\n";
system("PAUSE > NULL");
continue;
}

DisplayBoard(BoardArray);

switch(CheckGameOver(BoardArray))
{
case 0:
break;
case 1:
cout << "TIE! Press enter to play again!";
system("PAUSE > NULL");
for(int n = 0; n <= 8; n++)
{
BoardArray[n] = ' ';
}
continue;
case 2:
cout << "X wins! Press enter to play again!";
system("PAUSE > NULL");
for(int n = 0; n <= 8; n++)
{
BoardArray[n] = ' ';
}
continue;
case 3:
cout << "O wins! Press enter to play again!";
system("PAUSE > NULL");
for(int n = 0; n <= 8; n++)
{
BoardArray[n] = ' ';
}
continue;
}

}
return 0;
}
void DisplayBoard(char BoardArray[])
{
cout << " | | \n";
cout << " " << BoardArray[0] << " | " << BoardArray[1] << " | " << BoardArray[2] << "\n";
cout << "____|____|____\n";
cout << " | | \n";
cout << " " << BoardArray[3] << " | " << BoardArray[4] << " | " << BoardArray[5] << "\n";
cout << "____|____|____\n";
cout << " | | \n";
cout << " " << BoardArray[6] << " | " << BoardArray[7] << " | " << BoardArray[8] << "\n";
cout << " | | \n\n";
}
int CheckGameOver(char BoardArray[])
{
bool Tie = false;
bool Player1Win = false;
bool Player2Win = false;
int ErrorCode = 0;

for(int n = 0; n <= 8; n++)
{
if(BoardArray[n] == ' ')
{
Tie = false;
break;
}
else
{
Tie = true;
}
}

if(BoardArray[0] == 'X' && BoardArray[3] == 'X' && BoardArray[6] == 'X')
{
Player1Win = true;
}
if(BoardArray[0] == 'X' && BoardArray[1] == 'X' && BoardArray[2] == 'X')
{
Player1Win = true;
}
if(BoardArray[2] == 'X' && BoardArray[5] == 'X' && BoardArray[8] == 'X')
{
Player1Win = true;
}
if(BoardArray[6] == 'X' && BoardArray[7] == 'X' && BoardArray[8] == 'X')
{
Player1Win = true;
}
if(BoardArray[0] == 'X' && BoardArray[4] == 'X' && BoardArray[8] == 'X')
{
Player1Win = true;
}
if(BoardArray[2] == 'X' && BoardArray[4] == 'X' && BoardArray[6] == 'X')
{
Player1Win = true;
}
if(BoardArray[1] == 'X' && BoardArray[4] == 'X' && BoardArray[7] == 'X')
{
Player1Win = true;
}
if(BoardArray[3] == 'X' && BoardArray[4] == 'X' && BoardArray[5] == 'X')
{
Player1Win = true;
}


if(BoardArray[0] == 'O' && BoardArray[3] == 'O' && BoardArray[6] == 'O')
{
Player2Win = true;
}
if(BoardArray[0] == 'O' && BoardArray[1] == 'O' && BoardArray[2] == 'O')
{
Player2Win = true;
}
if(BoardArray[2] == 'O' && BoardArray[5] == 'O' && BoardArray[8] == 'O')
{
Player2Win = true;
}
if(BoardArray[6] == 'O' && BoardArray[7] == 'O' && BoardArray[8] == 'O')
{
Player2Win = true;
}
if(BoardArray[0] == 'O' && BoardArray[4] == 'O' && BoardArray[8] == 'O')
{
Player2Win = true;
}
if(BoardArray[2] == 'O' && BoardArray[4] == 'O' && BoardArray[6] == 'O')
{
Player2Win = true;
}
if(BoardArray[1] == 'O' && BoardArray[4] == 'O' && BoardArray[7] == 'O')
{
Player2Win = true;
}
if(BoardArray[3] == 'O' && BoardArray[4] == 'O' && BoardArray[5] == 'O')
{
Player2Win = true;
}

if(Player1Win == true)
{
ErrorCode = 2;
}
else
{
if(Player2Win == true)
{
ErrorCode = 3;
}
else
{
if(Tie == true)
{
ErrorCode = 1;
}
else
{
ErrorCode = 0;
}
}
}
return ErrorCode;
}
//=========================================Artificia l==intelligence=================================== =====
int could_win(char BoardArray[],char Player,int StartPoint)
{
int p;
if(Player=='X')
p=2;
else if(Player=='O')
p=3;
char Board[9];
for(int i=0;i<9;i++)
Board[i]=BoardArray[i];

for(int i=StartPoint;i<9;i++)
{
for(int i=0;i<9;i++)
Board[i]=BoardArray[i];
if(Board[i]==' ')
{
Board[i]=Player;
if(CheckGameOver(Board)==p)
return i;

}
}

return 10;
}
int AI_Move(char BoardArray[],char AI,char player)
{
char Board[9];
for(int i=0;i<9;i++)
Board[i]=BoardArray[i];
//-------------
srand(time(0));
//=============
int Move=abs((rand() % 9)-1);
Check:
if(Move==0 || Move==2 || Move==6 || Move==8)
goto Passed;
while(Board[Move]==' ')
if(Move!=0 || Move!=2 || Move!=6 || Move!=8)
{
Move=abs((rand() % 9)-1);
goto Check;
}
Passed:
// AI_score
int counter=0;
bool BAQQO=false;
for(int i=0;i<9;i++)
if(BoardArray[i]==' ')
counter++;
if(BoardArray[4]==' ')
BAQQO=true;
else if(counter==8)
return Move;
if(counter==8 && BAQQO)
return 4;
//------------------------------------------Manual-----------------------------------
if((BoardArray[0]==player && BoardArray[8]==player && counter==6) || (BoardArray[2]==player && BoardArray[6]==player) && counter==6)
if(BoardArray[1]==' ')
return 1;
else if(BoardArray[7]==' ')
return 7;
//========================
if(BoardArray[4]==player && BoardArray[0]==player && BoardArray[8]==AI && counter==6)
return 6;
else if(BoardArray[4]==player && BoardArray[8]==player && BoardArray[0]==AI && counter==6)
return 2;
else if(BoardArray[4]==player && BoardArray[2]==player && BoardArray[6]==AI && counter==6)
return 8;
else if(BoardArray[4]==player && BoardArray[6]==player && BoardArray[2]==AI && counter==6)
return 0;
//------------------------------------------------------------------------------------

for(int i=0;i<9;i++)
Board[i]=BoardArray[i];

int score=-10;
int ai_p=could_win(BoardArray,AI,0);
int player_p=could_win(BoardArray,player,0);
if(ai_p < 9)
return ai_p;
else if(player_p < 9)
return player_p;
else
{
for(int i=0;i<9;i++)
{
for(int j=0;j<9;j++)
Board[j]=BoardArray[j];
if(Board[i]==' ')
{
Board[i]=AI;
ai_p=could_win(Board,AI,0);
if(ai_p <9)
if(score <2 )
{
score=2;///========---MAX-SCORE---==========
Move =i;
}
if(score >10)
score=INT_MAX;
ai_p=could_win(Board,AI,ai_p+1);
if(ai_p <9 && score < 5)//------Check-if-it-is-better-move-------
{
score=4;
Move=i;
}
Board[i]=player;
player_p =could_win(Board,player,0);
if(player_p <9)
if(score <1)//------Check-if-it-is-better-move-------
{
score=1;
Move =i;
}
player_p=could_win(Board,player,player_p+1);
if(player_p <9 && score <INT_MAX)//------Check-if-it-is-better-move-------
{
score+=10;
score=3;
if(score <10)
Move=i;
}
}
}
}
return Move;
}