diff --git a/library/Display/Display.h b/library/Display/Display.h
index b47d3d8180bbbf1f34a06f17aec4f1882ab60c35..1df578a9fc254e63f6224ec0d6e8bb90f6c122b5 100644
--- a/library/Display/Display.h
+++ b/library/Display/Display.h
@@ -1,6 +1,8 @@
 #include "../../sdl2-light.h"
 #include "../World/world.h"
 #include "../../constante.c"
+#include <stdio.h>
+#include <stdlib.h>
 
 #ifndef DISPLAY_H
 #define DISPLAY_H
diff --git a/library/World/world.c b/library/World/world.c
index 041ecc434271583ac25ca335de3f0c6c552de8ed..0eb8190d485b6016c5939a41c7b27efb8e24418a 100644
--- a/library/World/world.c
+++ b/library/World/world.c
@@ -8,6 +8,14 @@
 void update_data(world_t *world){
     world->ligneArriver->y += INITIAL_SPEED - world->speed_h;
     world->mur->y += INITIAL_SPEED - world->speed_h;
+
+    if (isOverScreen(world->vaisseau)){
+        if (world->vaisseau->x < 0) world->vaisseau->x = 0;
+        if (world->vaisseau->x + world->vaisseau->w > SCREEN_WIDTH) world->vaisseau->x = SCREEN_WIDTH - world->vaisseau->w;
+        if (world->vaisseau->y < 0) world->vaisseau->y = 0;
+        if (world->vaisseau->y + world->vaisseau->h > SCREEN_HEIGHT) world->vaisseau->y = SCREEN_HEIGHT - world->vaisseau->h;
+        
+    }
 }
 
 /**
@@ -20,6 +28,13 @@ int is_game_over(world_t *world){
     return world->gameover;
 }
 
+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);
 }
diff --git a/library/World/world.h b/library/World/world.h
index 64e7afee74475f1f91651bd203bde7ebfb0b318b..d0a56df8e147d54c1c919b3cf6edac0bc54e6d2b 100644
--- a/library/World/world.h
+++ b/library/World/world.h
@@ -1,4 +1,5 @@
-
+#include <stdio.h>
+#include <stdlib.h>
 /**
  * \brief Fichier qui contient les données du monde du jeu
  * 
@@ -41,6 +42,13 @@ struct world_s{
 typedef struct world_s world_t;
 
 void update_data(world_t *world);
+/**
+ * \brief La fonction indique si le jeu est fini en fonction des données du monde
+ * 
+ * \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);
 
@@ -50,6 +58,6 @@ sprite_t *init_sprite(sprite_t *sprite, int x, int y, int w, int h);
 
 void init_data(world_t * world);
 
-void free_data(world_t * world);
+void clean_data(world_t * world);
 
 #endif
diff --git a/library/World/world.o b/library/World/world.o
index 69556e66efb4aa19c8232a04632ed7f93c23de64..83b5a8f9f3dda6146032d660746085c342740bda 100644
Binary files a/library/World/world.o and b/library/World/world.o differ
diff --git a/main.c b/main.c
index da291ac105268e6d9e3076916fe51bb7c451d211..8f34c6f2137c047665fa804b7c66a47116068dcd 100644
--- a/main.c
+++ b/main.c
@@ -8,6 +8,7 @@
 
 #include "sdl2-light.h"
 #include <stdio.h>
+#include <stdlib.h>
 #include "library/Display/Display.h"
 #include "library/World/world.h"
 
@@ -41,6 +42,7 @@ void handle_events(SDL_Event *event,world_t *world){
              switch (event->key.keysym.sym)
              {
              case SDLK_d:
+             
                 world->vaisseau->x += MOVING_STEP;
                 break;
             case SDLK_q:
diff --git a/spacecorridor.exe b/spacecorridor.exe
index 9c007bfc6c0c05ab510c84aba673698a64238917..889155a525eb4d1a49d1fdc02dd231019641bc07 100644
Binary files a/spacecorridor.exe and b/spacecorridor.exe differ