diff --git a/Makefile b/Makefile
index b92bf4089632c5668797e7450ea6e05ef0d5f01e..d3ccfc32c51a78655d39a075b0a8c57ea9a75f6e 100644
--- a/Makefile
+++ b/Makefile
@@ -5,8 +5,8 @@ LDFLAGS = `sdl2-config --cflags --libs` -lSDL2_ttf
 INCLUDES =  -I./SDL2_ttf
 EXEC1 = main
 EXEC2 = tests
-SRC = logique.c gestion_fichiers.c graphisme.c fonctions_SDL.c main.c
-SRC2 = logique.c gestion_fichiers.c graphisme.c fonctions_SDL.c tests.c
+SRC = logique.c gestion_fichiers.c graphisme.c main.c
+SRC2 = logique.c gestion_fichiers.c graphisme.c tests.c
 OBJ = $(SRC:.c=.o)
 OBJ2 = $(SRC2:.c=.o)
 
diff --git a/Ressources/compt0.bmp b/Ressources/compt0.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..bc6ed62a2e140a3b4287f70bd7cdc5da72c063d8
Binary files /dev/null and b/Ressources/compt0.bmp differ
diff --git a/Ressources/envoi0.bmp b/Ressources/envoi0.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..c7029ece1215e2b117df1659ae2c91c3f8d4da8a
Binary files /dev/null and b/Ressources/envoi0.bmp differ
diff --git a/Ressources/fond1.bmp b/Ressources/fond1.bmp
index f18c31d2e5a101cf3484f2430eaa14d1b837a297..9c4f5084e6f87f9192c905025eaa8d2f2b3c4d0d 100644
Binary files a/Ressources/fond1.bmp and b/Ressources/fond1.bmp differ
diff --git a/Ressources/four0.bmp b/Ressources/four0.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..c6785750391ab6cf2d0563637b3a8de78eaade3f
Binary files /dev/null and b/Ressources/four0.bmp differ
diff --git a/Ressources/frigo0.bmp b/Ressources/frigo0.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..f86e91fd9b8035fcafbec57d7694253525fae678
Binary files /dev/null and b/Ressources/frigo0.bmp differ
diff --git a/Ressources/kitchen.kra b/Ressources/kitchen.kra
index 5e83c504082efc60a9de0125e855b5f4d9d0c5ed..66977e22fb33a2bddfda8b73ab62b86667d2256d 100644
Binary files a/Ressources/kitchen.kra and b/Ressources/kitchen.kra differ
diff --git a/Ressources/lavabo0.bmp b/Ressources/lavabo0.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..d0777a2e9b2d138a7b529fa413a9eadc22bf749f
Binary files /dev/null and b/Ressources/lavabo0.bmp differ
diff --git a/Ressources/trash0.bmp b/Ressources/trash0.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..106f096cd248c9b4efc6fb6ac744adca3bf012bc
Binary files /dev/null and b/Ressources/trash0.bmp differ
diff --git a/fonctions_SDL.c b/fonctions_SDL.c
deleted file mode 100644
index 9546e5ffcbf1562275eff6dcf29a7edf615ab46f..0000000000000000000000000000000000000000
--- a/fonctions_SDL.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/**
- * \file fonctions_SDL.c
- * \brief Fichier de gestion de l'affichage, du texte
- * \author Guillaume Vautrin
- * \version 1.0
- */
-
-#include "fonctions_SDL.h"
-
-
-SDL_Texture* charger_image (const char* nomfichier, SDL_Renderer* renderer){
-    //Charge une image et retourne la surface de texture associée
-    SDL_Surface * image = SDL_LoadBMP(nomfichier);
-    SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, image);
-    SDL_FreeSurface(image);
-    return texture;
-}
-
-SDL_Texture* charger_image_transparente(const char* nomfichier, SDL_Renderer* renderer, Uint8 r, Uint8 g, Uint8 b){
-    SDL_Surface * image = SDL_LoadBMP(nomfichier);
-    SDL_SetColorKey(image, SDL_TRUE, SDL_MapRGB(image->format, r, g, b));
-    SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, image);
-    SDL_FreeSurface(image);
-    return texture;
-}
-//int SDL_SetColorKey(SDL_Surface* surface, int flag, Uint32 key) ; // défini la couleur transparente dans une surface
-
-//Uint32 SDL_MapRGB(const SDL_PixelFormat* format, Uint8 r, Uint8 g, Uint8 b); //map les couleurs d'une bitmap
-
-SDL_Texture* charger_texte (const char* message, SDL_Renderer* renderer, TTF_Font *font, SDL_Color color){
-    SDL_Surface* texte = TTF_RenderText_Blended(font, message, color);
-    SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, texte);
-    SDL_FreeSurface(texte);
-    return texture;
-}
-
-void render_texte(SDL_Renderer *renderer, int x, int y, int w, int h, SDL_Texture* texte){
-    SDL_Rect rect = {x, y, w, h};
-    SDL_RenderCopy(renderer, texte, NULL, &rect);
-}
-
-/*
-TTF_Font *TTF_OpenFont(const char *file, int size) ; //charge la police et applique la taille du texte
-// Écrire le texte sur une surface SDL
-SDL_Surface *TTF_RenderText_Solid(TTF_Font *font, const char *text, SDL_Color fg) ;
-// Fermer la police
-void TTF_CloseFont(TTF_Font *font) ;
-*/
\ No newline at end of file
diff --git a/fonctions_SDL.h b/fonctions_SDL.h
deleted file mode 100644
index ce9a477f94a5fdff1944e8ce0c39f97345213ab0..0000000000000000000000000000000000000000
--- a/fonctions_SDL.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * \file fonctions_SDL.h
- * \brief header des fonctions SDL
- * \author Guillaume Vautrin
- * \version 1.0
- */
-
-
-#ifndef FONCTIONS_SDL_H
-#define FONCTIONS_SDL_H
-
-#include <SDL2/SDL.h>
-#include <SDL2/SDL_ttf.h>
-
-SDL_Texture* charger_image (const char* nomfichier, SDL_Renderer* renderer);
-
-SDL_Texture* charger_image_transparente(const char* nomfichier, SDL_Renderer* renderer, Uint8 r, Uint8 g, Uint8 b) ;
-
-SDL_Texture* charger_texte (const char* message, SDL_Renderer* renderer, TTF_Font *font, SDL_Color color);
-
-void render_texte(SDL_Renderer *renderer, int x, int y, int w, int h, SDL_Texture* texte);
-
-#endif
\ No newline at end of file
diff --git a/gestion_fichiers.c b/gestion_fichiers.c
index 2e43a2c84b553e95fd0aa33720c9c1777bb1c3eb..f5e5761406c2d5bbc09112c4d4c133753f85e5e6 100644
--- a/gestion_fichiers.c
+++ b/gestion_fichiers.c
@@ -9,6 +9,7 @@
 
 
 char** allouer_tab_2D (int lig, int col){
+    //Allocation d'un tableau de caractère à 2 dimensions
     char ** tab = malloc(lig * sizeof(char *)); 
     for(int i=0; i<lig; i++){
         tab[i] = malloc(col * sizeof(char));
@@ -18,6 +19,7 @@ char** allouer_tab_2D (int lig, int col){
 }
 
 void desallouer_tab_2D (char** tab, int lig){
+    //désallocation d'un tab de car 2D
     for (int i=0; i<lig; i++){
         free(tab[i]);
     }
@@ -25,6 +27,7 @@ void desallouer_tab_2D (char** tab, int lig){
 }
 
 void afficher_tab_2D (char** tab, int lig, int col){
+    //Affiche le tableau 2D
     for (int i=0; i<lig; i++){
         for (int j=0; j<col; j++){
             printf("%c", tab[i][j]);
@@ -36,6 +39,7 @@ void afficher_tab_2D (char** tab, int lig, int col){
 }
 
 void taille_fichier (const char* nomFichier, int* nbLig, int* nbCol){
+    //Donne la taille d'un fichier texte (colonne et ligne)
     char test[3000]; //Stocke les caractères d'une ligne
     int ligne = 0; // nb de lignes
     int colonne =0; // nb de colonnes
@@ -60,6 +64,7 @@ void taille_fichier (const char* nomFichier, int* nbLig, int* nbCol){
 }
 
 char** lire_fichier (const char* nomFichier){
+    //Traduit le contenu d'un fichier dans un tableau de char
     FILE* fichier = fopen(nomFichier, "r");
     if (fichier == NULL){
         printf("Erreur: fichier inaccessible \n");
@@ -93,6 +98,7 @@ char** lire_fichier (const char* nomFichier){
 }
 
 void genere_fichier (const char* nomFichier, char** source, int ligne, int colonne){
+    //Génère un fichier a partir d'un tableau de caractère
     FILE* fichier = NULL;
     fichier = fopen(nomFichier, "w");
     if (fichier !=NULL){
diff --git a/graphisme.c b/graphisme.c
index 4b57947f643fa7fb8d4bea0f6844a23334813abc..9f3b53b41ae447cca5d7a274e6790eeeb61da60d 100644
--- a/graphisme.c
+++ b/graphisme.c
@@ -15,7 +15,25 @@ void clean_textures(textures_t *textures){
   if (textures->fond != NULL){
     SDL_DestroyTexture(textures->fond);
   }
-
+  if (textures->comptoire != NULL){
+    SDL_DestroyTexture(textures->comptoire);
+  }
+  
+  if (textures->envoi[0] != NULL){
+    SDL_DestroyTexture(textures->envoi[0]);
+  }
+  if (textures->frigo[0] != NULL){
+    SDL_DestroyTexture(textures->frigo[0]);
+  }
+  if (textures->four[0] != NULL){
+    SDL_DestroyTexture(textures->four[0]);
+  }
+  if (textures->lavabo[0] != NULL){
+    SDL_DestroyTexture(textures->lavabo[0]);
+  }
+  if (textures->poubelle != NULL){
+    SDL_DestroyTexture(textures->poubelle);
+  }
 }
 
 void nettoyage_graphisme (SDL_Renderer *renderer, textures_t *textures, SDL_Window *fenetre){
@@ -27,6 +45,13 @@ void nettoyage_graphisme (SDL_Renderer *renderer, textures_t *textures, SDL_Wind
 void init_textures (SDL_Renderer *renderer, textures_t *textures, TTF_Font *font){
   textures->fond = charger_image("Ressources/fond1.bmp", renderer);
   textures->joueur = charger_image ("Ressources/joueur.bmp", renderer);
+  textures->comptoire = charger_image ("Ressources/compt0.bmp", renderer);
+  textures->envoi[0] = charger_image ("Ressources/envoi0.bmp", renderer);
+  textures->frigo[0] = charger_image ("Ressources/frigo0.bmp", renderer);
+  textures->four[0] = charger_image ("Ressources/four0.bmp", renderer);
+  textures->poubelle = charger_image ("Ressources/trash0.bmp", renderer);
+  textures->lavabo[0] = charger_image ("Ressources/lavabo0.bmp", renderer);
+
   // SDL_Color color = { 255, 0, 255 };
   //... = charger_texte ("Score : ", renderer, font, color);
 }
@@ -37,20 +62,26 @@ void apply_background (SDL_Renderer *renderer, textures_t *textures){
   }
 }
 
-void apply_sprite (SDL_Renderer *renderer, SDL_Texture *image, sprite_t *sprite){
-  // applique la texture d'un sprite
-  
-    SDL_Rect SrC = create_SDL_rect_from_texture(image);
-    SDL_Rect Des = create_SDL_rect_from_sprite(sprite);
-    SDL_RenderCopy(renderer, image, &SrC , &Des);
-}
-
 void apply_graphics (SDL_Renderer *renderer, textures_t *textures, world_t *world){
   //maj les texture selon la position des éléments différents
   if (textures->joueur !=NULL){
-    apply_sprite (renderer, textures->joueur, &world->joueur);
+    SDL_RenderCopy(renderer, textures->joueur, NULL, &world->joueur.rect);
+  }
+  if (textures->poubelle !=NULL){
+    SDL_RenderCopy(renderer, textures->poubelle, NULL, &world->poubelle.rect);
+  }
+  if (textures->lavabo[0] !=NULL){
+    SDL_RenderCopy(renderer, textures->lavabo[0], NULL, &world->lavabo.rect);
+  }
+  if (textures->frigo[0] !=NULL){
+    SDL_RenderCopy(renderer, textures->frigo[0], NULL, &world->frigo.rect);
+  }
+  if (textures->four[0] !=NULL){
+    SDL_RenderCopy(renderer, textures->four[0], NULL, &world->four.rect);
+  }
+  if (textures->envoi[0] !=NULL){
+    SDL_RenderCopy(renderer, textures->envoi[0], NULL, &world->envoi.rect);
   }
-
 }
 
 
@@ -62,7 +93,7 @@ void colorier_rect (SDL_Renderer *renderer, SDL_Rect rectangle, SDL_Color couleu
     }
   }
 }
-
+/*
 SDL_Rect create_SDL_rect_from_texture (SDL_Texture * texture){
   //Permet de créer un SDL_rect retournant la texture de la taille de la texture (SOURCE)
   int w;
@@ -80,11 +111,7 @@ SDL_Rect create_SDL_rect (int x, int y, int w, int h){
     rectangle.h = h;
     return rectangle;
 }
-
-SDL_Rect create_SDL_rect_from_sprite (sprite_t* sprite){
-  //Permet de créer un SDL_rect basé sur les données d'un sprite
-  return create_SDL_rect (sprite->x, sprite->y, sprite->w, sprite->h);
-}
+*/
 
 void update_graphics (SDL_Renderer *renderer, world_t *world, textures_t *textures){
 
@@ -93,4 +120,45 @@ void update_graphics (SDL_Renderer *renderer, world_t *world, textures_t *textur
   apply_graphics(renderer, textures, world);
   SDL_RenderPresent(renderer); // Récupère les infos actualisés de render et les affiches
 
-}
\ No newline at end of file
+}
+
+
+
+SDL_Texture* charger_image (const char* nomfichier, SDL_Renderer* renderer){
+    //Charge une image et retourne la surface de texture associée
+    SDL_Surface * image = SDL_LoadBMP(nomfichier);
+    SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, image);
+    SDL_FreeSurface(image);
+    return texture;
+}
+
+SDL_Texture* charger_image_transparente(const char* nomfichier, SDL_Renderer* renderer, Uint8 r, Uint8 g, Uint8 b){
+    SDL_Surface * image = SDL_LoadBMP(nomfichier);
+    SDL_SetColorKey(image, SDL_TRUE, SDL_MapRGB(image->format, r, g, b));
+    SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, image);
+    SDL_FreeSurface(image);
+    return texture;
+}
+//int SDL_SetColorKey(SDL_Surface* surface, int flag, Uint32 key) ; // défini la couleur transparente dans une surface
+
+//Uint32 SDL_MapRGB(const SDL_PixelFormat* format, Uint8 r, Uint8 g, Uint8 b); //map les couleurs d'une bitmap
+
+SDL_Texture* charger_texte (const char* message, SDL_Renderer* renderer, TTF_Font *font, SDL_Color color){
+    SDL_Surface* texte = TTF_RenderText_Blended(font, message, color);
+    SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, texte);
+    SDL_FreeSurface(texte);
+    return texture;
+}
+
+void render_texte(SDL_Renderer *renderer, int x, int y, int w, int h, SDL_Texture* texte){
+    SDL_Rect rect = {x, y, w, h};
+    SDL_RenderCopy(renderer, texte, NULL, &rect);
+}
+
+/*
+TTF_Font *TTF_OpenFont(const char *file, int size) ; //charge la police et applique la taille du texte
+// Écrire le texte sur une surface SDL
+SDL_Surface *TTF_RenderText_Solid(TTF_Font *font, const char *text, SDL_Color fg) ;
+// Fermer la police
+void TTF_CloseFont(TTF_Font *font) ;
+*/
\ No newline at end of file
diff --git a/graphisme.h b/graphisme.h
index 41a60c881c5bba7fac12681034f74f78c70dac8b..022c35e7b336be5ac41792a171f364c384da285e 100644
--- a/graphisme.h
+++ b/graphisme.h
@@ -9,13 +9,19 @@
 #ifndef GRAPHISME_H
 #define GRAPHISME_H
 
-#include "fonctions_SDL.h"
 #include "logique.h"
 #include "constantes.h"
 
 struct textures_s{
     SDL_Texture* fond; /*!< Texture liée à l'image du fond de l'écran. */
     SDL_Texture* joueur ; /* Texture du joueur*/
+    SDL_Texture* comptoire ; /*< Texture des comptoires */
+    SDL_Texture* envoi[1] ; /*< Tableau de texture de la zone d'envoi */
+    SDL_Texture* four[1] ; /*< Tableau de texture du four */
+    SDL_Texture* lavabo[1] ; /*< Tableau de texture du frigo */
+    SDL_Texture* poubelle ; /*< Texture de la poubelle */
+    SDL_Texture* frigo[1] ; /*< Tableau de texture du frigo */
+
     //TTF_Font* police; /*Texture de la police d'écriture*/
 };
 /**
@@ -25,6 +31,14 @@ struct textures_s{
 typedef struct textures_s textures_t;
 
 
+SDL_Texture* charger_image (const char* nomfichier, SDL_Renderer* renderer);
+
+SDL_Texture* charger_image_transparente(const char* nomfichier, SDL_Renderer* renderer, Uint8 r, Uint8 g, Uint8 b) ;
+
+SDL_Texture* charger_texte (const char* message, SDL_Renderer* renderer, TTF_Font *font, SDL_Color color);
+
+void render_texte(SDL_Renderer *renderer, int x, int y, int w, int h, SDL_Texture* texte);
+
 /**
  * \brief La fonction nettoie les textures
  * \param textures les textures
diff --git a/logique.c b/logique.c
index 63034b2c51c75e91595cbd611c4de86c32c322b6..9dcb0dc055235181c21c42f2827c423d310a140d 100644
--- a/logique.c
+++ b/logique.c
@@ -27,7 +27,7 @@ void init_data(world_t * world){ //faux
     build_sprite_unique(&world->lavabo, 'L', LAVABO_LARGEUR, LAVABO_HAUTEUR, world->map);
     build_sprite_unique(&world->poubelle, 't', POUBELLE_LARGEUR, POUBELLE_HAUTEUR, world->map);
     build_sprite_unique(&world->envoi, 'e', ZONE_ENVOI_LARGEUR, ZONE_ENVOI_HAUTEUR, world->map);
-    build_sprites_tab(&world, 'X', BLOC_COMPT_SIZE, BLOC_COMPT_SIZE);
+    //build_sprites_tab(&world, 'X', BLOC_COMPT_SIZE, BLOC_COMPT_SIZE);
     
     
     /*
@@ -72,13 +72,14 @@ void build_sprite_unique (sprite_t *sprite, char nom, int largeur, int hauteur,
 
     //Gestion des positions possibles.
     if (comptX == largeur && comptY == hauteur){
-        init_sprite(sprite, nom, x, y, largeur, hauteur, 0, 0);
+        init_sprite(sprite, nom, x, y+1-hauteur, largeur, hauteur, 0, 0);
     }
     if (comptX == hauteur && comptY == largeur){
-        init_sprite(sprite, nom, x, y, hauteur, largeur, 0, 0);
+        init_sprite(sprite, nom, x, y+1-largeur, hauteur, largeur, 0, 0);
     }
+    printf ("\n Sprite : %c, x: %d, y: %d", sprite->nom, sprite->rect.x, sprite->rect.y);
 }
-
+/*
 void build_sprites_tab (world_t* world, char nomSprite, int largeur, int hauteur){
 
     for (int i=0; i<SCREEN_HEIGHT; i++){
@@ -86,14 +87,14 @@ void build_sprites_tab (world_t* world, char nomSprite, int largeur, int hauteur
             //Parcours du tableau pour repérer le premier caractère d'un
         }
     }
-}
+}*/
 
-void init_sprite(sprite_t *sprite, char nom, int x, int y, int w, int h, int v, int state){ //faux 
+void init_sprite(sprite_t *sprite, char nom, int x, int y, int w, int h, int v, int state){ 
     //La fonction initialise tous les composants d'un sprite
-    sprite->x = x;
-    sprite->y = y;
-    sprite->w = w;
-    sprite->h = h;
+    sprite->rect.x = x;
+    sprite->rect.y = y;
+    sprite->rect.w = w;
+    sprite->rect.h = h;
     sprite->v = v;
     sprite->etat = state;
     sprite->is_visible = 0;
@@ -145,34 +146,34 @@ int estFini(world_t *world){
     return world->gameover;
 }
 
-void limites_externes (sprite_t *sprite, world_t *world){
+void limites_externes (sprite_t *sprite){
     //Défini les limites selon les murs
-    if (sprite->x + sprite->w > SCREEN_WIDTH-SIZE_MUR){
+    if (sprite->rect.x + sprite->rect.w > SCREEN_WIDTH-SIZE_MUR){
         //mur droite
-        sprite->x = SCREEN_WIDTH - (SIZE_MUR + sprite->w);
+        sprite->rect.x = SCREEN_WIDTH - (SIZE_MUR + sprite->rect.w);
     }
 
-    if (sprite->x < SIZE_MUR){
+    if (sprite->rect.x < SIZE_MUR){
         //mur gauche
-        sprite->x = SIZE_MUR;
+        sprite->rect.x = SIZE_MUR;
     }
 
-    if (sprite->y + sprite->h > SCREEN_HEIGHT-SIZE_MUR){
+    if (sprite->rect.y + sprite->rect.h > SCREEN_HEIGHT-SIZE_MUR){
         //mur bas
-        sprite->y = SCREEN_HEIGHT - (SIZE_MUR + sprite->h);
+        sprite->rect.y = SCREEN_HEIGHT - (SIZE_MUR + sprite->rect.h);
     }
 
-    if (sprite->y < SIZE_MUR){
+    if (sprite->rect.y < SIZE_MUR){
         //mur haut
-        sprite->y = SIZE_MUR;
+        sprite->rect.y = SIZE_MUR;
     }
 
 }
 
 void reset_sprite_on_map (sprite_t *sprite, world_t *world){
     //On efface la position du joueur sur map
-    for (int i=sprite->y;  i < sprite->y + sprite->h ; i++){
-        for (int j = sprite->x ; j < sprite->x + sprite->w ; j++){
+    for (int i=sprite->rect.y;  i < sprite->rect.y + sprite->rect.h ; i++){
+        for (int j = sprite->rect.x ; j < sprite->rect.x + sprite->rect.w ; j++){
             if (world->map[i][j]== sprite->nom){
                 world->map[i][j] = ' ';
             }
@@ -182,87 +183,13 @@ void reset_sprite_on_map (sprite_t *sprite, world_t *world){
 
 void place_sprite_on_map (sprite_t *sprite, world_t *world){
     //on écrit la position du joueur sur la map
-    for (int i=sprite->y;  i < sprite->y + sprite->h ; i++){
-        for (int j = sprite->x ; j < sprite->x + sprite->w ; j++){
+    for (int i=sprite->rect.y;  i < sprite->rect.y + sprite->rect.h ; i++){
+        for (int j = sprite->rect.x ; j < sprite->rect.x + sprite->rect.w ; j++){
             world->map[i][j]= sprite->nom;
         }
     }
 }
 
-void deplace_bas (sprite_t *sprite, world_t *world){
-    int compteur =0;
-    set_bas(&world->joueur);
-    world->joueur.y += world->joueur.v;
-    reset_sprite_on_map(sprite, world);
-
-    if (world->map[sprite->y + SIZE_JOUEUR][sprite->x] != ' ' || world->map[sprite->y + SIZE_JOUEUR][sprite->x + SIZE_JOUEUR] != ' '){
-        //Compter le nombre d'espace avant d'arriver au bloc, et placer le joueur contre le bloc interdit
-        for (int y= sprite->y; y<SIZE_JOUEUR; y++){
-            if (world->map[y][sprite->x] == ' '){
-                compteur++;
-            }
-        }
-        sprite->x -= compteur;
-    }
-}
-
-void deplace_haut (sprite_t *sprite, world_t *world){
-    int compteur =0;
-    set_haut(&world->joueur);
-    world->joueur.y -= world->joueur.v;
-    reset_sprite_on_map(sprite, world);
-
-    //déplace vers le haut
-    if (world->map[sprite->y][sprite->x] != ' ' || world->map[sprite->y][sprite->x + SIZE_JOUEUR] != ' '){
-        //Compter le nombre d'espace avant d'arriver au bloc, et placer le joueur contre le bloc interdit
-        for (int y= sprite->y; y<SIZE_JOUEUR; y++){
-            if (world->map[y][sprite->x] != ' '){
-                compteur++;
-            }
-        }
-        sprite->x += compteur;
-    }
-
-}
-
-void deplace_droite (sprite_t *sprite, world_t *world){
-    int compteur =0;
-    set_droite(&world->joueur);
-    world->joueur.x += world->joueur.v;
-    reset_sprite_on_map(sprite, world);
-
-    //déplace vers la droite
-    if (world->map[sprite->y][sprite->x + SIZE_JOUEUR] != ' ' || world->map[sprite->y + SIZE_JOUEUR][sprite->x + SIZE_JOUEUR] != ' '){
-        //Compter le nombre d'espace avant d'arriver au bloc, et placer le joueur contre le bloc interdit
-        for (int x= sprite->x; x<SIZE_JOUEUR; x++){
-            if (world->map[sprite->y][x] == ' '){
-                compteur++;
-            }
-        }
-    sprite->x -= compteur;
-    }
-    
-}
-
-void deplace_gauche (sprite_t *sprite, world_t *world){
-    int compteur =0;
-    set_gauche(sprite);
-    sprite->x -= sprite->v;
-    reset_sprite_on_map(sprite, world);
-    //déplace vers la gauche
-    if (world->map[sprite->y][sprite->x] != ' ' || world->map[sprite->y + sprite->h][sprite->x] != ' '){
-        //Compter le nombre d'espace avant d'arriver au bloc, et placer le joueur contre le bloc interdit
-        for (int x= sprite->x; x<sprite->w; x++){
-            if (world->map[sprite->y][x] != ' '){
-                compteur++;
-            }
-        }
-    sprite->x += compteur;
-    }
-    
-    
-}
-
 void gestion_events(SDL_Event *event, world_t *world){
     
     SDL_PollEvent(event);
@@ -275,22 +202,22 @@ void gestion_events(SDL_Event *event, world_t *world){
                 world->gameover = 1; break;
             //Déplacement du joueur
             case SDLK_UP:
-            world->joueur.y -= world->joueur.v;
+            world->joueur.rect.y -= world->joueur.v;
                 //deplace_haut(&world->joueur, world);
                 break;
                 
             case SDLK_DOWN:
-            world->joueur.y += world->joueur.v;
+            world->joueur.rect.y += world->joueur.v;
                 //deplace_bas(&world->joueur, world);
                 break;
 
             case SDLK_RIGHT:
-            world->joueur.x += world->joueur.v;
+            world->joueur.rect.x += world->joueur.v;
                 //deplace_droite(&world->joueur, world);                
                 break;
                 
             case SDLK_LEFT:
-            world->joueur.x -= world->joueur.v;
+            world->joueur.rect.x -= world->joueur.v;
                 //deplace_gauche(&world->joueur, world);
                 break;
             //case SDLK_SPACE:
@@ -351,7 +278,7 @@ char** init_map (){
 void update_data (world_t *world){
     const char *nomSave = "Ressources/save.txt";
     
-    limites_externes(&world->joueur, world);
+    limites_externes(&world->joueur);
     place_sprite_on_map(&world->joueur, world);
     //printf("Sprite joueur : x : %d | y: %d \n", world->joueur.x, world->joueur.y);
     genere_fichier(nomSave, world->map, SCREEN_HEIGHT, SCREEN_WIDTH);
diff --git a/logique.h b/logique.h
index da6a5bfb23bd6ff8fae53f851f6e7ddd66968d3f..95c913af0f12794cb9a91e4e86c3ba5b35426205 100644
--- a/logique.h
+++ b/logique.h
@@ -9,6 +9,8 @@
 #ifndef LOGIQUE_H
 #define LOGIQUE_H
 
+#include <SDL2/SDL.h>
+#include <SDL2/SDL_ttf.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <time.h>
@@ -23,13 +25,10 @@
  */
 struct sprite_s{
     char nom; /*!<  char du sprite utilisé sur map*/
-    int x; /*!<  abscisse du centre du sprite*/
-    int y; /*!<  ordonnée du centre du sprite*/
-    int h; /*!<  hauteur du sprite*/
-    int w; /*!< largeur du sprite*/
     int v; /*!< vitesse du sprite*/
     int etat; /*!< état du sprite; permet de varier son apparence */
     int is_visible; /*!<  Gère la visibilité d'un sprite; 0 si visible, i sinon */
+    SDL_Rect rect; /*!<  structure de position du sprite*/
 };
 
 /**
@@ -181,39 +180,7 @@ int return_state (sprite_t *sprite);
  * @param sprite sprite pour lequel on test les limites
  * @param world données du monde
  */
-void limites_externes (sprite_t *sprite, world_t *world);
-
-/**
- * @brief Déplacement d'un sprite vers la gauche + limites
- * 
- * @param sprite sprite qui se déplace
- * @param world données du monde
- */
-void deplace_gauche (sprite_t *sprite, world_t *world);
-
-/**
- * @brief Déplacement d'un sprite vers la droite + limites
- * 
- * @param sprite sprite qui se déplace
- * @param world données du monde
- */
-void deplace_droite (sprite_t *sprite, world_t *world);
-
-/**
- * @brief Déplacement d'un sprite vers le haut + limites
- * 
- * @param sprite sprite qui se déplace
- * @param world données du monde
- */
-void deplace_haut (sprite_t *sprite, world_t *world);
-
-/**
- * @brief Déplacement d'un sprite vers le bas + limites
- * 
- * @param sprite sprite qui se déplace
- * @param world données du monde
- */
-void deplace_bas (sprite_t *sprite, world_t *world);
+void limites_externes (sprite_t *sprite);
 
 /**
  * @brief Retire le sprite de la map - avant maj d'un déplacement
diff --git a/main.c b/main.c
index b412067f890ca76a380113239d3c393c00f8768d..760161634236ed96eb35955f70926dad6dc47596 100644
--- a/main.c
+++ b/main.c
@@ -10,7 +10,6 @@
 #include "logique.h"
 #include "constantes.h"
 #include "gestion_fichiers.h"
-#include "fonctions_SDL.h"
 #include "graphisme.h"
 #include "math.h"
 #include <time.h>