Code: Select all
int rank = 0;
int file = 0;
for( int i = 0; i < vecFen[0].length(); i++ )
{
char c = vecFen[0][i];
if( c== '/' )
{
rank++;
file = 0;
continue;
}
if( (c >= '1') && (c <= '8') )
{
file += c-'0';
continue;
}
if( isalpha(c) )
{
switch(c)
{
case 'P':board[file][7-rank] = wPawn;break;
case 'N':board[file][7-rank] = wKnight;break;
case 'B':board[file][7-rank] = wBishop;break;
case 'R':board[file][7-rank] = wRook;break;
case 'Q':board[file][7-rank] = wQueen;break;
case 'K':board[file][7-rank] = wKing;break;
case 'p':board[file][7-rank] = bPawn;break;
case 'n':board[file][7-rank] = bKnight;break;
case 'b':board[file][7-rank] = bBishop;break;
case 'r':board[file][7-rank] = bRook;break;
case 'q':board[file][7-rank] = bQueen;break;
case 'k':board[file][7-rank] = bKing;break;
}
file++;
continue;
}
}
if( vecFen[1][0] == 'b' )mov = BLACK;
if( vecFen[1][0] == 'w' ) mov = WHITE;
// etc for castling rights, empassant, 50 move counter and move number
Does using byte aligned structures help ? I often see programs with a variable to pad up the size.