protected override Int32 Evaluate(ChessBoard myBoard, ChessPiece turn, Int16 depth) { IncrementSearchCount(); var materialValue = (turn == ChessPiece.White ? 1 : -1) * myBoard.GetMaterialValue(this.ChessPieceRelativeValues, depth); var positionalValue = (turn == ChessPiece.White ? 1 : -1) * myBoard.GetPositionalValue(); return MaterialFactor * materialValue + PositionalFactor * positionalValue; }
protected override Int32 Evaluate(ChessBoard myBoard, ChessPiece turn, Int16 depth) { //bool canMove; IncrementSearchCount(); var materialValue = myBoard.GetMaterialValue(this.ChessPieceRelativeValues, depth); var positionalValue = myBoard.GetPositionalValue(); /* TBD!! if (!canMove) { if (turn == this.MySuit) { // I am mated or stale mated return myBoard.InCheck(turn) ? -WonScore : StaleMateScore; } else { // Opponent is mated or stale mated return myBoard.InCheck(turn) ? WonScore : StaleMateScore; } }*/ return MaterialFactor * materialValue + PositionalFactor * positionalValue; }