Mar 21, 2013 at 2:16pm Mar 21, 2013 at 2:16pm UTC
You can look at my old tic tac toe game state checking algorithm.
Note, that it is horribly written and possibly inefficient:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
enum fieldelement {O = -1, NONE, X, TIE};
fieldelement checkGameState(fieldelement const (&board)[3][3])
{
fieldelement winner = TIE;
for (int i = 0; i < 3; i++)
for (int j = 0; j < 3; ++j)
if (board[i][j] == NONE)
winner = NONE;
for (int i = 0; i < 3; ++i)
if ( ((board[i][0]==board[i][1])&&(board[i][0]==board[i][2])) ||
((board[0][i]==board[1][i])&&(board[0][i]==board[2][i])) ) {
winner = board[i][i];
break ;
}
if ( ((board[1][1]==board[0][0])&&(board[1][1]==board[2][2])) ||
((board[1][1]==board[0][2])&&(board[1][1]==board[2][0])) )
winner = board[1][1];
return winner;
}
What i can't get is how to get error if i write on a grid where i already gave an input.
And you can have that code (all said about previous code is valid here too):
1 2 3 4 5 6 7 8 9 10 11 12 13
void do_turn(const fieldelement player, fieldelement (&board)[3][3])
{
std::cout << "Your move '" << getSymbol(player) << "'" << std::endl;
int x, y;
while (true ) {
std::cin >> x >> y;
if (0 < x && x < 4 && 0 < y && y < 4)
if (board[x-1][y-1] == NONE)
break ;
std::cout << "Wrong move, try again" << std::endl;
}
board[x-1][y-1] = player;
}
Last edited on Mar 21, 2013 at 2:31pm Mar 21, 2013 at 2:31pm UTC