Code:
#include <algorithm>
#include <iostream>
using namespace std;
int main()
{
char GameBoard[9];
GameBoard[0] = '1';
GameBoard[1] = '2';
GameBoard[2] = '3';
GameBoard[3] = '4';
GameBoard[4] = '5';
GameBoard[5] = ' ';
GameBoard[6] = '7';
GameBoard[7] = '8';
GameBoard[8] = '6';
InitialBoard:
cout<<" " <<GameBoard[0] <<" | " <<GameBoard[1] <<" | " <<GameBoard[2] <<endl;
cout<<"-----+-----+-----" <<endl;
cout<<" " <<GameBoard[3] <<" | " <<GameBoard[4] <<" | " <<GameBoard[5] <<endl;
cout<<"-----+-----+-----" <<endl;
cout<<" " <<GameBoard[6] <<" | " <<GameBoard[7] <<" | " <<GameBoard[8] <<endl <<endl;
NextMove:
//Check end game conditions
if (GameBoard[0] == '1' && GameBoard[1] == '2')
{
if (GameBoard[2] == '3' && GameBoard[3] == '4')
{
if (GameBoard[4] == '5' && GameBoard[5] == '6')
{
if (GameBoard[6] == '7' && GameBoard[7] == '8')
{
if (GameBoard[8] == ' ')
{
goto EndGame;
}
}
}
}
}
int Play;
cout<<"Choose a number to move: ";
cin>>Play;
cin.ignore();
//Checks for (in)valid moves
if (Play == GameBoard[0])
{
if (GameBoard[1] == ' ')
{
swap(GameBoard[0], GameBoard[1]);
goto UpdateBoard;
}
if (GameBoard[3] == ' ')
{
swap(GameBoard[0], GameBoard[3]);
goto UpdateBoard;
}
}
if (Play == GameBoard[1])
{
if (GameBoard[0] == ' ')
{
swap(GameBoard[1], GameBoard[0]);
goto UpdateBoard;
}
if (GameBoard[2] == ' ')
{
swap(GameBoard[1], GameBoard[2]);
goto UpdateBoard;
}
if (GameBoard[4] == ' ')
{
swap(GameBoard[1], GameBoard[4]);
goto UpdateBoard;
}
}
if (Play == GameBoard[2])
{
if (GameBoard[1] == ' ')
{
swap(GameBoard[2], GameBoard[1]);
goto UpdateBoard;
}
if (GameBoard[5] == ' ')
{
swap(GameBoard[2], GameBoard[5]);
goto UpdateBoard;
}
}
if (Play == GameBoard[3])
{
if (GameBoard[0] == ' ')
{
swap(GameBoard[3], GameBoard[0]);
goto UpdateBoard;
}
if (GameBoard[4] == ' ')
{
swap(GameBoard[3], GameBoard[4]);
goto UpdateBoard;
}
if (GameBoard[6] == ' ')
{
swap(GameBoard[3], GameBoard[6]);
goto UpdateBoard;
}
}
if (Play == GameBoard[4])
{
if (GameBoard[1] == ' ')
{
swap(GameBoard[4], GameBoard[1]);
goto UpdateBoard;
}
if (GameBoard[3] == ' ')
{
swap(GameBoard[4], GameBoard[3]);
goto UpdateBoard;
}
if (GameBoard[5] == ' ')
{
swap(GameBoard[4], GameBoard[5]);
goto UpdateBoard;
}
if (GameBoard[7] == ' ')
{
swap(GameBoard[4], GameBoard[7]);
goto UpdateBoard;
}
}
if (Play == GameBoard[5])
{
if (GameBoard[2] == ' ')
{
swap(GameBoard[5], GameBoard[2]);
goto UpdateBoard;
}
if (GameBoard[4] == ' ')
{
swap(GameBoard[5], GameBoard[4]);
goto UpdateBoard;
}
if (GameBoard[8] == ' ')
{
swap(GameBoard[5], GameBoard[8]);
goto UpdateBoard;
}
}
if (Play == GameBoard[6])
{
if (GameBoard[3] == ' ')
{
swap(GameBoard[6], GameBoard[3]);
goto UpdateBoard;
}
if (GameBoard[7] == ' ')
{
swap(GameBoard[6], GameBoard[7]);
goto UpdateBoard;
}
}
if (Play == GameBoard[7])
{
if (GameBoard[6] == ' ')
{
swap(GameBoard[7], GameBoard[6]);
goto UpdateBoard;
}
if (GameBoard[4] == ' ')
{
swap(GameBoard[7], GameBoard[4]);
goto UpdateBoard;
}
if (GameBoard[8] == ' ')
{
swap(GameBoard[7], GameBoard[8]);
goto UpdateBoard;
}
}
if (Play == GameBoard[8])
{
if (GameBoard[7] == ' ')
{
swap(GameBoard[8], GameBoard[7]);
goto UpdateBoard;
}
if (GameBoard[5] == ' ')
{
swap(GameBoard[8], GameBoard[5]);
goto UpdateBoard;
}
}
else {
cout<<"You can not move that piece. Please, try again!" <<endl <<endl;
goto InitialBoard;
}
UpdateBoard:
cout<<" " <<GameBoard[0] <<" | " <<GameBoard[1] <<" | " <<GameBoard[2] <<endl;
cout<<"-----+-----+-----" <<endl;
cout<<" " <<GameBoard[3] <<" | " <<GameBoard[4] <<" | " <<GameBoard[5] <<endl;
cout<<"-----+-----+-----" <<endl;
cout<<" " <<GameBoard[6] <<" | " <<GameBoard[7] <<" | " <<GameBoard[8] <<endl;
goto NextMove;
EndGame:
cout<<"You win! :)";
cin.get();
}