Déclarez le type
Entity dans le fichier
src/simu.rs, conformément au diagramme
de classes.
Cette structure possède notamment une composition avec les types
Color et
KineticState fournis par le module
s5.
Dans cette première étape, toutes les entités seront représentées par un carré.
Les laboratoires suivants permettront d'introduire d'autres formes.
Implémentez ensuite les méthodes suivantes :
- new() : construit une entité à partir d'un KineticState,
d'une Color et de la longueur du côté du carré.
Ces données étant stockées dans l'objet, le passage par valeur est le choix
le plus approprié.
Rust en transférera automatiquement la propriété sans copie inutile.
- draw() : dessine l'entité sur un objet Screen.
Pour implémenter
draw(), utilisez la méthode
rectangle() du type
Screen.
Consultez sa documentation afin d'identifier les paramètres attendus et préparez
les données nécessaires avant l'appel.
L'exemple fourni ci-dessous illustre son utilisation ; il devra être adapté à
votre implémentation.
let point = s5::Point {x: 1.0, y: 1.0};
let size = s5::Rect {w: 10.0, h: 20.0};
let inner_size = s5::Rect {w: 10.0 * 0.75, h: 20.0 * 0.75};
screen.rectangle(
&point,
&size,
Some(&inner_size),
std::f64::consts::PI / 6.0, // angle de rotation
s5::Color{r:255, g:0, b:0},
);
Enfin, réfléchissez à la visibilité des membres de
Entity : lesquels
doivent être accessibles depuis l'extérieur du module ?
Si votre environnement de développement est correctement configuré, les erreurs
de compilation devraient être signalées directement dans l'éditeur.
Dans le cas contraire, compilez régulièrement afin de les corriger au fur et
à mesure.
À ce stade, l'application n'affiche encore aucune entité.
Il faut maintenant modifier la structure
Window pour qu'elle puisse en contenir
plusieurs.