public EvaluationService2(EvaluationData evaluationData) { _pawnControl = new ulong[2]; _evaluationScores = new EvaluationScores(); _evaluationData = evaluationData; _evalTable = new EvalHashTable(); _evalTable.SetSize(16 * 1024 * 1024); _pawnTable = new EvalHashTable(); _pawnTable.SetSize(16 * 1024 * 1024); _slideGenerator = new MagicBitboardsService(); _pinDetector = new PinDetector(_slideGenerator); _attacks = new AttacksService(_slideGenerator); }
void printEval(Board b, EvaluationData e, EvaluationScores v, Score score) { var builder = new StringBuilder(); builder.Append("------------------------------------------\n"); builder.Append($"Total value (for side to move): {score}\n"); builder.Append($"Material balance : {b.PieceMaterial[ChessPiece.White] + b.PawnMaterial[ChessPiece.White] - b.PieceMaterial[ChessPiece.Black] - b.PawnMaterial[ChessPiece.Black]} \n"); builder.Append("Material adjustement : "); printEvalFactor(builder, v.adjustMaterial[ChessPiece.White], v.adjustMaterial[ChessPiece.Black]); builder.Append("Mg Piece/square tables : "); printEvalFactor(builder, v.PieceSquaresMidgame[ChessPiece.White], v.PieceSquaresMidgame[ChessPiece.Black]); builder.Append("Eg Piece/square tables : "); printEvalFactor(builder, v.PieceSquaresEndgame[ChessPiece.White], v.PieceSquaresEndgame[ChessPiece.Black]); builder.Append("Mg Mobility : "); printEvalFactor(builder, v.mgMob[ChessPiece.White], v.mgMob[ChessPiece.Black]); builder.Append("Eg Mobility : "); printEvalFactor(builder, v.egMob[ChessPiece.White], v.egMob[ChessPiece.Black]); builder.Append("Mg Tropism : "); printEvalFactor(builder, v.mgTropism[ChessPiece.White], v.mgTropism[ChessPiece.Black]); builder.Append("Eg Tropism : "); printEvalFactor(builder, v.egTropism[ChessPiece.White], v.egTropism[ChessPiece.Black]); //builder.Append("Pawn structure : %d \n", evalPawnStructure()); builder.Append("Blockages : "); printEvalFactor(builder, v.blockages[ChessPiece.White], v.blockages[ChessPiece.Black]); builder.Append("Positional themes : "); printEvalFactor(builder, v.positionalThemes[ChessPiece.White], v.positionalThemes[ChessPiece.Black]); builder.Append("King Shield : "); printEvalFactor(builder, v.kingShield[ChessPiece.White], v.kingShield[ChessPiece.Black]); builder.Append("Tempo : "); if (b.WhiteToMove) { builder.Append(EvaluationData.TEMPO); } else { builder.Append(-EvaluationData.TEMPO); } builder.Append("\n"); builder.Append("------------------------------------------\n"); Console.WriteLine(builder.ToString()); }