Help with finding errors in tic-tac-toe program

I am working on trying to teach myself C++ with the book "Beginning c++ through game programing 3rd edition". I am working on the tic-tac-toe program from the book and reached a wall. I have written the code and combed through it comparing it to the source code from the book and can't seem to locate what is causing the errors listed below. I suspect it is a token error but can't seem to locate where I might have messed up. This may seem like homework for a class but I assure you I am working on my own by myself on this project. What I would like is some direction on where to look and what I should be looking for in order to fix the errors.

Thank you in advance

Code:
// Tic-Tac-Toe
// Plays the game of tic-tac-toe against a human opponent

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>

using namespace std;

// global constants
const char X = 'X';
const char O = 'O';
const char EMPTY = ' ';
const char TIE = 'T';
const char NO_ONE = 'N';

// function prototypes
void instructions();
char askYesNo(string question);
int askNumber(string question, int high, int low = 0);
char humanPiece();
char opponent(char piece);
void displayBoard(const vector<char>& board);
char winner(const vector<char>& board);
bool isLegal(const vector<char>& board, int move);
int humanMove(const vector<char>& board, char human);
int computerMove(vector<char> board, char computer);
void annouceWinner(char winner, char computer, char human);

//main funcion
int main()
{
int move;
const int NUM_SQUARES = 9;
vector<char> board(NUM_SQUARES, EMPTY);

instructions();
char human = humanPiece();
char computer = opponent(human);
char turn = X;
displayBoard(board);

while (winner(board) == NO_ONE)
{
if (turn == human)
{
move = humanMove(board, human);
board[move] = human;
}
else
{
move = computerMove(board, computer);
board[move] = computer;
}
displayBoard(board);
turn = opponent(turn);
}

annouceWinner(winner(board), computer, human);

return 0;

}

void instructions()
{
cout << "Welcome to the ultimate man-machine showdown: Tic-Tac-Toe.\n";
cout << "--where human brain is pit against silicon processor\n\n";

cout << "Make your move known by entering a number, 0 - 8, The number\n";
cout << "coorresponds to the desired board position, as illustted:\n\n";

cout << " 0 | 1 | 2\n";
cout << " ---------\n";
cout << " 3 | 4 | 5\n";
cout << " ---------\n";
cout << " 6 | 7 | 8\n";

cout << "Prepare yourself, human. The battle is about to begin.\n\n";
}

char askYesNo(string question)
{
char response;
do
{
cout << question << " (y/n)";
cin >> response;
} while (response != 'y' && response != 'n');

return response;
}

int askNumber(string question, int high, int low)
{
int number;
do
{
cout << question << " (" << low << " - " << high << "):";
cin >> number;
} while (number > high || number < low);

return number;
}

char humanPiece()
{
char go_first = askYesNo("Do you require the first move?\n");
if (go_first == 'y')
{
cout << "\nTnen take the first move. You will need it.\n";
return X;
}
else
{
cout << "\nYour bravery will be your undoing ... I will go first.\n";
return 0;
}
}

char opponent(char piece)
{
if (piece == X)
{
return O;
}
else
{
return X;
}
}

void displayBoard(const vector<char>& board)
{
cout << "\n\t" << board[0] << " | " << board[1] << " | " << board[2];
cout << "\n\t" << "--------";
cout << "\n\t" << board[3] << " | " << board[4] << " | " << board[5];
cout << "\n\t" << "--------";
cout << "\n\t" << board[6] << " | " << board[7] << " | " << board[8];
cout << "\n\t" << "--------";

}
char winner(const vector<char>& board)
{
//all possible winning rows
const 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} };
const int TOTAL_ROWS = 8;
//if any winning row has three values that are the sme (and not EMPTY),
//then we have a winner
for (int row = 0; row < TOTAL_ROWS; ++row)
{
if ((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]]))
{
return board[WINNING_ROWS[row][0]];
}
}
//since nobody has won check for a tie (not empty square left)
if (count(board.begin(), board.end(), EMPTY) == 0)
return TIE;

//since nobody won and it isn't a tie, the game aint over
return NO_ONE;

}
inline bool isLegal(int move, const vector<char>& board)
{
return (board[move] == EMPTY);
}

int humanMove(const vector<char>& board, char human)
{
int move = askNumber("Where will you move?", (board.size() - 1));
while (!isLegal(move,board))
{
cout << "\nThat square is already occupied, foolish human.\n";
move = askNumber("Where will you move?", (board.size() - 1));
}
cout << "Fine...\n";

return move;
}

int computerMove(vector<char> board, char computer)
{
unsigned int move = 0;
bool found = false;

//If computer can win on next move, That's the move to make
while (!found && move < board.size())
{
if (isLegal(move, board))
{
board[move] = computer;
found = winner(board) == computer;
board[move] = EMPTY;
}

if (!found)
{
++move;
}
}
//otherwise , if human can win on next move, that's the move to make
if (!found)
{
move = 0;
char human = opponent(computer);

while (!found && move < board.size())
{
if (isLegal(move, board))
{
board[move] = human;
found = winner(board) == human;
board[move] = EMPTY;
}

if (!found)
{
++move;
}
}
}
}
//otherwise, moving to the best open squre is themove to make
if (!found)
{
move = 0;
unsigned int i = 0;

const int BEST_MOVES[] = { 4, 0, 2, 6, 8, 1, 3, 5, 7 };
//pick best open square
while (!found && i < board.size())
{
move = BEST_MOVES[i];
if (isLegal(move, board))
{
found = true;
}

++i;
}

}
void annouceWinner(char winner, char computer, char human)
{
if (winner == computer)
{
cout << winner << "'s won!\n";
cout << "As I predicted, human, I am triumphant once more -- proof\n";
cout << "that computers are superior to human in all regards.\n";
}

else if (winner == human)
{
cout << winner << "'s won!\n";
cout << "No, no! It cannot be! Somehow you tricked me, human.\n";
cout << "But never again! I, the computer, so swear it!\n";
}

else
{
cout << "It's a tie.\n";
cout << "You were most lucky, human, and somehow managed to tie me.\n";
cout << "Celebrate... for this is the best you will ever achieve.\n";
}
}
errors:1>c:\users\john\documents\visual studio 2015\projects\tictactoe\tictactoe\source.cpp(236): error C2059: syntax error: 'if'
1>c:\users\john\documents\visual studio 2015\projects\tictactoe\tictactoe\source.cpp(237): error C2143: syntax error: missing ';' before '{'
1>c:\users\john\documents\visual studio 2015\projects\tictactoe\tictactoe\source.cpp(237): error C2447: '{': missing function header (old-style formal list?)
It looks like on line 236, that if loop, you placed it outside of your function by mistake.
That was a quick skim through, but that should fix it.

and after that if loop, you forgot to add the "cout" and the "return". Recheck page 216 I believe.
Ok will look at those. Thanks for the guidance
UchihaKite

Thanks for the help went back and looked where you pointed out and found out I had an extra currly bracket.
Topic archived. No new replies allowed.