next up previous
Up: No Title Previous: Classes abstraites : évaluateur

Sous-sections

Application : monde de robots

Une des possibilits intéressantes des objets est de pouvoir définir une méthode virtuelle à une classe et ensuite, lorsque l'on définit une sous-classe, de donner une méthode propre à la sous-classe. Nous allons utiliser cette propriété pour une petite simulation. Sur un monde découpé en cases se déplacent des robots, il existe différents types de robots :

La zone des combats : le monde

Avant de définir les robots, il est nécessaire de définir l'endroit oé ils se déplacent : le monde. On va définir la classe virtuel monde qui devra répondre aux exigences suivantes et dont il faudra donner les signatures :

1.
Ajouter un robot sur le monde : add_robot.

2.
Fournir la liste des robots qui sont présentes sur le monde : get_roblist.

3.
Déterminer si une case est libre ou pas : is_free.

4.
Déterminer si une case est valide (si elle existe vraiment) is_legal et une fonction de normalisation des coordonnées normalize.

5.
Fournir la liste des cases libres autour d'une position : free_places.

Pour définir le monde, nous allons avoir besoin de savoir ce qu'est un robot, nous allons donc fournir la classe abstraite robot. Un robot doit (et il faudra donner les signatures) :

1.
Fournir sa position : get_x et get_y et sa vitesse : get_speed.

2.
Se positionner à une position donnée : moveto.

3.
Se déplacer vers une position donnée : rmoveto.

4.
Modifier sa vitesse set_speed.

5.
Indiquer la position de son prochain déplacement en fonction du monde sur lequel il est : next_position.

Nous allons implanter un monde fermé (un plan) qui sera une sous-classe de monde.

1.
Définir la classe monde_ferme avec ses champs internes (mais pas ses méthodes).

2.
Définir la méthode is_legal.

3.
Définir la méthode free_places.

4.
Définir la méthode normalize.

Les robots

Il reste donc à mettre en place les différents robots et leurs méthodes :

1.
Définir la classe robot_fixe (qui ne bouge jamais) et ses méthodes.

2.
Définir la classe robot_fou et ses méthodes.

3.
Définir la classe robot_poli et ses méthodes.

4.
Définir la classe robot_presse et ses méthodes.

5.
Définir la classe robot_amical et ses méthodes.
.

Et pour finir, mettre en place une fonction de simulation qui prend un monde et le nombre d'itérations et qui retourne le plan après avoir itéré, et rendre la simulation plus robuste.


next up previous
Up: No Title Previous: Classes abstraites : évaluateur
Emmanuel CHAILLOUX
1998-10-20