Can you guys tell me whats wrong with this code, its for a tic tac toe game.

#include <iostream>
using namespace std;

char square[10] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };

int checkwin();
void board();

int main()
{
int player = 1,i,choice;

char mark;
do
{
board();
player = (player%2)?1:2;

cout << "Player " << player << ", enter a number: ";
cin >> choice;

mark= (player == 1) ? "x" : "0";

if (choice == 1 && square[1] == '1')

square[1] = mark;
else if (choice == 2 && square[2] == '2')

square[2] == mark;
else if (choice == 3 && square[3] == '3')

square[3] = mark;
else if (choice == 4 && square[4] == '4')

square[4] = mark;

else if (choice == 5 && square[5] == '5')

square[5] = mark;
else if (choice == 6 && square[6] == '6')

square[6] = mark;
else if (choice == 7 && square[7] == '7')

square[7] = mark;
else if (choice == 8 && square[8] == '8')

square[8] = mark;
else if (choice == 9 && square[9] == '9')

square[9] = mark;
else
{
cout << "Invalid move ";

player--;
cin.ignore();
cin.get();
}
i = checkwin();

player++;
}while (i == -1);
board();
if(i == 1)

cout<<"==>\aPlayer "<< --player<<" win ";
else
cout<<"==>\aGame draw";

cin.ignore();
cin.get();
return 0;
}

/*****************************************

FUNCTION TO RETURN GAME STATUS
1 FOR GAME IS OVER WITH RESULT
-1 FOR GAME IS IN PROGRESS
0 GAME IS OVER AND NO RESULT
******************************************/
int checkwin()
{
if (square[1] == square[2] && square[2] == square[3])

return 1;
else if (square[4] == square[5] && square[5] == square[6])

return 1;
else if (square[7] == square[8] && square[8] == square[9])

return 1;
else if (square[1] == square[4] && square[4] == square[7])

return 1;
else if (square[2] == square[5] && square[5] == square[8])

return 1;
else if (square[3] == square[6] && square[6] == square[9])

return 1;
else if (square[1] == square[5] && square[5] == square[9])

return 1;
else if (square[3] == square[5] && square[5] == square[7])

return 1;
else if (square[1] != '1' && square[2] != '2' && square[3] != '3' && square[4] != '4' && square[5] != '5' && square[6] != '6' && square[7] != '7' && square[8] != '8' && square[9] != '9')

return 0;
else
return -1;

/***************************************************************
FUNCTION TO DRAW BOARD OF TIC TAC TOE WITH PLAYERS MARK
***************************************************************/

void board()
{
system("cls");
cout << "\n\n\tTic Tac Toe\n\n";

cout << "Player 1 (X) - Player 2 (O)" << endl << endl;
cout << endl;

cout << " | | " << endl;
cout << " " << square[1] << " | " << square[2] << " | " << square[3] << endl;

cout << "_____|_____|_____" << endl;
cout << " | | " << endl;

cout << " " << square[4] << " | " << square[5] << " | " << square[6] << endl;

cout << "_____|_____|_____" << endl;
cout << " | | " << endl;

cout << " " << square[7] << " | " << square[8] << " | " << square[9] << endl;

cout << " | | " << endl << endl;
}
/*******************************************************
END OF PROJECT
*******************************************************/
Please put in code tags. You can find them on the format options to the left over there >>, when you edit your post.
1
2
3
//This is in code tags and is readable 
//     Nicely formatted 
//And gives line numbers  




Last edited on
Also... what makes you think something is wrong with it?

Do you get compiler errors? If so, tell us what the errors are and what line they're on.

Does it compile but just not do what you expect? If so, tell us what it does, and tell us what you expect it to do.


It's hard for us to solve a problem when we don't know what the problem is.
The problem I am having is that the game itself is loading but when you go and play it, the "x" and "o" symbols don't show up when you select the number you want to mark as "x" or "o".
http://www.cplusplus.com/articles/jEywvCM9/

1
2
3
4
    char mark;
    // ...

    mark= (player == 1) ? "x" : "0";


"x" and "0" are string literals of type const char[2]. In this context, they evaluate to the address of the first character in the string, so you are attempting to assign mark the address of either "x" or "0" depending on the value of player.

1
2
3
4
    char mark;
    // ...

    mark= (player == 1) ? 'x' : '0' ; // character literal, not string literal 

Thanks for the support guys. The game now works like it is supposed to.
Topic archived. No new replies allowed.