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