Ok, that code wasn't very good so i started from scratch. I think i have improved something, but still function forceStrike doen't work. After any move it returns true. Or it is true before return?
Code:
#include <iostream>
#include <cstdlib>
using namespace std;
int drawBoard();
int initBoard();
int getMove();
bool forceStrike(int x, int y, char cPlayerMark, char cPlayerMark2);
char Board[9][9];
bool endGame = false;
int iPlayerMove, x, y, lr;
char cPlayerMark, cPlayerMark2, emptyPlace = ' ';
int main()
{
initBoard();
drawBoard();
while(endGame == false)
{
getMove();
drawBoard();
//system("cls");
}
}
int drawBoard()
{
cout << " 0 1 2 3 4 5 6 7 " << endl;
for(int x=0; x<8; x++)
{
for(int y=0; y<8; y++)
cout << char(218) << char(196) << char(191);
cout << x;
cout<<'\n';
for(int y=0; y<8; y++)
cout << char(179) << Board[x][y] <<char(179);
cout<<'\n';
for(int y=0; y<8; y++)
cout << char(192) << char(196) <<char(217);
cout<<'\n';
}
}
int initBoard()
{
for(int x=0; x<8; x++)
{
for(int y=0; y<8; y++)
{
Board[x][y] = emptyPlace;
}
}
Board[5][0] = 'X';
Board[7][0] = 'X';
Board[6][1] = 'X';
Board[5][2] = 'X';
Board[7][2] = 'X';
Board[6][3] = 'X';
Board[5][4] = 'X';
Board[7][4] = 'X';
Board[6][5] = 'X';
Board[5][6] = 'X';
Board[7][6] = 'X';
Board[6][7] = 'X';
Board[1][0] = 'O';
Board[0][1] = 'O';
Board[2][1] = 'O';
Board[1][2] = 'O';
Board[0][3] = 'O';
Board[2][3] = 'O';
Board[1][4] = 'O';
Board[0][5] = 'O';
Board[2][5] = 'O';
Board[1][6] = 'O';
Board[0][7] = 'O';
Board[2][7] = 'O';
}
int getMove()
{
if(iPlayerMove == 1)
{
iPlayerMove = 2;
}
else
{
iPlayerMove = 1;
}
if(iPlayerMove == 1)
{
cPlayerMark = 'X';
cPlayerMark2 = 'O';
}
else
{
cPlayerMark = 'O';
cPlayerMark2 = 'X';
}
cout << "Player " << iPlayerMove << " turn:" << endl;
cout << "Enter right side" << endl;
cin >> x;
cout << "Enter top side" << endl;
cin >> y;
if(forceStrike(x,y,cPlayerMark,cPlayerMark2) == true)
{
cout << "You must strike" << endl;
}
if(cPlayerMark == 'X' && Board[x][y] == cPlayerMark)
{
cout << "Where you want to move it? Left-1, Right-2" << endl;
cin >> lr;
if(lr == 1 && Board[x-1][y-1] == emptyPlace)
{
Board[x][y] = emptyPlace;
Board[x-1][y-1] = cPlayerMark;
}
else if(lr == 2 && Board[x-1][y+1] == emptyPlace)
{
Board[x][y] = emptyPlace;
Board[x-1][y+1] = cPlayerMark;
}
else
{
cout << "Wrong move" << endl;
iPlayerMove = 2;
}
}
else if(cPlayerMark == 'O' && Board[x][y] == cPlayerMark)
{
cout << "Where you want to move it? Left-1, Right-2" << endl;
cin >> lr;
if(lr == 1 && Board[x+1][y-1] == emptyPlace)
{
Board[x][y] = emptyPlace;
Board[x+1][y-1] = cPlayerMark;
}
else if(lr == 2 && Board[x+1][y+1] == emptyPlace)
{
Board[x][y] = emptyPlace;
Board[x+1][y+1] = cPlayerMark;
}
else
{
cout << "Wrong move" << endl;
iPlayerMove = 1;
}
}
else
{
cout << "There is no piece, try again" << endl;
if(iPlayerMove == 1)
{
iPlayerMove = 2;
}
else
{
iPlayerMove = 1;
}
}
}
bool forceStrike(int x, int y, char cPlayerMark, char cPlayerMark2) // How do i know if it is true or false now?
{
if(cPlayerMark == 'X')
{
if(Board[x-1][y-1] == cPlayerMark2 || Board[x-1][y+1] == cPlayerMark2)
{
return true;
}
}
}