Pour exploiter la possibilité introduite à l’étape précédente, nous allons réaliser,
dans le module behaviors.rs, des implémentations de l’interface
CardBehavior.
Ces implémentations complètent le diagramme de classes simplifié comme suit :
La classe
Diamond doit implémenter l’interface
CardBehavior.
Elle mémorise un objet
Color qui lui est transmis à sa construction.
Sa définition de la fonction
draw() doit dessiner, au centre de la carte, un losange
ayant la couleur mémorisée.
Voici le code, bien évidemment à adapter à votre cas :
let pos = s5::Point {
x: Board::CARD_SIDE * (0.5 + /* column de la carte */ ),
y: Board::CARD_SIDE * (0.5 + /* row de la carte */ ),
};
let rect = s5::Rect {
w: Board::CARD_SIDE * 0.35,
h: Board::CARD_SIDE * 0.35,
};
screen.rectangle(&pos, &rect, None, 0.25 * std::f64::consts::PI, color);
Enfin, la définition de la fonction
kind() doit renvoyer la string obtenue comme suit :
Attention ! On parle bien de la couleur du diamant ! Adaptez le code à votre cas.
La classe
Heart doit aussi implémenter l’interface
CardBehavior.
Elle mémorise également un objet
Color qui lui est transmis à sa construction.
Sa définition de la fonction
draw() doit dessiner, au centre le carte, un disque ayant la couleur mémorisée.
Inspirez-vous de ce que vous venez de faire pour le type
Diamond, en sachant que
pour dessiner un cercle le type
Screen fournit une fonction
ellipse().
Si vous ne vous souvenez pas de comment invoquer cette fonction (vous l’avez vu en labo),
n’hésitez pas à regarder son prototype dans le module s5.
Enfin, la définition de la fonction
kind() de la classe
Heart doit renvoyer la string obtenue comme suit :
Attention ! On parle bien de la couleur du cœur ! Adaptez le code à votre cas.
Il ne reste plus qu’à faire usage de ces comportements.
Intervenez à nouveau dans le constructeur de
Board afin de prendre en compte les
commentaires qui vous indiquent quand un
Diamond ou un
Heart doit être construit
pour le transmettre à la carte sur le point d’être créée.
La couleur à transmettre est déjà déclarée dans le code, utilisez-la.
Cette dernière modification, résoudra l’erreur dans le constructeur de la classe
Board introduite à l’étape précédente.
En fabriquant et en relançant votre programme, vous devriez constater que,
lorsqu'on retourne une carte, elle peut montrer un cercle rouge ou un cercle bleu,
un losange vert ou un losange jaune.