|  | @@ -39,6 +39,24 @@ void Board::resetBoard(void)
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +void Board::setEmpty(void)
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    whitePawns =    0;
 | 
	
		
			
				|  |  | +    whiteRooks =    0;
 | 
	
		
			
				|  |  | +    whiteKnights =  0;
 | 
	
		
			
				|  |  | +    whiteBishops =  0;
 | 
	
		
			
				|  |  | +    whiteQueens =   0;
 | 
	
		
			
				|  |  | +    whiteKing =     0;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    blackPawns =    0;
 | 
	
		
			
				|  |  | +    blackRooks =    0;
 | 
	
		
			
				|  |  | +    blackKnights =  0;
 | 
	
		
			
				|  |  | +    blackBishops =  0;
 | 
	
		
			
				|  |  | +    blackQueens =   0;
 | 
	
		
			
				|  |  | +    blackKing =     0;
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  bool Board::tryToMove(Bitboard start, Bitboard end, Bitboard& b)
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      if (start & b)
 | 
	
	
		
			
				|  | @@ -63,7 +81,7 @@ void Board::setBoard(const std::string& fenPosition)
 | 
	
		
			
				|  |  |          {'Q', &blackQueens},
 | 
	
		
			
				|  |  |          {'K', &blackKing}
 | 
	
		
			
				|  |  |      };
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +    setEmpty();
 | 
	
		
			
				|  |  |      for (auto character : fenPosition) {
 | 
	
		
			
				|  |  |          if (character >= '0' && character <= '9') {
 | 
	
		
			
				|  |  |              column += character - '0';
 | 
	
	
		
			
				|  | @@ -79,20 +97,52 @@ void Board::setBoard(const std::string& fenPosition)
 | 
	
		
			
				|  |  |              else {
 | 
	
		
			
				|  |  |                  throw runtime_error("invalid piece type "s + character);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            ++ column;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +// a bit hacky, sry
 | 
	
		
			
				|  |  |  std::string Board::getFenBoard(void) const
 | 
	
		
			
				|  |  |  {
 | 
	
		
			
				|  |  |      using namespace std;
 | 
	
		
			
				|  |  |      stringstream str;
 | 
	
		
			
				|  |  |      for (int row = 0; row < 8; row++) {
 | 
	
		
			
				|  |  |          int counter = 0;
 | 
	
		
			
				|  |  | -        for (int column; column < 8; column++) {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        for (int column = 0; column < 8; column++) {
 | 
	
		
			
				|  |  | +            PieceType black = getBlackAtPosition({row, column});
 | 
	
		
			
				|  |  | +            PieceType white = getWhiteAtPosition({row, column});
 | 
	
		
			
				|  |  | +            //str << " " << Bitboard::fromIndex({row, column}) << " " << " ";;
 | 
	
		
			
				|  |  | +            //str << "row,column,index: " << row << "," << column << "," <<
 | 
	
		
			
				|  |  | +            //    int(Index(row, column).index) << " ";
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (black == PieceType::EMPTY && white == PieceType::EMPTY)
 | 
	
		
			
				|  |  | +                ++ counter;
 | 
	
		
			
				|  |  | +            else if (counter > 0) {
 | 
	
		
			
				|  |  | +                str << counter;
 | 
	
		
			
				|  |  | +                counter = 0;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            switch (black) {
 | 
	
		
			
				|  |  | +                case PieceType::PAWN:   str << 'P'; break;
 | 
	
		
			
				|  |  | +                case PieceType::KNIGHT: str << 'N'; break;
 | 
	
		
			
				|  |  | +                case PieceType::BISHOP: str << 'B'; break;
 | 
	
		
			
				|  |  | +                case PieceType::ROOK:   str << 'R'; break;
 | 
	
		
			
				|  |  | +                case PieceType::QUEEN:  str << 'Q'; break;
 | 
	
		
			
				|  |  | +                case PieceType::KING:   str << 'K'; break;
 | 
	
		
			
				|  |  | +                default:
 | 
	
		
			
				|  |  | +                switch (white) {
 | 
	
		
			
				|  |  | +                    case PieceType::PAWN:   str << 'p'; break;
 | 
	
		
			
				|  |  | +                    case PieceType::KNIGHT: str << 'n'; break;
 | 
	
		
			
				|  |  | +                    case PieceType::BISHOP: str << 'b'; break;
 | 
	
		
			
				|  |  | +                    case PieceType::ROOK:   str << 'r'; break;
 | 
	
		
			
				|  |  | +                    case PieceType::QUEEN:  str << 'q'; break;
 | 
	
		
			
				|  |  | +                    case PieceType::KING:   str << 'k'; break;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        if (counter > 0)
 | 
	
		
			
				|  |  | +            str << counter;
 | 
	
		
			
				|  |  |          if (row != 7)
 | 
	
		
			
				|  |  |              str << "/";
 | 
	
		
			
				|  |  |      }
 |