Commit fda0ca311def1c3dbdbe351a382b00d0086af973

Authored by Martin CHAUVELIERE
1 parent 0b5eb1df

1ere Version bis

Graphique/Makefile 0 → 100644
... ... @@ -0,0 +1,29 @@
  1 +#
  2 +# Makefile pour la bibliotheque graphique
  3 +#
  4 +
  5 +SOURCES = $(wildcard *.c)
  6 +OBJETS = $(SOURCES:.c=.o)
  7 +CIBLE = libgraph.a
  8 +
  9 +#
  10 +# Nom de la cible principale
  11 +#
  12 +
  13 +all: $(CIBLE)
  14 +
  15 +#
  16 +# Cible de nettoyage
  17 +#
  18 +
  19 +clean:
  20 + rm -f core *.o $(CIBLE)
  21 +
  22 +#
  23 +# Dependances pour la bibliotheque
  24 +#
  25 +
  26 +$(CIBLE): $(OBJETS)
  27 + $(AR) rs $@ $?
  28 +
  29 +$(CIBLE:.a=).o: $(CIBLE:.a=).c $(CIBLE:.a=).h
... ...
Graphique/libgraph.c 0 → 100644
... ... @@ -0,0 +1,239 @@
  1 +/**** Bibliotheque graphique ****/
  2 +
  3 +/** Fichiers d'inclusion **/
  4 +
  5 +#include <SDL/SDL.h>
  6 +#include <SDL/SDL_ttf.h>
  7 +#include "libgraph.h"
  8 +
  9 +/** Types **/
  10 +
  11 +typedef struct
  12 +{
  13 + int r, v, b;
  14 +} couleur;
  15 +
  16 +/** Constantes **/
  17 +
  18 +#define BITS_PAR_PIXEL 32
  19 +#define TAILLE_POLICE 20
  20 +
  21 +static const couleur couleurs[] = { { 255, 255, 255 }, { 0, 0, 0 }, { 255, 0, 0 },
  22 + { 0, 255, 0 }, { 0, 0, 255 }, { 255, 105, 180 },
  23 + { 150, 150, 150 }, { -1, -1, -1 } };
  24 +
  25 +static const char policeDefaut[]="/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf";
  26 +
  27 +/** Variables globales **/
  28 +
  29 +static SDL_Surface *surface;
  30 +TTF_Font* police;
  31 +
  32 +/** Fonctions **/
  33 +
  34 +void choisirPolice(const char *chemin, int taille){
  35 + police=TTF_OpenFont(chemin, taille);
  36 +}
  37 +
  38 +void initialiserTexte() {
  39 + TTF_Init();
  40 + choisirPolice(policeDefaut, TAILLE_POLICE);
  41 +}
  42 +
  43 +/* Initialisation de la surface dessinable */
  44 +unsigned char creerSurface (int largeur, int hauteur, char *titre)
  45 +{
  46 + SDL_Init (SDL_INIT_VIDEO);
  47 + SDL_WM_SetCaption (titre, titre);
  48 + surface = SDL_SetVideoMode (largeur, hauteur, BITS_PAR_PIXEL, SDL_DOUBLEBUF);
  49 + initialiserTexte();
  50 +
  51 + return (surface != NULL && police != NULL);
  52 +}
  53 +
  54 +/* Fermeture de la surface dessinable */
  55 +
  56 +void fermerSurface (void)
  57 +{
  58 + if (surface != NULL) SDL_FreeSurface (surface);
  59 + if (police != NULL) TTF_CloseFont(police);
  60 + TTF_Quit();
  61 + SDL_Quit ();
  62 +}
  63 +
  64 +/* Creation d'une couleur */
  65 +
  66 +static int creerCouleur (int ncouleur)
  67 +{
  68 + couleur c = couleurs[ncouleur];
  69 + return SDL_MapRGB (surface->format, c.r, c.v, c.b);
  70 +}
  71 +
  72 +/* Dessin d'un rectangle plein */
  73 +
  74 +void rectanglePlein (int x, int y, int l, int h, int c)
  75 +{
  76 + SDL_Rect rectangle = { x, y, l, h };
  77 + SDL_FillRect (surface, &rectangle, creerCouleur (c));
  78 + // SDL_Flip(surface);
  79 +}
  80 +
  81 +/* Manipulation de lutins */
  82 +
  83 +static SDL_Surface *lutins[MAX_LUTINS];
  84 +static int lutins_nb = 0;
  85 +
  86 +int lutinTexte(char* texte, int couleurTexte) {
  87 + couleur c=couleurs[couleurTexte];
  88 + SDL_Color couleur={c.r, c.v, c.b};
  89 + SDL_Surface* lutin=TTF_RenderText_Solid(police, texte, couleur);
  90 + if (lutin != NULL)
  91 + {
  92 + lutins[lutins_nb++] = lutin;
  93 + return lutins_nb - 1;
  94 + }
  95 + return -1;
  96 +}
  97 +
  98 +static void configurerLutin (SDL_Surface *lutin, int ncouleur)
  99 +{
  100 + couleur c = couleurs[ncouleur];
  101 + int fond = SDL_MapRGB (lutin->format, c.r, c.v, c.b);
  102 + SDL_SetColorKey (lutin, SDL_SRCCOLORKEY | SDL_RLEACCEL, fond);
  103 +}
  104 +
  105 +int chargerLutin (char *fichier, int couleur)
  106 +{
  107 + if (lutins_nb >= MAX_LUTINS) return -2;
  108 + SDL_Surface *lutin = SDL_LoadBMP (fichier);
  109 + if (lutin != NULL)
  110 + {
  111 + lutins[lutins_nb++] = lutin;
  112 + if (couleur >= 0) configurerLutin (lutin, couleur);
  113 + return lutins_nb - 1;
  114 + }
  115 + return -1;
  116 +}
  117 +
  118 +void afficherLutin (int lutin, int x, int y)
  119 +{
  120 + SDL_Rect position;
  121 + position.x = x;
  122 + position.y = y;
  123 + SDL_BlitSurface (lutins[lutin], NULL, surface, &position);
  124 +}
  125 +
  126 +int creerLutin (int x, int y, int largeur, int hauteur, int couleur)
  127 +{
  128 + if (lutins_nb >= MAX_LUTINS) return -2;
  129 + int rmask, gmask, bmask, amask;
  130 +#if SDL_BYTEORDER == SDL_BIG_ENDIAN
  131 + rmask = 0xff000000;
  132 + gmask = 0x00ff0000;
  133 + bmask = 0x0000ff00;
  134 + amask = 0x000000ff;
  135 +#else
  136 + rmask = 0x000000ff;
  137 + gmask = 0x0000ff00;
  138 + bmask = 0x00ff0000;
  139 + amask = 0xff000000;
  140 +#endif
  141 + if (couleur < 0) amask = 0x00000000;
  142 + SDL_Surface *lutin =
  143 + SDL_CreateRGBSurface (0, largeur, hauteur, BITS_PAR_PIXEL, rmask, gmask, bmask, amask);
  144 + SDL_Rect fenetre;
  145 + fenetre.x = x;
  146 + fenetre.y = y;
  147 + fenetre.h = hauteur;
  148 + fenetre.w = largeur;
  149 + SDL_BlitSurface (surface, &fenetre, lutin, NULL);
  150 + lutins[lutins_nb++] = lutin;
  151 + if (couleur >= 0) configurerLutin (lutin, couleur);
  152 + return lutins_nb - 1;
  153 +}
  154 +
  155 +void tailleLutin (int lutin, int *largeur, int *hauteur)
  156 +{
  157 + *largeur = lutins[lutin]->w;
  158 + *hauteur = lutins[lutin]->h;
  159 +}
  160 +
  161 +int sauverLutin (int lutin, char *nom) { return SDL_SaveBMP (lutins[lutin], nom); }
  162 +
  163 +/* Manipulation de copie de surface en BMP */
  164 +
  165 +int sauverSurface (char *fichier) { return SDL_SaveBMP (surface, fichier); }
  166 +
  167 +unsigned char chargerSurface (char *fichier)
  168 +{
  169 + SDL_Surface *image = SDL_LoadBMP (fichier);
  170 + if (image != NULL)
  171 + {
  172 + SDL_BlitSurface (image, NULL, surface, NULL);
  173 + SDL_Flip (surface);
  174 + }
  175 + return (image != NULL);
  176 +}
  177 +
  178 +void majSurface (void) { SDL_Flip (surface); }
  179 +
  180 +/* Trouver la couleur d'un pixel */
  181 +
  182 +int couleurPixel (int x, int y)
  183 +{
  184 + int bpp = surface->format->BytesPerPixel;
  185 + Uint32 *p = (Uint32 *)(surface->pixels + y * surface->pitch + x * bpp);
  186 + Uint8 r, v, b;
  187 + SDL_GetRGB (*p, surface->format, &r, &v, &b);
  188 + int i = 0;
  189 + while (1)
  190 + {
  191 + if (couleurs[i].r < 0) break;
  192 + if (r == couleurs[i].r && v == couleurs[i].v && b == couleurs[i].b) break;
  193 + i++;
  194 + }
  195 + if (couleurs[i].r < 0)
  196 + return -1;
  197 + else
  198 + return i;
  199 +}
  200 +
  201 +/* Fonction de traitement des événements */
  202 +
  203 +void lireEvenement (evenement *evt, char *touche, void **detail)
  204 +{
  205 + static SDL_keysym _detail;
  206 + SDL_Event event;
  207 + while (SDL_PollEvent (&event))
  208 + {
  209 + if (event.type == SDL_QUIT) *evt = quitter;
  210 + if (event.type == SDL_KEYDOWN || event.type == SDL_KEYUP)
  211 + {
  212 + *evt = (event.type == SDL_KEYDOWN) ? toucheBas : toucheHaut;
  213 + char *nom = SDL_GetKeyName (event.key.keysym.sym);
  214 + if (strlen (nom) == 1 && nom[0] >= 32 && nom[0] < 128)
  215 + *touche = nom[0];
  216 + else
  217 + *touche = 0;
  218 + if (detail != NULL)
  219 + {
  220 + _detail = event.key.keysym;
  221 + *detail = &_detail;
  222 + }
  223 + break;
  224 + }
  225 + }
  226 +}
  227 +
  228 +void attendreEvenement (void)
  229 +{
  230 + SDL_Event event;
  231 + while (SDL_WaitEvent (&event)) switch (event.type)
  232 + {
  233 + case SDL_QUIT:
  234 + exit (0);
  235 + case SDL_KEYDOWN:
  236 + case SDL_MOUSEBUTTONDOWN:
  237 + return;
  238 + }
  239 +}
... ...
Graphique/libgraph.h 0 → 100644
... ... @@ -0,0 +1,156 @@
  1 +/**** Bibliotheque graphique (definitions) ****/
  2 +
  3 +/** Constantes **/
  4 +
  5 +#define COULEUR_BLANC 0
  6 +#define COULEUR_NOIR 1
  7 +#define COULEUR_ROUGE 2
  8 +#define COULEUR_VERT 3
  9 +#define COULEUR_BLEU 4
  10 +#define COULEUR_ROSE 5
  11 +#define COULEUR_GRIS 6
  12 +
  13 +#define MAX_LUTINS 16
  14 +
  15 +typedef enum {toucheBas, toucheHaut, quitter} evenement;
  16 +
  17 +/** Prototypes **/
  18 +
  19 +/**
  20 + * @brief cree une fenetre 2D
  21 + *
  22 + * @param largeur en pixels de la fenetre
  23 + * @param hauteur en pixels de la fenetre
  24 + * @param titre de la fenetre (chaine de caractere)
  25 + */
  26 +unsigned char creerSurface (int largeur, int hauteur, char *titre);
  27 +
  28 +/**
  29 + * @brief permet de charger un fichier image au format bmp (bitmap)
  30 + *
  31 + * @param fichier nom du fichier
  32 + */
  33 +unsigned char chargerSurface (char *fichier);
  34 +
  35 +
  36 +/**
  37 + * @brief permet de sauvegarder une surface en image (format bmp)
  38 + *
  39 + * @param fichier nom du fichier
  40 + * @return 0 si OK, valeur negative sinon
  41 + */
  42 +int sauverSurface (char *fichier);
  43 +
  44 +/**
  45 + * @brief met a jour la surface d'affichage
  46 + */
  47 +void majSurface (void);
  48 +
  49 +
  50 +/**
  51 + * @brief libere la surface d'affichage
  52 + * a faire lors de la fermeture
  53 + * du programme
  54 + */
  55 +void fermerSurface (void);
  56 +
  57 +/**
  58 + * @brief choisit la police de caractères à utiliser pour afficher du texte
  59 + * @param chemin nom du fichier de police (format .ttf, voir /usr/share/fonts/truetype)
  60 + * @param taille taille de la police
  61 + */
  62 +void choisirPolice(const char *chemin, int taille);
  63 +
  64 +/**
  65 + * @brief dessine un rectange de taille (l,h) aux coordonnêes
  66 + * (x,y) et de couleur c
  67 + *
  68 + * @param x 0 <= x <= l_surface
  69 + * @param y 0 <= y <= h_surface
  70 + * @param l largeur en pixels
  71 + * @param h longueur en pixels
  72 + * @param c indice de couleur voir variable couleurs dans le fichier .c
  73 + */
  74 +void rectanglePlein (int x, int y, int l, int h, int c);
  75 +
  76 +
  77 +/**
  78 + * @brief permet de determiner l'indice du tableau de couleur du
  79 + * pixel aux coordonnees (x,y)
  80 + *
  81 + * @param x 0 <= x <= l_surface
  82 + * @param y 0 <= y <= h_surface
  83 + * @return indice de couleur voire variable couleurs dans le fichier .c
  84 + */
  85 +int couleurPixel (int x, int y);
  86 +
  87 +/**
  88 + * @brief crée un lutin à partir d'un texte
  89 + *
  90 + * @param texte le texte
  91 + * @param couleur indice de couleur du texte
  92 + * @return numero de lutin dans le tableau dynamique de lutin (< MAX_LUTINS)
  93 + */
  94 +int lutinTexte(char *texte, int couleur);
  95 +
  96 +/**
  97 + * @brief charge un lutin à partir du fichier
  98 + *
  99 + * @param fichier image bitmap du lutin à charger
  100 + * @param couleur indice de couleurs à charger
  101 + * @return numero de lutin dans le tableau dynamique de lutin (< MAX_LUTINS)
  102 + */
  103 +int chargerLutin (char *fichier, int couleur);
  104 +
  105 +/**
  106 + * @brief afficher un lutin aux coordonnées (x,y)
  107 + *
  108 + * @param lutin numero du lutin à afficher (< MAX_LUTINS)
  109 + * @param x abscisse de départ
  110 + * @param y ordonnée de départ
  111 + */
  112 +void afficherLutin (int lutin, int x, int y);
  113 +
  114 +/**
  115 + * @brief creer un lutin de taille (l,h) aux coordonnées (x,y)
  116 + *
  117 + * @param x abscisse de départ
  118 + * @param y ordonnée de départ
  119 + * @param largeur largeur du lutin
  120 + * @param hauteur hauteur du lutin
  121 + * @param couleur indice de couleur à partir du tableau _couleurs_
  122 + * @return indice du lutin dans le tableau global (< MAX_LUTINS)
  123 + */
  124 +int creerLutin (int x, int y, int largeur, int hauteur, int couleur);
  125 +
  126 +/**
  127 + * @brief sauvegarde un lutin dans un fichier
  128 + *
  129 + * @param lutin numero de lutin à sauvegarder (< MAX_LUTINS)
  130 + * @param nom fichier pour la sauvegarde
  131 + * @return 0 si OK valeur négative sinon
  132 + */
  133 +int sauverLutin (int lutin, char *nom);
  134 +
  135 +/**
  136 + * @brief calcule la taille (largeur,hauteur) d'un lutin
  137 + *
  138 + * @param lutin index du lutin (< MAX_LUTINS)
  139 + * @param largeur pointeur sur la largeur
  140 + * @param hauteur pointeur sur la hauteur
  141 + */
  142 +void tailleLutin (int lutin, int *largeur, int *hauteur);
  143 +
  144 +/**
  145 + * @brief lire une touche au clavier
  146 + *
  147 + * @param evt pointeur sur evenement
  148 + * @param touche pointeur sur la touche pressée
  149 + * @param detail NULL ou keysim
  150 + */
  151 +void lireEvenement (evenement *evt, char *touche, void **detail);
  152 +
  153 +/**
  154 + * @brief attente d'un evenement bouton, souris, fin de programme
  155 + */
  156 +void attendreEvenement (void);
... ...
ListeC/Liste.c deleted
... ... @@ -1,41 +0,0 @@
1   -#include <stdio.h>
2   -#include <stdlib.h>
3   -#include "Liste.h"
4   -
5   -void creer_liste(struct liste_entite *l)
6   -{
7   - l = malloc(sizeof(struct liste_entite));
8   -}
9   -
10   -struct entite creer_entite(int x, int y, int idd)
11   -{
12   - struct entite e;
13   - e.posx=x;
14   - e.posy=y;
15   - e.id=idd;
16   - return e;
17   -}
18   -
19   -void ajout_tete(struct liste_entite **pL, struct entite x)
20   -{
21   - struct liste_entite *tmp;
22   - tmp = malloc(sizeof(struct liste_entite));
23   - tmp->enti = x;
24   - tmp->suivant = *pL;
25   - *pL = tmp;
26   -}
27   -
28   -
29   -void imprimer_liste(struct liste_entite *l)
30   -{
31   - struct liste_entite *p;
32   - p = l;
33   - while (p != NULL)
34   - {
35   - printf("%d -> ",p->enti.posx);
36   - p=p->suivant;
37   - }
38   - printf("\n");
39   -}
40   -
41   -
ListeC/Liste.h deleted
... ... @@ -1,25 +0,0 @@
1   -#include <stdio.h>
2   -#include <stdlib.h>
3   -
4   -struct entite
5   -{
6   - int posx;
7   - int posy;
8   - int id;
9   -};
10   -
11   -
12   -struct liste_entite
13   -{
14   - struct entite enti;
15   - struct liste_entite *suivant;
16   -};
17   -
18   -
19   -void ajout_tete(struct liste_entite**, struct entite);
20   -
21   -void creer_liste(struct liste_entite*);
22   -
23   -struct entite creer_entite(int,int,int);
24   -
25   -void imprimer_liste(struct liste_entite*);
Main/Makefile deleted
... ... @@ -1,27 +0,0 @@
1   -CC=clang
2   -TARGET=exec
3   -CFLAGS=-g -W -Wall -Wextra
4   -LDFLAGS=-I Graphique -l graph -L ../Graphique -l SDL -l SDL_ttf
5   -
6   -default: $(TARGET)
7   -
8   -Liste.o : ../ListeC/Liste.c ../ListeC/Liste.h
9   - clang $(CFLAGS) -c ../ListeC/Liste.c
10   -
11   -Monstre.o : ../Monstre/Monstre.c ../Monstre/Monstre.h ../ListeC/Liste.h
12   - clang $(CFLAGS) -c ../Monstre/Monstre.c
13   -
14   -Missile.o : ../Missile/Missile.c ../Missile/Missile.h ../ListeC/Liste.h
15   - clang $(CFLAGS) -c ../Missile/Missile.c
16   -
17   -main.o : main.c ../ListeC/Liste.h
18   - clang $(CFLAGS) -c main.c
19   -
20   -
21   -$(TARGET): Liste.o main.o Monstre.o Missile.o
22   - clang main.o Liste.o Monstre.o Missile.o -o $(TARGET) $(LDFLAGS)
23   -
24   -.PHONY: clean
25   -clean:
26   - rm -f *.o
27   - rm -f $(TARGET)
Main/main.c deleted
... ... @@ -1,63 +0,0 @@
1   -#include <stdio.h>
2   -#include <unistd.h>
3   -#include <SDL/SDL.h>
4   -#include "../Graphique/libgraph.h"
5   -#include "../ListeC/Liste.h"
6   -#include "../Monstre/Monstre.h"
7   -#include "../Missile/Missile.h"
8   -
9   -#define TailleX 500
10   -#define TailleY 500
11   -//clang Try.c -I Graphique -l graph -L Graphique -l SDL -l SDL_ttf
12   -
13   -
14   -char touche()
15   -{
16   - char touche;
17   - evenement even;
18   - lireEvenement (&even,&touche,NULL);
19   - return touche;
20   -}
21   -
22   -int main()
23   -{
24   - struct liste_entite *enemies = NULL;
25   - creer_liste(enemies);
26   - ajout_tete(&enemies,creer_entite(50,50,0));
27   - ajout_tete(&enemies,creer_entite(150,50,0));
28   - ajout_tete(&enemies,creer_entite(250,50,0));
29   - imprimer_liste(enemies);
30   - int sens=1;
31   - int *psens=&sens;
32   -
33   - struct entite joueur;
34   - joueur.posx=225;
35   - joueur.posy=470;
36   - int canon = chargerLutin("../../Lutins/invader_canon.bmp",COULEUR_NOIR);
37   -
38   - struct liste_entite *tires = NULL;
39   - creer_liste(tires);
40   - //ajout_tete(&tires,creer_entite(225,470,0));
41   - Tirer(joueur,&tires);
42   - imprimer_liste(tires);
43   - int missile = chargerLutin("../../Lutins/invader_missile.bmp",COULEUR_NOIR);
44   -
45   - char Nom[20]="PremiereFenetre";
46   - creerSurface(TailleX,TailleY,Nom);
47   - int lulu = chargerLutin("../../Lutins/invader_monstre1_1.bmp",COULEUR_NOIR);
48   -
49   - while(1)
50   - {
51   - afficherLutin(canon,joueur.posx,joueur.posy);
52   - DeplacementLutin(lulu,enemies,psens,1);
53   -
54   - char c = touche();
55   - printf("%c",c);
56   - DeplacementTire(missile,tires);
57   -
58   - majSurface();
59   - rectanglePlein(0,0,TailleX,TailleY,COULEUR_NOIR);
60   - SDL_Delay(20);
61   - }
62   - return 0;
63   -}
Missile/Missile.c deleted
... ... @@ -1,23 +0,0 @@
1   -#include <stdio.h>
2   -#include <stdlib.h>
3   -#include "../Graphique/libgraph.h"
4   -#include "../ListeC/Liste.h"
5   -#include "Missile.h"
6   -
7   -
8   -void Tirer(struct entite joueur, struct liste_entite **pl)
9   -{
10   - ajout_tete(pl,creer_entite(joueur.posx+18,joueur.posy-5,0));
11   -}
12   -
13   -
14   -void DeplacementTire(int tire,struct liste_entite *l)
15   -{
16   - struct liste_entite *ml=l;
17   - while(ml != NULL)
18   - {
19   - ml->enti.posy-=5;
20   - afficherLutin(tire,ml->enti.posx,ml->enti.posy);
21   - ml=ml->suivant;
22   - }
23   -}
Missile/Missile.h deleted
... ... @@ -1,6 +0,0 @@
1   -#include <stdio.h>
2   -#include <stdlib.h>
3   -
4   -void Tirer(struct entite, struct liste_entite**);
5   -
6   -void DeplacementTire(int,struct liste_entite*);
Monstre/Monstre.c deleted
... ... @@ -1,49 +0,0 @@
1   -#include <stdio.h>
2   -#include <stdlib.h>
3   -#include "../Graphique/libgraph.h"
4   -#include "../ListeC/Liste.h"
5   -#include "Monstre.h"
6   -
7   -//sens 1 = Va vers la droite
8   -void DeplacementLutin(int lutin,struct liste_entite *l, int *psens, int speed)
9   -{
10   - int ind=0;
11   - struct liste_entite *ml=l;
12   - while(ml != NULL)
13   - {
14   - if (*psens==1)
15   - {
16   - ml->enti.posx+=speed;
17   - if(ml->enti.posx>=450)ind=1;
18   - afficherLutin(lutin,ml->enti.posx,ml->enti.posy);
19   - }
20   - else
21   - {
22   - ml->enti.posx-=speed;
23   - if(ml->enti.posx<=50)ind=2;
24   - afficherLutin(lutin,ml->enti.posx,ml->enti.posy);
25   - }
26   - ml=ml->suivant;
27   - }
28   - if (ind==1)
29   - {
30   - *psens=0;
31   - struct liste_entite *ml2=l;
32   - while(ml2 != NULL)
33   - {
34   - ml2->enti.posy+=30;
35   - ml2=ml2->suivant;
36   - }
37   - }
38   - else if (ind==2)
39   - {
40   - *psens=1;
41   - struct liste_entite *ml2=l;
42   - while(ml2 != NULL)
43   - {
44   - ml2->enti.posy+=30;
45   - ml2=ml2->suivant;
46   - }
47   - }
48   -}
49   -
Monstre/Monstre.h deleted
... ... @@ -1,4 +0,0 @@
1   -#include <stdio.h>
2   -#include <stdlib.h>
3   -
4   -void DeplacementLutin(int,struct liste_entite*,int*,int);