You are viewing our Forum Archives. To view or take place in current topics click here.
I need help with my coding! Please Read!
Posted:

I need help with my coding! Please Read!Posted:

Jordannn23
  • Challenger
Status: Offline
Joined: Jun 22, 201113Year Member
Posts: 199
Reputation Power: 7
Status: Offline
Joined: Jun 22, 201113Year Member
Posts: 199
Reputation Power: 7
Here's the code:

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

using namespace std;

int main()
{
const char X = 'X';
const char O = 'O';
const char EMPTY = ' ';
const char TIE = 'T';
const char NO_ONE = 'N';

void instruction();
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 announceWinner(char winner, char computer, char human);

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

instruction();
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);
}

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

return 0;
}

void instruction()
{
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 "corresponds to the desired board position, as illustrated:\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?");
if (go_first == 'y')
{
cout << "\nThen 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 0;
}
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\n";
}

char winner(const vector<char>& board)
{
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;

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]];
}
}

if (count(board.begin(), board.end(), EMPTY) == 0)
return TIE;

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;

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

if (!found)
{
++move;
}
}

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;
}
}
}

if(!found)
{
move = 0;
unsigned int i = 0;
const int BEST_MOVES[] = {4, 0, 2, 6, 8, 1, 3, 5, 7};

while (!found && i < board.size())
{
move = BEST_MOVES[i];
if (isLegal(move, board))
{
found = true;
}

++i;
}
}

cout << "I shall take square number " << move << endl;
return move;
}

void announceWinner(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 humans 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";
}
}

Thanks for the help in advance!
#2. Posted:
JoshUS
  • TTG Contender
Status: Offline
Joined: May 20, 201014Year Member
Posts: 3,135
Reputation Power: 136
Status: Offline
Joined: May 20, 201014Year Member
Posts: 3,135
Reputation Power: 136
... what?

What do you want us to do with this?
#3. Posted:
-Facebook
  • TTG Senior
Status: Offline
Joined: Sep 19, 201014Year Member
Posts: 1,533
Reputation Power: 71
Status: Offline
Joined: Sep 19, 201014Year Member
Posts: 1,533
Reputation Power: 71
So, whats the problem?
#4. Posted:
David_Fisher
  • Junior Member
Status: Offline
Joined: Feb 01, 201212Year Member
Posts: 72
Reputation Power: 4
Status: Offline
Joined: Feb 01, 201212Year Member
Posts: 72
Reputation Power: 4
Yeah, I was looking through your code and skimmed to the bottom.
You don't say what issue(s) you're having.

Post more information if you want help o:
We'll help you, but we won't do everything for you.
#5. Posted:
Odin
  • TTG Addict
Status: Offline
Joined: Dec 23, 201014Year Member
Posts: 2,446
Reputation Power: 80
Status: Offline
Joined: Dec 23, 201014Year Member
Posts: 2,446
Reputation Power: 80
not only did you not tell us the issue but your post is a crap hole, put the code in [code] tags
#6. Posted:
Jordannn23
  • Challenger
Status: Offline
Joined: Jun 22, 201113Year Member
Posts: 199
Reputation Power: 7
Status: Offline
Joined: Jun 22, 201113Year Member
Posts: 199
Reputation Power: 7
Sorry im new at posting and all i wanted to know is why it is failing when i try to compile the code?
#7. Posted:
skatertg
  • Blind Luck
Status: Offline
Joined: Jan 20, 201014Year Member
Posts: 8,013
Reputation Power: 2165
Status: Offline
Joined: Jan 20, 201014Year Member
Posts: 8,013
Reputation Power: 2165
Jordannn23 wrote Sorry im new at posting and all i wanted to know is why it is failing when i try to compile the code?


What are the errors it tells you there are when you try and compile? Most compilers tell you the error and at what line it has happened.
#8. Posted:
Jordannn23
  • Challenger
Status: Offline
Joined: Jun 22, 201113Year Member
Posts: 199
Reputation Power: 7
Status: Offline
Joined: Jun 22, 201113Year Member
Posts: 199
Reputation Power: 7
This is what the error is in the output from the build:

1>------ Build started: Project: Tic Tac Toe, Configuration: Debug Win32 ------
1> Tic Tac Toe.cpp
1>c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(30): error C2601: 'main' : local function definitions are illegal
1> c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(9): this line contains a '{' which has not yet been matched
1>c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(64): error C2601: 'instruction' : local function definitions are illegal
1> c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(9): this line contains a '{' which has not yet been matched
1>c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(81): error C2601: 'askYesNo' : local function definitions are illegal
1> c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(9): this line contains a '{' which has not yet been matched
1>c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(93): error C2601: 'askNumber' : local function definitions are illegal
1> c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(9): this line contains a '{' which has not yet been matched
1>c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(105): error C2601: 'humanPiece' : local function definitions are illegal
1> c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(9): this line contains a '{' which has not yet been matched
1>c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(120): error C2601: 'opponent' : local function definitions are illegal
1> c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(9): this line contains a '{' which has not yet been matched
1>c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(132): error C2601: 'displayBoard' : local function definitions are illegal
1> c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(9): this line contains a '{' which has not yet been matched
1>c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(142): error C2601: 'winner' : local function definitions are illegal
1> c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(9): this line contains a '{' which has not yet been matched
1>c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(171): error C2601: 'isLegal' : local function definitions are illegal
1> c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(9): this line contains a '{' which has not yet been matched
1>c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(176): error C2601: 'humanMove' : local function definitions are illegal
1> c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(9): this line contains a '{' which has not yet been matched
1>c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(189): error C2601: 'computerMove' : local function definitions are illegal
1> c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(9): this line contains a '{' which has not yet been matched
1>c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(252): error C2601: 'announceWinner' : local function definitions are illegal
1> c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(9): this line contains a '{' which has not yet been matched
1>c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(274): fatal error C1075: end of file found before the left brace '{' at 'c:\users\jordan\documents\visual studio 2010\projects\tic tac toe\tic tac toe\tic tac toe.cpp(9)' was matched
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Hopefully that helps!
#9. Posted:
lordquodis
  • TTG Senior
Status: Offline
Joined: Jan 14, 201114Year Member
Posts: 1,025
Reputation Power: 43
Status: Offline
Joined: Jan 14, 201114Year Member
Posts: 1,025
Reputation Power: 43
you have a lot of braces unclosed
#10. Posted:
Jordannn23
  • Challenger
Status: Offline
Joined: Jun 22, 201113Year Member
Posts: 199
Reputation Power: 7
Status: Offline
Joined: Jun 22, 201113Year Member
Posts: 199
Reputation Power: 7
Could you tell me where to put the braces so that they are closed? I'm very very new at this (if you couldn't tell).
Jump to:
You are viewing our Forum Archives. To view or take place in current topics click here.