) [0] << « | »<< (* Board) [1] << « | »<< (* Board) [2]; << « N t» << «---------»; << « N t» << (* Board) [3] << « | »<< (* Board) [4] << « | »<< (* Board) [5]; << « N t» << «---------»; << « N t» << (* Board) [6] << « | »<< (* Board) [7] << « | »<< (* Board) [8]; << « N n»;
} winner (const vector * const board)
{
/ / всі можливі варіанти победint WINNING_ROWS [8] [3]={{0, 1, 2},
{3, 4, 5},
{6, 7, 8},
{0, 3, 6},
{1, 4, 7},
{2, 5, 8},
{0, 4, 8},
{2, 4, 6}
}; int TOTAL_ROWS=8;
/ / якщо в ряду є три однакових знченія (не порожні),
/ / тоді є переможець (int row=0; row
{(((* board) [WINNING_ROWS [row] [0]]!=EMPTY) &&
((* board) [WINNING_ROWS [row] [0]] == (* board) [WINNING_ROWS [row] [1]]) &&
((* board) [WINNING_ROWS [row] [1]] == (* board) [WINNING_ROWS [row] [2]]))
{(* board) [WINNING_ROWS [row] [0]];
}
}
/ / так як ніхто не переміг, перевіряється нічия (порожні квадрати)
if (count (board-> begin (), board-> end (), EMPTY) == 0)
return TIE;
/ / так як ніхто не переміг, і не нічия, гра триває
return NONE;
} bool isLegal (int move, const vector * const board)
{((* board) [move] == EMPTY);
} humanMove (const vector * const board, char human)
{move=askNumber («Ваш хід?», (board-> size ())); (! isLegal (move - 2, board))
{<< « NЕта клітина зайнята. N»;=askNumber («Ваш хід?», (Board-> size ()));
} << «Прекрасно ... n"; move - 2;
} computerMove (vector board, char computer)
{<< «Я поставлю число в квадрат»;
/ / якщо комп'ютер може перемогти на наступному ході, робиться хід.
for (unsigned int move=0; move
{(isLegal (move, & board))
{[move]=computer; (winner (& board) == computer)
{<< move +1 << endl;
return move;
}
/ / Справи перевірка руху, його скасування. [move]=EMPTY;
}
}
/ / якщо гравець може перемогти на наступному ході, блокувати цей рух.
char human; (computer == x)
{= o;
} {human=x; } (Unsigned int move=0; move
{(isLegal (move, & board))
{[move]=human; (winner (& board) == human)
{<< move +1 << endl;
return move;
}
/ / зроблена перевірк...