Complétez le module
card (
card.rs) en définissant la structure
Card
conformément au diagramme de classes.
Veillez à respecter l'encapsulation.
Chaque carte connaît sa position sur le plateau à travers les attributs
row et
column, initialisés lors de la construction de l'objet.
Ces valeurs ne doivent plus être modifiées par la suite, mais doivent pouvoir
être consultées à l'aide des méthodes
row() et
column().
Ajoutez ensuite deux attributs booléens :
- hidden, indiquant si la carte a été retirée du plateau ;
- flipped, indiquant si la carte est retournée.
À la création d'une carte, ces deux attributs valent
false.
Implémentez le constructeur, les méthodes permettant de consulter ces attributs
ainsi que les opérations
hide(), qui affecte
true à
hidden, et
flip(), qui inverse la valeur de
flipped.
Ajoutez enfin une méthode
draw(), appelée par le plateau pour dessiner la carte.
Le code ci-dessous illustre le dessin du fond de la carte et devra être adapté
à votre implémentation.
let pos = s5::Point {
x: Board::CARD_SIDE * (0.5 + /* column de la carte */ as f64),
y: Board::CARD_SIDE * (0.5 + /* row de la carte */ as f64),
};
let rect = s5::Rect {
w: Board::CARD_SIDE * 0.85,
h: Board::CARD_SIDE * 0.85,
};
//let color = ???;
screen.rectangle(&pos, &rect, None, 0.0, color);
La couleur dépend de l'état de la carte :
- le dos est gris foncé (50, 50, 50) ;
- la face est presque blanche (200, 200, 200).
Une carte retirée du plateau ne doit plus être dessinée.
La méthode
is_like() sera implémentée à l'
étape 4.
Vous pouvez, pour l'instant, l'omettre ou lui faire simplement renvoyer
false.
Avant de passer à l'étape suivante, vérifiez que votre code compile sans erreur.