You are viewing our Forum Archives. To view or take place in current topics click here.
#11. 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
Jordannn23 wrote 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).


At the end of what you want to happen

(Example)

#include <iostream>
using namespace std;

int main()
{
char Answer;

cout << "Are you going to watch the Super bowl today? ";
cin >> Answer;

return 0;
}
#12. 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
Okay thx that helps a lot!
#13. 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
Okay I fixed all the braces and other easy errors in my work but there is one more problem and I have no idea what's wrong or how to fix it, so please help! Thanks!

Code:

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

using namespace std;

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

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

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

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

system("pause");

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 << "correspond 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\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";
}
}
#14. Posted:
-Pawn
  • Spooky Poster
Status: Offline
Joined: Jan 15, 201113Year Member
Posts: 2,316
Reputation Power: 119
Status: Offline
Joined: Jan 15, 201113Year Member
Posts: 2,316
Reputation Power: 119
I'm confused what exactly do you need help with?
#15. 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
Oh, sorry. When I try to compile that bit of code it won't compile and I don't know why. Here is what my build output box says the error is:

1>------ Build started: Project: Tic Tac Toe, Configuration: Debug Win32 ------
1> Tic Tac Toe.cpp
1> LINK : C:\Users\Jordan\Documents\Visual Studio 2010\Projects\Tic Tac Toe\Debug\Tic Tac Toe.exe not found or not built by the last incremental link; performing full link
1>Tic Tac Toe.obj : error LNK2019: unresolved external symbol "void __cdecl instructions(void)" (?instructions@@YAXXZ) referenced in function _main
1>C:\Users\Jordan\Documents\Visual Studio 2010\Projects\Tic Tac Toe\Debug\Tic Tac Toe.exe : fatal error LNK1120: 1 unresolved externals
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Do you know how to fix it?
#16. Posted:
Imp
  • Shoutbox Hero
Status: Offline
Joined: Jan 01, 201113Year Member
Posts: 1,957
Reputation Power: 401
Status: Offline
Joined: Jan 01, 201113Year Member
Posts: 1,957
Reputation Power: 401
The problem there is that you declared your function instructions, you called the function instructions from main() but when writing the function you named it instruction with no s

Rename it instructions and that should be better.
Jump to:
You are viewing our Forum Archives. To view or take place in current topics click here.