fix(store): check color on opponent corner hit
This commit is contained in:
parent
bf22060614
commit
440bf12c43
1 changed files with 25 additions and 13 deletions
|
|
@ -205,24 +205,26 @@ impl PointsRules {
|
|||
let from0 = adv_corner_field - self.dice.values.0 as usize;
|
||||
let from1 = adv_corner_field - self.dice.values.1 as usize;
|
||||
|
||||
let (from0_count, _from0_color) = board_ini.get_field_checkers(from0).unwrap();
|
||||
let (from1_count, _from1_color) = board_ini.get_field_checkers(from1).unwrap();
|
||||
let (from0_count, from0_color) = board_ini.get_field_checkers(from0).unwrap();
|
||||
let (from1_count, from1_color) = board_ini.get_field_checkers(from1).unwrap();
|
||||
let hit_moves = vec![(
|
||||
CheckerMove::new(from0, adv_corner_field).unwrap(),
|
||||
CheckerMove::new(from1, adv_corner_field).unwrap(),
|
||||
)];
|
||||
|
||||
if from0 == from1 {
|
||||
// doublet
|
||||
if from0_count > if from0 == corner_field { 3 } else { 1 } {
|
||||
jans.insert(Jan::TrueHitOpponentCorner, hit_moves);
|
||||
}
|
||||
} else {
|
||||
// simple
|
||||
if from0_count > if from0 == corner_field { 2 } else { 0 }
|
||||
&& from1_count > if from1 == corner_field { 2 } else { 0 }
|
||||
{
|
||||
jans.insert(Jan::TrueHitOpponentCorner, hit_moves);
|
||||
if from0_color == Some(&Color::White) && from1_color == Some(&Color::White) {
|
||||
if from0 == from1 {
|
||||
// doublet
|
||||
if from0_count > if from0 == corner_field { 3 } else { 1 } {
|
||||
jans.insert(Jan::TrueHitOpponentCorner, hit_moves);
|
||||
}
|
||||
} else {
|
||||
// simple
|
||||
if from0_count > if from0 == corner_field { 2 } else { 0 }
|
||||
&& from1_count > if from1 == corner_field { 2 } else { 0 }
|
||||
{
|
||||
jans.insert(Jan::TrueHitOpponentCorner, hit_moves);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -699,6 +701,16 @@ mod tests {
|
|||
rules.set_dice(Dice { values: (1, 1) });
|
||||
assert_eq!(0, rules.get_points(5).0);
|
||||
|
||||
// Battage du coin de repos adverse: check if we do it with our own checkers!
|
||||
rules.update_positions(
|
||||
&Color::White,
|
||||
[
|
||||
-4, 0, 0, -1, 0, 0, 0, 0, -1, 3, 2, 2, 0, -2, -2, 2, 1, 0, 4, -3, 1, 0, 0, 2,
|
||||
],
|
||||
);
|
||||
rules.set_dice(Dice { values: (3, 4) });
|
||||
assert_eq!(0, rules.get_points(5).0);
|
||||
|
||||
// Cas de battage du coin de repos adverse impossible
|
||||
// car son propre coin de repos n'est pas rempli
|
||||
rules.update_positions(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue