#include <iostream>
void main()
{
char SquareA ('a');
char SquareB ('b');
char SquareC ('c');
char SquareD ('d');
char SquareE ('e');
char SquareF ('f');
char SquareG ('g');
char SquareH ('h');
char SquareI ('i');
int playerturn(1);
bool gameover(true);
//game
do
{
//prints the game board that we shall be playing our game.
std::cout << SquareA << "|" << SquareB << "|" << SquareC << std::endl;
std::cout << "-+-+-" << std::endl;
std::cout << SquareD << "|" << SquareE << "|" << SquareF << std::endl;
std::cout << "-+-+-" << std::endl;
std::cout << SquareG << "|" << SquareH << "|" << SquareI << std::endl;
// create teh marks
char playermark;
if (playerturn == 1) {
playermark = 'X';
} else {
playermark = 'O';
}
// turn prompt
std::cout << "Player" << playerturn << "'s turn:" << std::endl;
bool ValidMove;
// loops 'til valid
do {
char nextmove;
std::cin >> nextmove;
ValidMove = true;
// make sure its valid
if (nextmove == 'a' && SquareA == 'a') {
SquareA = playermark;
} else if (nextmove == 'b' && SquareB == 'b') {
SquareB = playermark;
} else if (nextmove == 'c' && SquareC == 'c') {
SquareC = playermark;
} else if (nextmove == 'd' && SquareD == 'd') {
SquareD = playermark;
} else if (nextmove == 'e' && SquareE == 'e') {
SquareE = playermark;
} else if (nextmove == 'f' && SquareF == 'f') {
SquareF = playermark;
} else if (nextmove == 'g' && SquareG == 'g') {
SquareG = playermark;
} else if (nextmove == 'h' && SquareH == 'h') {
SquareH = playermark;
} else if (nextmove == 'i' && SquareI == 'i') {
SquareI = playermark;
} else {
std::cout << "What are you? Dumb? Try again." << std::endl;
ValidMove = false;
}
} while (!ValidMove);
gameover = false;
bool WinGame = true;
// Game complete?
if (SquareA != 'a') {
if (SquareB == SquareA && SquareC == SquareA) {
gameover = true;
}
if (SquareD == SquareA && SquareG == SquareA) {
gameover = true;
}
}
if (SquareE != 'e') {
if (SquareA == SquareE && SquareI == SquareE) {
gameover = true;
}
if (SquareB == SquareE && SquareH == SquareE) {
gameover = true;
}
if (SquareD == SquareE && SquareF == SquareE) {
gameover = true;
}
if (SquareC == SquareE && SquareG == SquareE) {
gameover = true;
}
}
if (SquareI != 'i') {
if (SquareC == SquareI && SquareF == SquareI) {
gameover = true;
}
if (SquareG == SquareI && SquareH == SquareI) {
gameover = true;
}
}
// Tie
if (SquareA != 'a' && SquareB != 'b' && SquareC != 'c' &&
SquareD != 'd' && SquareE != 'e' && SquareF != 'f' &&
SquareG != 'g' && SquareH != 'h' && SquareI != 'i' && !gameover)
{
gameover = true;
WinGame = false;
}
if (gameover) {
if (WinGame) {
std::cout << "Player" << playerturn << " wins!" << std::endl;
}
// end board printed
std::cout << SquareA << "|" << SquareB << "|" << SquareC << std::endl;
std::cout << "-+-+-"<< std::endl;
std::cout << SquareD << "|" << SquareE << "|" << SquareF << std::endl;
std::cout << "-+-+-"<< std::endl;
std::cout << SquareG << "|" << SquareH << "|" << SquareI << std::endl;
std::cout << "Game Over!" << std::endl;
std::cout << "Want to get owned again? (y/n)?" << std::endl;
char PlayAgain;
std::cin >> PlayAgain;
if (PlayAgain == 'y') {
gameover = false;
// Clears all
SquareA = 'a';
SquareB = 'b';
SquareC = 'c';
SquareD = 'd';
SquareE = 'e';
SquareF = 'f';
SquareG = 'g';
SquareH = 'h';
SquareI = 'i';
}
playerturn = 1;
} else {
// alt player
if (playerturn == 1) {
playerturn = 2;
} else {
playerturn = 1;
}
}
} while (!gameover);
}


