Crate ricochet_robots

Source
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 fonction dessiner_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.

Constants§

NB_AUXILIAIRES
TAILLE_PLATEAU