diff --git a/evenement.c b/evenement.c
index c57047d..1e0e6ab 100644
--- a/evenement.c
+++ b/evenement.c
@@ -80,7 +80,6 @@ void DeplacementSerpent(int direction ,PIXELS *serpent, int longueur)
     int tempX = serpent[0].x;
     int tempY = serpent[0].y;
     int i;
-    int compteur;
     couleur g;
     couleur j;
     ChoisirEcran(2);
@@ -88,7 +87,7 @@ void DeplacementSerpent(int direction ,PIXELS *serpent, int longueur)
     g=CouleurParNom("lightgreen");
 
 
-    for (i = 2; i < longueur; i += 2) {
+    for (i = 1; i < longueur; i++) {
         int tempX2 = serpent[i].x;
         int tempY2 = serpent[i].y;
 
@@ -98,15 +97,8 @@ void DeplacementSerpent(int direction ,PIXELS *serpent, int longueur)
         tempX = tempX2;
         tempY = tempY2;
     }
-    for(i=0;i< longueur; i++)
-    {
-        if(serpent[i].x != NULL && serpent[i].y != NULL)
-        {
-            compteur++;
-        }
-    }
     ChoisirCouleurDessin(g);
-    RemplirRectangle(serpent[compteur].x,serpent[compteur].y,T_PIXEL,T_PIXEL);
+    RemplirRectangle(serpent[longueur-1].x,serpent[longueur-1].y,T_PIXEL,T_PIXEL);
 
 
     ChoisirCouleurDessin(j);
diff --git a/evenement.o b/evenement.o
index 1b34584..8e1a245 100644
Binary files a/evenement.o and b/evenement.o differ
diff --git a/graph.h b/graph.h
index 8244e09..0a64fe3 100644
--- a/graph.h
+++ b/graph.h
@@ -18,7 +18,7 @@ int InitialiserGraphique();
 
 int CreerFenetre(int posx,int posy,int X,int Y);
 /* creer la fenetre graphique de largeur X et longueur Y, et la positionne
-   sur l'ecran au point (posx,posy). Une seule fenetre autoris�e */
+   sur l'ecran au point (posx,posy). Une seule fenetre autoris�e */
 
 void ChoisirTitreFenetre(char *s);
 /* change le titre de la fenetre */
@@ -34,7 +34,7 @@ void AfficherFenetre(void);
 
 void ChoisirEcran(int n);
 /* fixe l'ecran ou le dessin est effectue : cette ecran est soit 0 (la fenetre
-   visible, ecran par defaut au demarrage), soit le numero de l'�cran  virtuel correspondant */
+   visible, ecran par defaut au demarrage), soit le numero de l'�cran  virtuel correspondant */
 
 void ChoisirCouleurDessin(couleur c);
 /* fixe la couleur qui sert au dessin */
@@ -44,14 +44,14 @@ couleur CouleurParNom(char * nom);
    contient la liste des couleurs accessibles via leur nom */
 
 couleur CouleurParComposante(unsigned char r, unsigned char v,unsigned char b); 
-/* renvoie la couleur d�finie par ses trois composantes */
+/* renvoie la couleur d�finie par ses trois composantes */
 
 int Maxx();
-/* renvoie la largeur de l'ecran : il faut que le mode graphique ait �t� 
+/* renvoie la largeur de l'ecran : il faut que le mode graphique ait �t� 
    initialise !!! */
 
 int Maxy();
-/* renvoie la hauteur de l'ecran : il faut que le mode graphique ait �t� 
+/* renvoie la hauteur de l'ecran : il faut que le mode graphique ait �t� 
    initialise !!! */
 
 void DessinerPixel(int x,int y);
@@ -61,7 +61,7 @@ void DessinerSegment(int x,int y,int xx,int yy);
 /* idem precedent, mais avec la couleur de dessin */
 
 void DessinerSegments(Point * sommets,int nb_sommets);
-/* trace pour chaque paire sommet[i],sommet[i+1] le segment correspondant. Si le deux extr�mit�s correspondent, le polygone est ferm� */
+/* trace pour chaque paire sommet[i],sommet[i+1] le segment correspondant. Si le deux extr�mit�s correspondent, le polygone est ferm� */
 
 void DessinerRectangle(int x,int y,int l,int h);
 /* idem, mais utilise la couleur de dessin */
@@ -79,11 +79,11 @@ void RemplirTriangle(int x,int y,int xx,int yy,int xxx,int yyy);
 /* trace un triangle plein */
 
 void RemplirPolygone(Point * sommets,int nb_sommet);
-/* Trace un polygone plein d�fini par son tableau de sommets. Si les extremit�s ne coincident pas, le polygone est ferm� automatiquement.
+/* Trace un polygone plein d�fini par son tableau de sommets. Si les extremit�s ne coincident pas, le polygone est ferm� automatiquement.
 */
 
 int ToucheEnAttente();
-/* renvoie 1 si une touche a �t� enfonc�e, 0 sinon */
+/* renvoie 1 si une touche a �t� enfonc�e, 0 sinon */
 
 KeySym Touche();
 /* renvoie la premiere touche du tampon : cette fonction est bloquante => 
@@ -110,22 +110,22 @@ void ChoisirModeDessin(int m);
 /* fixe le mode d'affichage : 0<->ecrasement 1<->xor */
 
 int TailleChaineEcran(char *t,int taile);
-/* renvoie, en pixel, la taille horizontale occupee par la chaine � l'�cran :taille est la taille de la police (0,1,2) */
+/* renvoie, en pixel, la taille horizontale occupee par la chaine � l'�cran :taille est la taille de la police (0,1,2) */
 
 int TailleSupPolice(int taille);
-/* renvoie la taiile maximale de la police, en pixel, au dessus de la ligne d'�criture */
+/* renvoie la taiile maximale de la police, en pixel, au dessus de la ligne d'�criture */
 
 int TailleInfPolice(int taille);
-/* renvoie la taille maximale de la police, en pixel, en dessous de la ligne d'�criture */
+/* renvoie la taille maximale de la police, en pixel, en dessous de la ligne d'�criture */
 
 void CopierZone(int src,int dst,int ox,int oy,int L,int H,int dx,int dy);
-/* copie une zone de l'�cran vers l'�cran dst. La zone copi�e est le rectangle delimite par le coin superieure hauche (ox,oy) et sa largeur l et hauteur h. Cette zone est copi� au point (dx,dy) de l'ecran dst */ 
+/* copie une zone de l'�cran vers l'�cran dst. La zone copi�e est le rectangle delimite par le coin superieure hauche (ox,oy) et sa largeur l et hauteur h. Cette zone est copi� au point (dx,dy) de l'ecran dst */ 
 
 void FermerGraphique();
 /* fermeture du mode graphique */
 
 unsigned long Microsecondes();
-/* renvoie le nombre de microsecondes ecoul�es depuis le
+/* renvoie le nombre de microsecondes ecoul�es depuis le
 lancement du programme */
 
 void SourisPosition();
@@ -135,15 +135,15 @@ int SourisCliquee();
 /* indique un clic de souris (1 si oui, 0 sinon), et recupere si c'est le cas la position au moment du clic dans _X et _Y */
 
 
-/* fonctions a r��crire proprement */
+/* fonctions a r��crire proprement */
 
 int ChargerSprite(char *file);
-/* charge un srpite en m�moire, et renvoie son num�ro 
+/* charge un srpite en m�moire, et renvoie son num�ro 
  * -1 en cas d'echec */
 void AfficherSprite(int n,int x,int y);
-/* affiche le sprite correspondant � son num�ro */
+/* affiche le sprite correspondant � son num�ro */
 void LibererSprite(int n);
-/* libere les ressources associ�es au sprite
+/* libere les ressources associ�es au sprite
  * n */
 
 #endif
diff --git a/main.c b/main.c
index 9ec439e..871d46f 100644
--- a/main.c
+++ b/main.c
@@ -95,9 +95,9 @@ int main()
     int n = 0;
     int m = 0;
 
-    size_t longueur_serpent = 20;
+    size_t longueur_serpent = 10;
     size_t longueur_pastilles = 10;
-    int *serpent = (int *)malloc(longueur_serpent * sizeof(int));
+    PIXELS *serpent = (PIXELS *)malloc(longueur_serpent * sizeof(PIXELS));
     PIXELS *pastilles = (PIXELS *)malloc(longueur_pastilles * sizeof(PIXELS));
 
     int direction = 0;
@@ -186,7 +186,7 @@ int main()
                 if(MangerPastille(serpent,pastilles,&score) == 1)
                 {
                     longueur_serpent+=2;
-                    serpent = (int*) realloc(serpent,longueur_serpent * sizeof(int));
+                    serpent = (PIXELS*) realloc(serpent,longueur_serpent * sizeof(PIXELS));
                 }
 	            }
             }
diff --git a/main.o b/main.o
index 3e46947..3c504eb 100644
Binary files a/main.o and b/main.o differ
diff --git a/prog b/prog
index eeb5931..746595a 100755
Binary files a/prog and b/prog differ