diff options
Diffstat (limited to 'src/board/engine.rs')
| -rw-r--r-- | src/board/engine.rs | 26 | 
1 files changed, 24 insertions, 2 deletions
| diff --git a/src/board/engine.rs b/src/board/engine.rs index a4b72eb..06369f5 100644 --- a/src/board/engine.rs +++ b/src/board/engine.rs @@ -88,8 +88,30 @@ impl Board {              } else {                  -1.              }; -            let multiplier = piece_type.static_eval(); -            eval += sign * multiplier * pop_count(*bitboard) as f32; + +            eval += sign * match piece_type { +                PieceType::Pawn => { +                    serialize_bitboard(*bitboard).iter().fold(0., |acc, square| { +                        acc + match (*square).rank() { +                            6 => 3., +                            5 => 2., +                            _ => 1., +                        } +                    }) +                } +                PieceType::PawnBlack => { +                    serialize_bitboard(*bitboard).iter().fold(0., |acc, square| { +                        acc + match (*square).rank() { +                            1 => 3., +                            2 => 2., +                            _ => 1., +                        } +                    }) +                } +                _ => { +                    piece_type.static_eval() * pop_count(*bitboard) as f32 +                } +            };          }          eval      } | 
