fix(store): check color on opponent corner hit
This commit is contained in:
parent
0e6edc3710
commit
acfcd505d3
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 from0 = adv_corner_field - self.dice.values.0 as usize;
|
||||||
let from1 = adv_corner_field - self.dice.values.1 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 (from0_count, from0_color) = board_ini.get_field_checkers(from0).unwrap();
|
||||||
let (from1_count, _from1_color) = board_ini.get_field_checkers(from1).unwrap();
|
let (from1_count, from1_color) = board_ini.get_field_checkers(from1).unwrap();
|
||||||
let hit_moves = vec![(
|
let hit_moves = vec![(
|
||||||
CheckerMove::new(from0, adv_corner_field).unwrap(),
|
CheckerMove::new(from0, adv_corner_field).unwrap(),
|
||||||
CheckerMove::new(from1, adv_corner_field).unwrap(),
|
CheckerMove::new(from1, adv_corner_field).unwrap(),
|
||||||
)];
|
)];
|
||||||
|
|
||||||
if from0 == from1 {
|
if from0_color == Some(&Color::White) && from1_color == Some(&Color::White) {
|
||||||
// doublet
|
if from0 == from1 {
|
||||||
if from0_count > if from0 == corner_field { 3 } else { 1 } {
|
// doublet
|
||||||
jans.insert(Jan::TrueHitOpponentCorner, hit_moves);
|
if from0_count > if from0 == corner_field { 3 } else { 1 } {
|
||||||
}
|
jans.insert(Jan::TrueHitOpponentCorner, hit_moves);
|
||||||
} else {
|
}
|
||||||
// simple
|
} else {
|
||||||
if from0_count > if from0 == corner_field { 2 } else { 0 }
|
// simple
|
||||||
&& from1_count > if from1 == corner_field { 2 } else { 0 }
|
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);
|
{
|
||||||
|
jans.insert(Jan::TrueHitOpponentCorner, hit_moves);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -699,6 +701,16 @@ mod tests {
|
||||||
rules.set_dice(Dice { values: (1, 1) });
|
rules.set_dice(Dice { values: (1, 1) });
|
||||||
assert_eq!(0, rules.get_points(5).0);
|
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
|
// Cas de battage du coin de repos adverse impossible
|
||||||
// car son propre coin de repos n'est pas rempli
|
// car son propre coin de repos n'est pas rempli
|
||||||
rules.update_positions(
|
rules.update_positions(
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue