:: Enseignements :: Licence :: L2 :: 2008-2009 :: Programmation Avancée en C ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Nibbler |
Exploitation d'une file pour écrire un Nibbler (2 séances).
Dans ce TD, on souhaite réaliser un programme de poursuite
d'un ver s'allongeant au fur et à mesure qu'il consomme des proies. Au
lancement du programme un quadrillage régulier est affiché et les
proies, représentées sous forme de carrés pleins dans le damier, sont
disséminées aléatoirement dans l'espace de jeu. Le ver est représenté
par une tête (un disque noir) et une suite d'anneaux représentés par
des cercles. Au lancement du jeu, le ver est sans anneau. Pour jouer,
l'utilisateur va « piloter » le ver en pointant avec la souris dans
une case voisine de la tête (4-connexité). Le déplacement est simulé
en déplaçant la tête dans la case pointée et en effaçant le dernier
anneau de la queue. Lorsque la tête arrive sur une case contenant une
proie, celle-ci est consommée et un anneau supplémentaire est ajouté à
l'extrémité de la queue.
Graphismes
Pour la partie graphique, la librairie utilisée sera la
libMlv 1.1. Quelques informations sur
l'utilisation
et
l'installation
de cette librairie.
On pourra commencer par écrire une
fonction dessine_damier dessinant un damier de 20x20,
dont le côté des cases est 30 pixels; puis une fonction ajoutant
les proies (par exemple 40) sur le plateau.
Implémentation
- Les positions des différentes anneaux du ver seront notées à
l'aide d'une file, dont on notera la tête et la queue.
- Les différents états d'une case du damier seront notés
avec un type enum.
Cahier des charges
- Afin de prendre de bonnes habitudes l'ensemble des
fonctions programmées devront être commentées et testées.
- Les options appliquées lors de la compilation
seront -Wall et -ansi (par exemple, les
commentaires avec // ne fonctionnent pas).
- Il est très fortement déconseillé d'utiliser dans votre code
des variables globales. De plus il est conseillé de respecter une
convention de présentation du code unique (pour exemple, la
convention du langage C ou la convention du langage Java).
- De la même façon, les constantes seront toutes prédéfinie
avec #define.
- Il est hautement préférable de réaliser des modules
séparés (implantation dans un fichier source .c et en-têtes
avec structures et signatures de fonctions dans un fichier .h)
pour la gestion de la file, du serpent et de l'affichage. En
particulier coder la file séparément permettra de la
réutiliser sans modification majeure dans un nouveau
projet. Coder le projet dans un unique fichier .c est
totalement à proscrire.
- Le projet sera rendu dans une archive .tar.gz.
© Université de Marne-la-Vallée