Recently changed the main code so it would work with a loop, but it's only working for 1 move and only when I choose to move piece '6'.
I am most certainly missing something out on the loop. If anyone could give me a hand I'd be grateful.
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';
bool WinGame = false;
while (WinGame != true)
{
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;
char 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]);
}
if (GameBoard[3] == ' ')
{
swap(GameBoard[0], GameBoard[3]);
}
}
if (Play == GameBoard[1])
{
if (GameBoard[0] == ' ')
{
swap(GameBoard[1], GameBoard[0]);
}
if (GameBoard[2] == ' ')
{
swap(GameBoard[1], GameBoard[2]);
}
if (GameBoard[4] == ' ')
{
swap(GameBoard[1], GameBoard[4]);
}
}
if (Play == GameBoard[2])
{
if (GameBoard[1] == ' ')
{
swap(GameBoard[2], GameBoard[1]);
}
if (GameBoard[5] == ' ')
{
swap(GameBoard[2], GameBoard[5]);
}
}
if (Play == GameBoard[3])
{
if (GameBoard[0] == ' ')
{
swap(GameBoard[3], GameBoard[0]);
}
if (GameBoard[4] == ' ')
{
swap(GameBoard[3], GameBoard[4]);
}
if (GameBoard[6] == ' ')
{
swap(GameBoard[3], GameBoard[6]);
}
}
if (Play == GameBoard[4])
{
if (GameBoard[1] == ' ')
{
swap(GameBoard[4], GameBoard[1]);
}
if (GameBoard[3] == ' ')
{
swap(GameBoard[4], GameBoard[3]);
}
if (GameBoard[5] == ' ')
{
swap(GameBoard[4], GameBoard[5]);
}
if (GameBoard[7] == ' ')
{
swap(GameBoard[4], GameBoard[7]);
}
}
if (Play == GameBoard[5])
{
if (GameBoard[2] == ' ')
{
swap(GameBoard[5], GameBoard[2]);
}
if (GameBoard[4] == ' ')
{
swap(GameBoard[5], GameBoard[4]);
}
if (GameBoard[8] == ' ')
{
swap(GameBoard[5], GameBoard[8]);
}
}
if (Play == GameBoard[6])
{
if (GameBoard[3] == ' ')
{
swap(GameBoard[6], GameBoard[3]);
}
if (GameBoard[7] == ' ')
{
swap(GameBoard[6], GameBoard[7]);
}
}
if (Play == GameBoard[7])
{
if (GameBoard[6] == ' ')
{
swap(GameBoard[7], GameBoard[6]);
}
if (GameBoard[4] == ' ')
{
swap(GameBoard[7], GameBoard[4]);
}
if (GameBoard[8] == ' ')
{
swap(GameBoard[7], GameBoard[8]);
}
}
if (Play == GameBoard[8])
{
if (GameBoard[7] == ' ')
{
swap(GameBoard[8], GameBoard[7]);
}
if (GameBoard[5] == ' ')
{
swap(GameBoard[8], GameBoard[5]);
}
}
else {
cout<<"You can not move that piece. Please, try again!" <<endl <<endl;
}
//Checks 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] == ' ')
{
WinGame = true;
}
}
}
}
}
}
//Cycle ends
//displays the final board
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;
cout<<"You win! :)";
cin.get();
}
It works fine if you move piece '6' to the right place, yet if you try moving any other piece it will give an error message (even if that piece is close to the blank space). Also, I can't move '6' back.