Skip to content
Snippets Groups Projects
Commit 99b609af authored by orestis.malaspin's avatar orestis.malaspin
Browse files

updated text and makefile

parent a75a60ac
Branches master
No related tags found
No related merge requests found
......@@ -28,7 +28,7 @@ deploy: all
cp serpent.html prog_seq_c_tp/serpent/index.html
cp serpent.pdf prog_seq_c_tp/serpent/serpent.pdf
tar czvf gfx.tar.gz gfx
mv czvf gfx.tar.gz prog_seq_c_tp/serpent/
mv gfx.tar.gz prog_seq_c_tp/serpent/
clean:
rm -rf *.html *.pdf prog_seq_c_tp
......@@ -59,9 +59,8 @@ Bien entendu vous devez utiliser `git` et `make` pour la gestion et la compilati
# Cahier des charges
Chaque segment du serpent est en fait un pixel: il est représenté par sa position (coordonnées `x`, `y` entières).
Le serpent doit être représenté par une structure de file d'attente contenant
la position des pixels qu'il occupe. Lorsque le serpent se déplace, il faut
Chaque segment du serpent est en fait un pixel: il est représenté par sa position (ses coordonnées `x`, `y` qui sont des entiers).
Le serpent est en fait une file d'attente contenant la position des pixels qu'il occupe. Lorsque le serpent se déplace, il faut
retirer l'élément du devant de la file, et insérer le nouvel élément à l'arrière de la file:
la tête du serpent est l'arrière de la file, et la queue du serpent est l'avant de la file.
......@@ -70,13 +69,14 @@ Il faut donc stocker cette information. La nourriture ne se déplace elle jamais
et est uniquement déterminée par sa position sur l'écran.
Afin de déterminer si le serpent meurt ou mange de la nourriture, il est recommandé
d'utiliser le tableau de pixels utilisé pour l'affichage à l'aide de la librairie SDL.
d'utiliser le tableau de pixels utilisé pour l'affichage.
Vous pouvez définir un type énuméré avec quatre variantes (`empty`, `snake`, `food`, et `wall` par exemple)
correspondant à des couleurs `COLOR_BLACK`, `COLOR_WHITE`, ...
correspondant à des couleurs `COLOR_BLACK`, `COLOR_WHITE`, ... Ainsi en récupérant la valeur
des pixels vous pouvez savoir quel type d'élément se trouve à une position donnée.
Pour que le jeu soit "jouable" il faut éviter de mettre à jour son état trop souvent.
Pour que le jeu soit "jouable", il faut éviter de mettre à jour son état trop souvent (le serpent bougerait trop vite).
Il est judicieux de n'afficher qu'un certain nombre de frames par seconde (ou en d'autres terme
fixer le temps qu'il faut pour afficher chaque frame, $t_f$).
fixer le temps qu'il faut entre l'affichage de chaque frame, $t_f$).
Pour ce faire, il faut mesurer le temps nécessaire à l'affichage d'une frame (une méthode
pour mesurer le temps passé dans une section du code vous a été proposée il y a quelques semaines),
puis faire attendre votre programme le temps nécessaire pour qu'on attende $t_f$
......@@ -92,16 +92,18 @@ donc bien réfléchir avant de commencer à implémenter quelque chose.
2. Faites un schéma, une liste, etc avec les différentes fonctions et structures de données que vous allez utiliser.
3. Écrivez les *headers* contenant les structures de données et les signatures des fonctions.
4. Écrivez un `Makefile` qui compile votre ébauche de projet (même s'il y a rien dans les fichier à part un main vide).
5. Allez vous pouvez vous y mettre!
# Remarques
Vous trouverez sur `Cyberlearn` des fichiers `gfx.h` et `gfx.c` qui ne sont pas exactement ceux des travaux pratiques précédents.
Vous trouverez sur `Cyberlearn` des fichiers `gfx.h` et `gfx.c` qui ne sont pas exactement ceux des travaux pratiques précédents
(il faut donc les re-télécharger).
Un certain nombre des fonctions suivantes pourraient vous être utiles (elles ne sont pas toutes dans `gfx.h/c`):
* `gfx_getpixel()`, retourne la "couleur" du pixel à une position `x`, `y` donnée en argument.
* `gfx_putpixel()`, donne une "couleur" donnée en argument au pixel se trouvant à une position `x`, `y` donnée.
* `gfx_keypressed()` retourne le code de la touche clavier pressé par la joueuse[^4].
* `gfx_keypressed()` retourne le code de la touche pressée par la joueuse[^4].
* `usleep()` (se trouvant dans `unistd.h`) met le programme en pause pendant un certain nombre de microsecondes passé en argument.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment