# Question & Answer: C++ problem, could you please with this probelm "Game" through only using bitwise operators & the following: 1-Control and repetition structures for input validation……

C++ problem, could you please with this probelm “Game” through only using bitwise operators & the following:

1-Control and repetition structures for input validation.

Don't use plagiarized sources. Get Your Custom Essay on
Question & Answer: C++ problem, could you please with this probelm "Game" through only using bitwise operators & the following: 1-Control and repetition structures for input validation……
GET AN ESSAY WRITTEN FOR YOU FROM AS LOW AS \$13/PAGE

2-Bitwise operators to handle the underlying bits in a variable.

3-Apply formatting rules to console output.

4-Replicate the gameplay of the game.

#include <iostream>

using namespace std;
class Tic
{
public:
Tic();
int plmov(int i);
void nxtpl();
void winchk();
void Drawbd();
private:
int bd[3][3];
int turn; // pl1 == 1, pl2 == 2
int gmover;
void plgm();
};

Tic::Tic()
{
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
bd[i][j] = 0;// 0 means empty
turn = 1; // pl1
gmover = 0;
Drawbd();
plgm();
}
int Tic::plmov(int i)
{
int x = (i – 1)/3;
int y = ((i + 2) % 3);
int returnVal = bd[x][y];
if (returnVal == 0)
{
bd[x][y] = turn;
winchk();
if (!gmover)
nxtpl();
}
else
cout << “Invalid move, try again.n”;
Drawbd();
return returnVal;
}

void Tic::nxtpl()
{
if (turn == 1)
turn = 2;
else
turn = 1;
}

void Tic::winchk()
{
if ((bd[0][0] == turn) && (bd[1][0] == turn) && (bd[2][0] == turn))
gmover = turn;
else
if ((bd[0][1] == turn) && (bd[1][1] == turn) && (bd[2][1] == turn))
gmover = turn;
else
if ((bd[0][2] == turn) && (bd[1][2] == turn) && (bd[2][2] == turn))
gmover = turn;
else
if ((bd[0][0] == turn) && (bd[0][1] == turn) && (bd[0][2] == turn))
gmover = turn;
else
if ((bd[1][0] == turn) && (bd[1][1] == turn) && (bd[1][2] == turn))
gmover = turn;
else
if ((bd[2][0] == turn) && (bd[2][1] == turn) && (bd[2][2] == turn))
gmover = turn;
else
if ((bd[0][0] == turn) && (bd[1][1] == turn) && (bd[2][2] == turn))
gmover = turn;
else
if ((bd[0][2] == turn) && (bd[1][1] == turn) && (bd[2][0] == turn))
gmover = turn;
}

void Tic::plgm()
{
int i;
while (gmover!=turn)
{
//Drawbd();
cout << “Player[” << turn << “] Please enter move: “;
cin >> i;
plmov(i);
}
cout << “Player[” << turn << “] Wins!” << endl;
}

void Tic::Drawbd()
{
int temp[9];
int k = 0;
for(int i = 0; i < 3; i++)
for(int j = 0; j < 3; j++)
{
if (bd[i][j] == 0)
temp[k] = k+49;
else
{
if (bd[i][j] == 1)
temp[k] = 88;
else
temp[k] = 79;
}
k++;
}
cout << “+—+—+—+n”;
cout <<“| ” << (char)temp[0] << ” | ” << (char)temp[1] << ” | ” << (char)temp[2] << ” | n”;
cout << “+—+—+—+n”;
cout <<“| ” << (char)temp[3] << ” | ” << (char)temp[4] << ” | ” << (char)temp[5] << ” | n”;
cout << “+—+—+—+n”;
cout <<“| ” << (char)temp[6] << ” | ” << (char)temp[7] << ” | ” << (char)temp[8] << ” | n”;
cout << “+—+—+—+n”;
}
int main()
{
Tic Game;
return 0;
}