That would be so much help. Thanks in advance!
Code: Select all
#include <iostream.h>
#include <stdlib.h>
#include <string>
#include <ctype.h>
const int OCCUPIED = 5;
const int ATTACKED = 10;
int main()
{
string input;
while(true)
{
cin >> input;
int board[22][22];
for(int i=7; i<15; i++)
{
for(int j=7; j<15; j++)
board[i][j] = 0;
}
int row=7, col=7;
char piece;
if(cin.eof())
break;
for(int i=0; i<input.length(); i++)
{
piece = input[i];
if(piece >= '0' && piece <= '9')
{
col+=(piece - '0');
}
else if(piece == '/')
{
row++;
col = 7;
}
else
{
board[row][col] = OCCUPIED;
col++;
}
}
row = col = 7;
for(int i=0; i<input.length(); i++)
{
piece= tolower(input[i]);
if(piece >= '0' && piece <= '9')
{
col+=(piece - '0');
}
else if(piece == '/')
{
row++;
col = 7;
}
else
{
if(piece == 'k')
{
for(int j=-1; j<=1; j++)
{
for(int k=-1; k<=1; k++)
{
if(board[row+j][col+k] != OCCUPIED)
board[row+j][col+k] = ATTACKED;
}
}
}
else if(piece == 'q')
{
// cout << "queen\ti:" << row-7 << "\tj: " << col-7 << "\n";
// HORIZONTAL & VERTICAL
for(int k=1; k<=7; k++)
{
if(board[row-k][col] == OCCUPIED)
break;
board[row-k][col] = ATTACKED;
}
for(int k=1; k<=7; k++)
{
if(board[row+k][col] == OCCUPIED)
break;
board[row+k][col] = ATTACKED;
}
for(int k=1; k<=7; k++)
{
if(board[row][col-k] == OCCUPIED)
break;
board[row][col-k] = ATTACKED;
}
for(int k=1; k<=7; k++)
{
if(board[row][col+k] == OCCUPIED)
break;
board[row][col+k] = ATTACKED;
}
// DIAGONAL
for(int k=1; k<=7; k++)
{
if(board[row+k][col+k] == OCCUPIED)
break;
board[row+k][col+k] = ATTACKED;
}
for(int k=1; k<=7; k++)
{
if(board[row-k][col-k] == OCCUPIED)
break;
board[row-k][col-k] = ATTACKED;
}
for(int k=1; k<=7; k++)
{
if(board[row-k][col+k] == OCCUPIED)
break;
board[row-k][col+k] = ATTACKED;
}
for(int k=1; k<=7; k++)
{
if(board[row+k][col-k] == OCCUPIED)
break;
board[row+k][col-k] = ATTACKED;
}
}
else if(piece == 'r')
{
for(int k=1; k<=7; k++)
{
if(board[row-k][col] == OCCUPIED)
break;
board[row-k][col] = ATTACKED;
}
for(int k=1; k<=7; k++)
{
if(board[row+k][col] == OCCUPIED)
break;
board[row+k][col] = ATTACKED;
}
for(int k=1; k<=7; k++)
{
if(board[row][col-k] == OCCUPIED)
break;
board[row][col-k] = ATTACKED;
}
for(int k=1; k<=7; k++)
{
if(board[row][col+k] == OCCUPIED)
break;
board[row][col+k] = ATTACKED;
}
}
else if(piece == 'b')
{
for(int k=1; k<=7; k++)
{
if(board[row+k][col+k] == OCCUPIED)
break;
board[row+k][col+k] = ATTACKED;
}
for(int k=1; k<=7; k++)
{
if(board[row-k][col-k] == OCCUPIED)
break;
board[row-k][col-k] = ATTACKED;
}
for(int k=1; k<=7; k++)
{
if(board[row-k][col+k] == OCCUPIED)
break;
board[row-k][col+k] = ATTACKED;
}
for(int k=1; k<=7; k++)
{
if(board[row+k][col-k] == OCCUPIED)
break;
board[row+k][col-k] = ATTACKED;
}
}
else if(piece == 'n')
{
if(board[row-2][col-1] != OCCUPIED)
board[row-2][col-1] = ATTACKED;
if(board[row-2][col+1] != OCCUPIED)
board[row-2][col+1] = ATTACKED;
if(board[row-1][col-2] != OCCUPIED)
board[row-1][col-2] = ATTACKED;
if(board[row-1][col+2] != OCCUPIED)
board[row-1][col+2] = ATTACKED;
if(board[row+2][col-1] != OCCUPIED)
board[row+2][col-1] = ATTACKED;
if(board[row+2][col+1] != OCCUPIED)
board[row+2][col+1] = ATTACKED;
if(board[row+1][col-2] != OCCUPIED)
board[row+1][col-2] = ATTACKED;
if(board[row+1][col+2] != OCCUPIED)
board[row+1][col+2] = ATTACKED;
}
else if(piece == 'p')
{
if(input[i] == 'p')
{
if(board[row+1][col-1] != OCCUPIED)
board[row+1][col-1] = ATTACKED;
if(board[row+1][col+1] != OCCUPIED)
board[row+1][col+1] = ATTACKED;
}
else
{
if(board[row-1][col-1] != OCCUPIED)
board[row-1][col-1] = ATTACKED;
if(board[row-1][col+1] != OCCUPIED)
board[row-1][col+1] = ATTACKED;
}
}
col++;
}
}
int numsquares = 0;
for(int i=7; i<15; i++)
{
for(int j=7; j<15; j++)
{
if(board[i][j] != OCCUPIED && board[i][j] != ATTACKED)
{
numsquares++;
// cout << "i: " << i-7 << "\tj: " << j-7 << "\n";
}
}
}
cout << numsquares << "\n";
}
return 0;
}