Expand description
Cette bibliothèque fournit différents modules autour du jeu Ricochet Robots. Pour plus d’informations sur Ricochet Robots : https://fr.wikipedia.org/wiki/Ricochet_Robots.
Cette librairie est basée sur la notion de problème. Un Problème
est un plateau, de taille fixée par la constante TAILLE_PLATEAU = 16
, où sont fixés :
- un squelette, autrement dit l’ensemble des positions des barrières ;
- la position du robot qui devra atteindre la cible, généralement dénommé simplement robot ;
- la position des autres robots, généralement dénommés auxiliaires, au nombre de
NB_AUXILIAIRES = 3
; - la position de la cible.
Voici un exemple de définition d’un problème.
use ricochet_robots::{verifier, Case, Coup, Direction, Interstice, Probleme, Squelette, TypePion};
// Génère un squelette constitué de deux barrières
let squelette = Squelette::from(vec![
Interstice::entre(Case::new(0, 3), Case::new(0, 4)),
Interstice::entre(Case::new(3, 3), Case::new(4, 3)),
]);
let probleme = Probleme::construire(
&squelette,
// position du robot
Case::new(0, 0),
// position des auxiliaires
[Case::new(1, 0), Case::new(0, 1), Case::new(2, 2)],
// position de la cible
Case::new(2, 3),
)
.unwrap();
Un problème est un plateau figé, tel un problème d’échecs affiché dans un livre. Un Calculateur
représente un plateau mobile
et permet de faire se déplacer les robots selon des coups, ainqi que de vérifier à tout moment si la cible est atteinte.
La fonction verifier
permet de valider une solution, c’est-à-dire une suite de coups.
let solution = vec![
Coup::new(TypePion::Auxiliaire(1), Direction::Bas),
Coup::new(TypePion::Auxiliaire(1), Direction::Droite),
Coup::new(TypePion::Robot, Direction::Bas),
Coup::new(TypePion::Robot, Direction::Droite),
];
match verifier(&solution, &probleme) {
Some(n) => println!("Solution valide en {n} mouvements"),
None => println!("Solution invalide."),
}
Re-exports§
pub use calculateur::Calculateur;
pub use calculateur::CalculateurAvecMemoire;
pub use calculateur::Coup;
pub use calculateur::Direction;
pub use calculateur::ResultatCoup;
pub use calculateur::TypePion;
pub use probleme::Case;
pub use probleme::Interstice;
pub use probleme::Orientation;
pub use probleme::Probleme;
pub use probleme::Squelette;
pub use verification::verifier;
Modules§
- calculateur
- Permet de tester des coups à partir d’un problème.
- graphiques
- Interface graphique avec Macroquad.
Fournit une fonction
dessiner_probleme
qui permet d’afficher graphiquement un problème, et une fonctiondessiner_calculateur
qui permet d’afficher un problème, puis de jouer des coups (et de les annuler). - probleme
- Définition d’un problème de Ricochet Robots.
- verification
- Permet de vérifier une solution à un problème.