diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json
new file mode 100644
index 0000000000000000000000000000000000000000..143979c3e1ccd696151be5ab4bb48db98495e6dd
--- /dev/null
+++ b/.vscode/c_cpp_properties.json
@@ -0,0 +1,21 @@
+{
+    "configurations": [
+        {
+            "name": "Win32",
+            "includePath": [
+                "${workspaceFolder}/**"
+            ],
+            "defines": [
+                "_DEBUG",
+                "UNICODE",
+                "_UNICODE"
+            ],
+            "compilerPath": "C:\\msys64\\mingw64\\bin\\gcc.exe",
+            "cStandard": "c17",
+            "cppStandard": "gnu++17",
+            "intelliSenseMode": "windows-gcc-x64",
+            "configurationProvider": "ms-vscode.makefile-tools"
+        }
+    ],
+    "version": 4
+}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index d564005163a46bf1edd682ba7c60988b3598e3e4..7aa2d6da21b1b023eea293485e7cc6f5c2d4c970 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -2,6 +2,9 @@
     "files.associations": {
         "sdl2-light.h": "c",
         "world.h": "c",
-        "display.h": "c"
-    }
+        "display.h": "c",
+        "stdio.h": "c",
+        "sprites.h": "c"
+    },
+    "C_Cpp.errorSquiggles": "disabled"
 }
\ No newline at end of file
diff --git a/Makefile b/Makefile
index 74d11f05f1628b2f348f6cffd38ac49d930335c1..b28ee07441ad531b0aca76a0365417cf44ff7b94 100644
--- a/Makefile
+++ b/Makefile
@@ -3,8 +3,8 @@ LDFLAGS = -lm -lmingw32 -lSDL2main -lSDL2
 SDL2_INCLUDE_DIR = src/include
 SDL2_LIBRARIES_DIR = src/lib
 
-INC = sdl2-light.h library/Display/Display.h library/World/world.h
-SRC = main.c sdl2-light.c library/Display/Display.c library/World/world.c
+INC = sdl2-light.h library/Display/Display.h library/World/world.h library/Sprites/sprites.h
+SRC = main.c sdl2-light.c library/Display/Display.c library/World/world.c library/Sprites/sprites.c
 
 OBJ = $(SRC:%.c=%.o)
 
diff --git a/library/Sprites/sprites.c b/library/Sprites/sprites.c
new file mode 100644
index 0000000000000000000000000000000000000000..75df60aa5ae18762a99ca11936523e9c3ec187d3
--- /dev/null
+++ b/library/Sprites/sprites.c
@@ -0,0 +1,35 @@
+#include "sprites.h"
+#include "../../constante.c"
+int isOverScreen(sprite_t *sprite){
+    if(sprite->x < 0 || sprite->x + sprite->w > SCREEN_WIDTH || sprite->y < 0 || sprite->y + sprite->h > SCREEN_HEIGHT){
+        return 1;
+    }
+    return 0;
+}
+
+void print_sprite(sprite_t *sprite){
+    printf("x = %d, y = %d, w = %d, h = %d\n", sprite->x, sprite->y, sprite->w, sprite->h);
+}
+
+
+sprite_t *init_sprite(sprite_t *sprite, int x, int y, int w, int h){
+    sprite = malloc(sizeof(sprite_t));
+    sprite->x = x;
+    sprite->y = y;
+    sprite->w = w;
+    sprite->h = h;
+    return sprite;
+}
+
+int sprites_collide(sprite_t *sp1, sprite_t *sp2){
+    if (sp1->x + sp1->w < sp2->x){
+        return 0;
+    }else if(sp1->x > sp2->x + sp2->w){
+        return 0;
+    }else if(sp1->y + sp1->h < sp2->y){
+        return 0;
+    }else if(sp1->y > sp2->y + sp2->h){
+        return 0;
+    }
+    return 1;
+}
\ No newline at end of file
diff --git a/library/Sprites/sprites.h b/library/Sprites/sprites.h
new file mode 100644
index 0000000000000000000000000000000000000000..fc4d1921c8d2326af24e8fdf92e6ce0595497755
--- /dev/null
+++ b/library/Sprites/sprites.h
@@ -0,0 +1,49 @@
+/**
+ * \brief Le fichier qui gères les sprites
+ */
+#include <stdio.h>
+#include <stdlib.h>
+
+
+#ifndef SPRITES_H
+#define SPRITES_H
+/**
+ * \brief Représentation pour stocker les données du vaisseau ou autre sprites
+ * 
+ */
+
+struct sprite_s{
+    int x;
+    int y;
+    int w;
+    int h;
+};
+
+typedef struct sprite_s sprite_t;
+
+
+int isOverScreen(sprite_t *sprite);
+
+void print_sprite(sprite_t *sprite);
+
+/**
+ * \brief La fonction initialise les sprites du jeu
+ * 
+ * \param sprite 
+ * \param x 
+ * \param y 
+ * \param w 
+ * \param h 
+ */
+sprite_t *init_sprite(sprite_t *sprite, int x, int y, int w, int h);
+
+/**
+ * \brief La fonction libère les données du sprite
+ * 
+ * \param sp1 
+ * \param sp2 
+ * \return int 0 si les sprites ne se touchent pas, 1 sinon
+ */
+int sprites_collide(sprite_t *sp1, sprite_t *sp2);
+
+#endif
\ No newline at end of file
diff --git a/library/Sprites/sprites.o b/library/Sprites/sprites.o
new file mode 100644
index 0000000000000000000000000000000000000000..0b0819682368140de557fc3cd415794ee36ff8d5
Binary files /dev/null and b/library/Sprites/sprites.o differ
diff --git a/library/World/world.h b/library/World/world.h
index d0a56df8e147d54c1c919b3cf6edac0bc54e6d2b..2f215301bf41616d15a82bfdf04b0b3e3efd8cc2 100644
--- a/library/World/world.h
+++ b/library/World/world.h
@@ -1,28 +1,15 @@
 #include <stdio.h>
 #include <stdlib.h>
+#include "../Sprites/sprites.h"
+#include "../../constante.c"
 /**
  * \brief Fichier qui contient les données du monde du jeu
  * 
  */
 
-#include "../../constante.c"
-
 #ifndef WORLD_H
 #define WORLD_H
 
-/**
- * \brief Représentation pour stocker les données du vaisseau ou autre sprites
- * 
- */
-
-struct sprite_s{
-    int x;
-    int y;
-    int w;
-    int h;
-};
-
-typedef struct sprite_s sprite_t;
 
 /**
  * \brief Représentation du monde du jeu
@@ -48,16 +35,23 @@ void update_data(world_t *world);
  * \param sprite 
  * \return int 0 si le sprite est dans l'écran, 1 sinon
  */
-int isOverScreen(sprite_t *sprite);
 
 int is_game_over(world_t *world);
 
-void print_sprite(sprite_t *sprite);
-
-sprite_t *init_sprite(sprite_t *sprite, int x, int y, int w, int h);
-
+/**
+ * \brief La fonction initialise les données du monde
+ * 
+ * \param world 
+ */
 void init_data(world_t * world);
 
+/**
+ * \brief La fonction libère les données du monde
+ * 
+ * \param world 
+ */
 void clean_data(world_t * world);
 
+void handle_sprite_collide(sprite_t *sp1, sprite_t *sp2, world_t *world, int make_disappear);
+
 #endif
diff --git a/library/World/world.o b/library/World/world.o
index 83b5a8f9f3dda6146032d660746085c342740bda..56ddaeca313ffeac1c13a955770d68856d1b1c52 100644
Binary files a/library/World/world.o and b/library/World/world.o differ
diff --git a/main.c b/main.c
index 8f34c6f2137c047665fa804b7c66a47116068dcd..08ed35a6659f4533c9fd09dc2d19bb2de67703b9 100644
--- a/main.c
+++ b/main.c
@@ -49,11 +49,9 @@ void handle_events(SDL_Event *event,world_t *world){
                 world->vaisseau->x -= MOVING_STEP;
                 break;
             case SDLK_z:
-                world->vaisseau->y -= MOVING_STEP;
                 world->speed_h = 3;
                 break;
             case SDLK_s:
-                world->vaisseau->y += MOVING_STEP;
                 world->speed_h = -3;
                 break;
             case SDLK_ESCAPE:
diff --git a/main.o b/main.o
index 1c4119f69837b2b9e6960a091117f09ef7b55d13..70b49f709b3d38211b6d3a2ab31a0d45aa98dfec 100644
Binary files a/main.o and b/main.o differ
diff --git a/spacecorridor.exe b/spacecorridor.exe
index 889155a525eb4d1a49d1fdc02dd231019641bc07..deb3ecae1a773bd7293c931e78a9e36b4fdd3a38 100644
Binary files a/spacecorridor.exe and b/spacecorridor.exe differ