wip
This commit is contained in:
parent
bc1bf1066d
commit
8ec46d81e3
|
|
@ -446,9 +446,9 @@ impl Board {
|
|||
let fields = self.get_quarter_fields(field);
|
||||
!fields.iter().any(|field| {
|
||||
if color == Color::White {
|
||||
self.positions[field - 1] < 1
|
||||
self.positions[field - 1] < 2
|
||||
} else {
|
||||
self.positions[field - 1] > -1
|
||||
self.positions[field - 1] > -2
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -370,7 +370,7 @@ impl MoveRules {
|
|||
let mut board = self.board.clone();
|
||||
board.move_checker(color, moves.0).unwrap();
|
||||
board.move_checker(color, moves.1).unwrap();
|
||||
if board.any_quarter_filled(*color) {
|
||||
if board.any_quarter_filled(*color) && !moves_seqs.contains(&moves) {
|
||||
moves_seqs.push(moves);
|
||||
}
|
||||
}
|
||||
|
|
@ -866,11 +866,38 @@ mod tests {
|
|||
fn filling_moves_sequences() {
|
||||
let mut state = MoveRules::default();
|
||||
state.board.set_positions([
|
||||
3, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
3, 3, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
]);
|
||||
state.dice.values = (2, 1);
|
||||
let filling_moves_sequences = state.get_quarter_filling_moves_sequences();
|
||||
println!("{:?}", filling_moves_sequences);
|
||||
// println!("{:?}", filling_moves_sequences);
|
||||
assert_eq!(2, filling_moves_sequences.len());
|
||||
|
||||
state.board.set_positions([
|
||||
3, 2, 3, 2, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
]);
|
||||
state.dice.values = (2, 2);
|
||||
let filling_moves_sequences = state.get_quarter_filling_moves_sequences();
|
||||
// println!("{:?}", filling_moves_sequences);
|
||||
assert_eq!(2, filling_moves_sequences.len());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn scoring_filling_moves_sequences() {
|
||||
let mut state = MoveRules::default();
|
||||
|
||||
state.board.set_positions([
|
||||
3, 1, 2, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
]);
|
||||
state.dice.values = (2, 1);
|
||||
assert_eq!(1, state.get_scoring_quarter_filling_moves_sequences().len());
|
||||
|
||||
state.board.set_positions([
|
||||
2, 3, 3, 3, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
]);
|
||||
state.dice.values = (2, 1);
|
||||
let filling_moves_sequences = state.get_scoring_quarter_filling_moves_sequences();
|
||||
println!("{:?}", filling_moves_sequences);
|
||||
assert_eq!(3, filling_moves_sequences.len());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -117,7 +117,9 @@ impl PointsRules {
|
|||
|
||||
// « JAN DE REMPLISSAGE »
|
||||
// Faire un petit jan, un grand jan ou un jan de retour
|
||||
let filling_moves_sequences = self.move_rules.get_quarter_filling_moves_sequences();
|
||||
let filling_moves_sequences = self
|
||||
.move_rules
|
||||
.get_scoring_quarter_filling_moves_sequences();
|
||||
if !filling_moves_sequences.is_empty() {
|
||||
jans.insert(Jan::FilledQuarter, filling_moves_sequences);
|
||||
}
|
||||
|
|
@ -208,6 +210,7 @@ impl PointsRules {
|
|||
// Battre à vrai une dame située dans la table des petits jans
|
||||
// TODO : Battre le coin adverse
|
||||
let jans = self.get_jans(&self.board);
|
||||
println!("jans for points : {:?}", jans);
|
||||
points += jans.into_iter().fold(0, |acc: i8, (jan, moves)| {
|
||||
acc + jan.get_points(self.dice.is_double()) * (moves.len() as i8)
|
||||
});
|
||||
|
|
@ -339,17 +342,29 @@ mod tests {
|
|||
assert_eq!(12, rules.get_points());
|
||||
|
||||
// ---- Jan de remplissage
|
||||
let mut rules = PointsRules::default();
|
||||
rules.board.set_positions([
|
||||
2, 0, 1, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
3, 1, 2, 2, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
]);
|
||||
rules.dice = Dice { values: (2, 1) };
|
||||
assert_eq!(4, rules.get_points());
|
||||
|
||||
rules.board.set_positions([
|
||||
2, 3, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
]);
|
||||
rules.dice = Dice { values: (1, 1) };
|
||||
assert_eq!(6, rules.get_points());
|
||||
|
||||
rules.board.set_positions([
|
||||
3, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
3, 3, 1, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
]);
|
||||
rules.dice = Dice { values: (2, 1) };
|
||||
assert_eq!(8, rules.get_points());
|
||||
rules.dice = Dice { values: (1, 1) };
|
||||
assert_eq!(12, rules.get_points());
|
||||
|
||||
// conservation jan rempli
|
||||
rules.board.set_positions([
|
||||
3, 3, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
]);
|
||||
rules.dice = Dice { values: (1, 1) };
|
||||
assert_eq!(6, rules.get_points());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue