diff --git a/newVersion-V3/IMG/barrage.bmp b/newVersion-V3/IMG/barrage.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..d5c498c03bd1d78c92b075234cd97da8bf4874cc
Binary files /dev/null and b/newVersion-V3/IMG/barrage.bmp differ
diff --git a/newVersion-V3/IMG/barrage.png b/newVersion-V3/IMG/barrage.png
new file mode 100644
index 0000000000000000000000000000000000000000..b01e074720bc538cb66be3a6937ac0941c89c193
Binary files /dev/null and b/newVersion-V3/IMG/barrage.png differ
diff --git a/newVersion-V3/IMG/boutton.bmp b/newVersion-V3/IMG/boutton.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..fdef830b2cc98ca53885150389932558be2690ed
Binary files /dev/null and b/newVersion-V3/IMG/boutton.bmp differ
diff --git a/newVersion-V3/IMG/boutton.png b/newVersion-V3/IMG/boutton.png
new file mode 100644
index 0000000000000000000000000000000000000000..c9b505b2c71b86b852cd654c2ee8cb0e6a583a77
Binary files /dev/null and b/newVersion-V3/IMG/boutton.png differ
diff --git a/newVersion-V3/IMG/bullet.bmp b/newVersion-V3/IMG/bullet.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..41727a4cbdc2fd2b879a2b0136f90740d896a38c
Binary files /dev/null and b/newVersion-V3/IMG/bullet.bmp differ
diff --git a/newVersion-V3/IMG/enemy_car.bmp b/newVersion-V3/IMG/enemy_car.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..921f7b8ba0e7b0c8508eabdb007acbb8aac6c4fe
Binary files /dev/null and b/newVersion-V3/IMG/enemy_car.bmp differ
diff --git a/newVersion-V3/IMG/enemy_car.png b/newVersion-V3/IMG/enemy_car.png
new file mode 100644
index 0000000000000000000000000000000000000000..a5c7ee8e071f3adbe06f9de12da1b2f28ea4ef8e
Binary files /dev/null and b/newVersion-V3/IMG/enemy_car.png differ
diff --git a/newVersion-V3/IMG/exit.bmp b/newVersion-V3/IMG/exit.bmp
new file mode 100755
index 0000000000000000000000000000000000000000..e98608dab41c7d04b685f2c406914b957a9ccf0d
Binary files /dev/null and b/newVersion-V3/IMG/exit.bmp differ
diff --git a/newVersion-V3/IMG/main_car.bmp b/newVersion-V3/IMG/main_car.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..6cbf99e55e53368df10e0642f6a02ae78635f873
Binary files /dev/null and b/newVersion-V3/IMG/main_car.bmp differ
diff --git a/newVersion-V3/IMG/menu.bmp b/newVersion-V3/IMG/menu.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..2279f00e33796aba5c7f80a5e082724788c4cf08
Binary files /dev/null and b/newVersion-V3/IMG/menu.bmp differ
diff --git a/newVersion-V3/IMG/new_game.bmp b/newVersion-V3/IMG/new_game.bmp
new file mode 100755
index 0000000000000000000000000000000000000000..6de58c8de83b7cecb2e4ba256212ed3e6b76bbe3
Binary files /dev/null and b/newVersion-V3/IMG/new_game.bmp differ
diff --git a/newVersion-V3/IMG/road.bmp b/newVersion-V3/IMG/road.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..2279f00e33796aba5c7f80a5e082724788c4cf08
Binary files /dev/null and b/newVersion-V3/IMG/road.bmp differ
diff --git a/newVersion-V3/IMG/settings.bmp b/newVersion-V3/IMG/settings.bmp
new file mode 100755
index 0000000000000000000000000000000000000000..48e5326011de7f88fa580b50431a88b97df42c44
Binary files /dev/null and b/newVersion-V3/IMG/settings.bmp differ
diff --git a/newVersion-V3/IMG/voiture.png b/newVersion-V3/IMG/voiture.png
new file mode 100644
index 0000000000000000000000000000000000000000..4f3dc697771868eff55c5ab38d5dcc49ec727736
Binary files /dev/null and b/newVersion-V3/IMG/voiture.png differ
diff --git a/newVersion-V3/Makefile b/newVersion-V3/Makefile
new file mode 100755
index 0000000000000000000000000000000000000000..a2aa727ebebfc854cbcf00297ed97e05b81527a2
--- /dev/null
+++ b/newVersion-V3/Makefile
@@ -0,0 +1,18 @@
+CC = gcc
+CFLAGS = -W -Wall -ansi -std=c99 -g
+LIBS = -L./SDL2_ttf/.libs -L./SDL2_image/.libs
+LDFLAGS = `sdl2-config --cflags --libs` -lSDL2_ttf -lSDL2_image -lSDL2_ttf
+INCLUDES = -I./SDL2_ttf -I./SDL2_image
+EXEC = fastcar
+SRC = main.c fonctions_SDL.c data.c logic.c colision.c events.c graphics.c liste.c
+OBJ = $(SRC:.c=.o) -lm
+
+all: $(EXEC)
+main: $(OBJ)
+	$(CC) $(CFLAGS) $(INCLUDES) -o $@ $^ $(LIBS) $(LDFLAGS)
+%.o: %.c
+	$(CC) $(CFLAGS) -o $@ -c $<
+clean:
+	rm -rf *.o *~
+mrproper: clean
+	rm -rf $(EXEC)
diff --git a/newVersion-V3/colision.c b/newVersion-V3/colision.c
new file mode 100755
index 0000000000000000000000000000000000000000..2c93dc287b74621686fc6c16b70470c6c84e00fc
--- /dev/null
+++ b/newVersion-V3/colision.c
@@ -0,0 +1,11 @@
+/**
+ * \file collision.c
+ * \brief Gestion des collisions du jeu
+ * \author YATIME Marouane - AIT OUALI Marouane
+ * \date 20  decembre  2021
+ */
+
+#include "colision.h"
+#include "liste.h"
+#include <stdio.h>
+
diff --git a/newVersion-V3/colision.h b/newVersion-V3/colision.h
new file mode 100755
index 0000000000000000000000000000000000000000..95d14cf22b9102d8ab7f68fabbe4fdf8054951e3
--- /dev/null
+++ b/newVersion-V3/colision.h
@@ -0,0 +1,46 @@
+/**
+ * \file collision.h
+ * \brief Gestion des collisions du jeu
+ * \author YATIME Marouane - AIT OUALI Marouane
+ * \date 20  decembre  2021
+ */
+
+#ifndef V1_COLISION_H
+#define V1_COLISION_H
+
+#include "data.h"
+#include "logic.h"
+
+/**
+ * @brief gestion des collision entre car et les autre voitures 
+ * 
+ * @param world 
+ * @param sp1 
+ * @param sp2 
+ */
+void handle_Main_Enemy_collision(world_t *world, sprite_t *sp1, sprite_t *sp2);
+
+/**
+ * @brief gestion entre car et les boulles 
+ * 
+ * @param world 
+ * @param sp1 
+ * @param sp2 
+ */
+void handle_Bullet_Enemy_collision(world_t *world, sprite_t *sp1, sprite_t *sp2);
+
+
+/**
+ * @brief gestion de la colision avec les barrage 
+ * 
+ * @param sp1 
+ * @param sp2 
+ * @param world 
+ * @param textures 
+ * @param renderer 
+ */
+void handle_Main_Barrage_collision(sprite_t *sp1, sprite_t *sp2, world_t *world, resources_t *textures,
+                                   SDL_Renderer *renderer);
+
+
+#endif //V1_COLISION_H
diff --git a/newVersion-V3/constants.h b/newVersion-V3/constants.h
new file mode 100755
index 0000000000000000000000000000000000000000..bef88ebb095d933446303cf5db93b91889ded7fb
--- /dev/null
+++ b/newVersion-V3/constants.h
@@ -0,0 +1,66 @@
+/**
+ * \file const.h
+ * \brief Rassemblement des constantes utiles au jeu
+ * \author YATIME Marouane - AIT OUALI Marouane
+ * \date 20  decembre  2021
+ */
+
+#include <SDL2/SDL.h>
+#include <SDL2/SDL_ttf.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <time.h>
+#include <math.h>
+#include <string.h>
+
+
+#include "fonctions_SDL.h"
+
+
+#ifndef V1_CONSTANTS_H
+#define V1_CONSTANTS_H
+
+
+#define SCREEN_WIDTH 840
+
+#define SCREEN_HEIGHT 650
+
+#define RICK_STEP 50
+
+#define SPEED_LIIMIT 10
+
+#define NUMBER_ENEMY_CAR 5
+
+#define NUMBER_LIFES 10
+
+#define NUMBER_BARRAGE 50
+
+#define NUMBER_ROADS 100
+
+
+struct resources_s {
+
+    SDL_Texture *main_car;
+
+    SDL_Texture *enemy_car;
+
+    SDL_Texture *barrage;
+
+    SDL_Texture *road;
+
+    SDL_Texture *bullet;
+
+    SDL_Texture *menu;
+
+    SDL_Texture *exit_button;
+
+    SDL_Texture *new_game_button;
+
+    SDL_Texture *settings_button;
+
+    TTF_Font *font;
+};
+typedef struct resources_s resources_t;
+
+#endif
diff --git a/newVersion-V3/data.c b/newVersion-V3/data.c
new file mode 100755
index 0000000000000000000000000000000000000000..312e314672ae1219cdc0cc8b63442d56eb247bb7
--- /dev/null
+++ b/newVersion-V3/data.c
@@ -0,0 +1,14 @@
+/**
+ * \file data.c
+ * \brief Gestion des données du jeu
+ * \author YATIME Marouane - AIT OUALI Marouane
+ * \date 20  decembre  2021
+ */
+
+#include "data.h"
+#include "graphics.h"
+#include "liste.h"
+#include "logic.h"
+#include "colision.h"
+#include <stdio.h>
+
diff --git a/newVersion-V3/data.h b/newVersion-V3/data.h
new file mode 100755
index 0000000000000000000000000000000000000000..21d3dcba5422834670fa3d33174700cd531c827e
--- /dev/null
+++ b/newVersion-V3/data.h
@@ -0,0 +1,104 @@
+/**
+ * \file data.h
+ * \brief Gestion des données du jeu
+ * \author YATIME Marouane - AIT OUALI Marouane
+ * \date 26 septembre 2021
+ */
+
+#ifndef V1_DATA_H
+#define V1_DATA_H
+
+#include "constants.h"
+
+
+
+struct position_s {
+    int x;
+    int y;
+};
+typedef struct position_s position_t;
+
+typedef enum {
+    Main_car, Enemy_car, Road, Bullet, Car, Barrage, Barre, Menu
+} nature_t;
+
+
+struct sprite_s {
+    position_t position;
+    int h;
+    int w;
+    int disappear;
+    int direction;
+    int dir_texture;
+    int count;
+    int speed;
+    int life;
+    nature_t nature;
+};
+typedef struct sprite_s sprite_t;
+
+
+typedef struct element element;
+struct element {
+    sprite_t val;
+    struct element *nxt;
+};
+
+typedef element *list_t;
+
+
+struct world_s {
+    sprite_t Menu;
+    sprite_t new_game_menu;
+    sprite_t settings_menu;
+    sprite_t exit_menu;
+    sprite_t Main_car;
+    list_t Barrage;
+    int gameover; /*!< Champ indiquant si l'on est à la fin du jeu  */
+    list_t Enemy_car;
+    list_t Road;
+    list_t bullet;
+    int nb_bullets;
+    bool stop_menu;
+    sprite_t mouse;
+    int time_debut_jeu;
+    int time_mort;
+    int dead;
+};
+typedef struct world_s world_t;
+
+
+void init_game(SDL_Window **window, SDL_Renderer **renderer, resources_t *textures, world_t *world);
+
+void init_sprite_ptr(sprite_t *sprite, int x, int y, int w, int h, int v, int life, nature_t nature);
+
+sprite_t init_sprite(sprite_t sprite, int x, int y, int w, int h, int v, int life, nature_t nature);
+
+void init_data(world_t *world);
+
+void update_menu(world_t *world, resources_t *textures, SDL_Renderer *renderer);
+
+void update_data(world_t *world, resources_t *textures, SDL_Renderer *renderer);
+
+int is_game_over(world_t *world);
+
+int sprites_collide(sprite_t *sp1, sprite_t *sp2);
+
+void move_all_except_rick(world_t *world, SDL_Renderer *renderer, resources_t *textures);
+
+void move_enemy_car(world_t *world, resources_t *textures, SDL_Renderer *renderer);
+
+void move_sprite_randomly(list_t enemy_car, resources_t *textures, SDL_Renderer *renderer);
+
+void move_enemy_to_main(list_t enemy_car, world_t *world, resources_t *textures, SDL_Renderer *renderer);
+
+double distance(sprite_t s1, sprite_t s2);
+
+void clean_data(world_t *world);
+
+void move_bullets(world_t *world, resources_t *textures, SDL_Renderer *renderer);
+
+void handle_Bullet_Zombie_collision(world_t *world, sprite_t *sp1, sprite_t *sp2);
+
+
+#endif //V1_DATA_H
diff --git a/newVersion-V3/events.c b/newVersion-V3/events.c
new file mode 100755
index 0000000000000000000000000000000000000000..6a11e6f6484325bfa48ce11648d96ca286a5ba60
--- /dev/null
+++ b/newVersion-V3/events.c
@@ -0,0 +1,14 @@
+/**
+ * \file events.c
+ * \brief Gestion des entrées claviers du joueur
+ * \author YATIME Marouane - AIT OUALI Marouane
+ * \date 20  decembre  2021
+ */
+
+#include "events.h"
+#include "constants.h"
+#include "data.h"
+#include "colision.h"
+#include "liste.h"
+
+
diff --git a/newVersion-V3/events.h b/newVersion-V3/events.h
new file mode 100755
index 0000000000000000000000000000000000000000..f5ce8807af0c2c39b77da18afb11686fd69f4348
--- /dev/null
+++ b/newVersion-V3/events.h
@@ -0,0 +1,18 @@
+/**
+ * \file event.h
+ * \brief Gestion des entrées claviers du joueur
+ * \author YATIME Marouane - AIT OUALI Marouane
+ * \date 20  decembre  2021
+ */
+
+#ifndef V1_EVENTS_H
+#define V1_EVENTS_H
+
+#include <SDL2/SDL_mixer.h>
+#include "constants.h"
+#include "data.h"
+
+//getion des evenements du jeu et les parametres
+void handle_events(SDL_Event *event, SDL_Renderer *renderer, world_t *world, resources_t *textures);
+
+#endif //V1_EVENTS_H
diff --git a/newVersion-V3/fonctions_SDL.c b/newVersion-V3/fonctions_SDL.c
new file mode 100755
index 0000000000000000000000000000000000000000..907d7f3770628aa073d89838ae7ed501925b5c77
--- /dev/null
+++ b/newVersion-V3/fonctions_SDL.c
@@ -0,0 +1,123 @@
+/**
+ * \file fonctions_SDL.c
+ * \brief sur-couche de SDL2 pour simplifier son utilisation pour le projet
+ * \author YATIME Marouane - AIT OUALI Marouane
+ * \date 20  decembre  2021
+ */
+
+#include "fonctions_SDL.h"
+
+int init_sdl(SDL_Window **window, SDL_Renderer **renderer, int width, int height)
+{
+    if(0 != SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO))
+    {
+        fprintf(stderr, "Erreur initialisation de la SDL : %s", SDL_GetError());
+        return -1;
+    }
+    if(0 != SDL_CreateWindowAndRenderer(width, height, SDL_WINDOW_SHOWN, window, renderer))
+    {
+        fprintf(stderr, "Erreur lors de la creation de l'image et du renderer : %s", SDL_GetError());
+        return -1;
+    }
+    return 0;
+}
+
+SDL_Texture* charger_image(const char* nomfichier, SDL_Renderer* renderer)
+{
+
+	SDL_Surface* surface = SDL_LoadBMP(nomfichier);
+
+	return SDL_CreateTextureFromSurface(renderer, surface);
+}
+
+SDL_Texture* charger_image_transparente(const char path[], SDL_Renderer *renderer)
+{
+    SDL_Surface *temp = NULL;
+    SDL_Texture *texture = NULL;
+    temp = SDL_LoadBMP(path);
+
+    if(NULL == temp)
+    {
+        fprintf(stderr, "Erreur pendant chargement image BMP: %s", SDL_GetError());
+        return NULL;
+    }
+    SDL_SetColorKey(temp, SDL_TRUE, SDL_MapRGB(temp->format, 255, 0, 255));
+    texture = SDL_CreateTextureFromSurface(renderer, temp);
+    SDL_FreeSurface(temp);
+    if(NULL == texture)
+    {
+        fprintf(stderr, "Erreur pendant creation de la texture liee a l'image chargee: %s", SDL_GetError());
+        return NULL;
+    }
+    return texture;
+}
+
+
+void clear_renderer(SDL_Renderer *renderer){
+    SDL_RenderClear(renderer);
+}
+
+void apply_texture(SDL_Texture *texture,SDL_Renderer *renderer,int x, int y){
+    SDL_Rect dst = {0, 0, 0, 0};
+
+    SDL_QueryTexture(texture, NULL, NULL, &dst.w, &dst.h);
+    dst.x = x; dst.y = y;
+
+    SDL_RenderCopy(renderer, texture, NULL, &dst);
+}
+
+void update_screen(SDL_Renderer *renderer){
+    SDL_RenderPresent(renderer);
+}
+
+void clean_texture(SDL_Texture *texture){
+    if(NULL != texture){
+        SDL_DestroyTexture(texture);
+    }
+}
+
+void clean_sdl(SDL_Renderer *renderer,SDL_Window *window){
+    if(NULL != renderer)
+        SDL_DestroyRenderer(renderer);
+    if(NULL != window)
+        SDL_DestroyWindow(window);
+    SDL_Quit();
+}
+
+void init_audio(){
+    SDL_Init(SDL_INIT_AUDIO);
+}
+
+
+void init_ttf(){
+    if(TTF_Init()==-1) {
+        printf("TTF_Init: %s\n", TTF_GetError());
+    }
+}
+
+TTF_Font * load_font(const char *path, int font_size){
+    TTF_Font *font = TTF_OpenFont(path, font_size);
+    if(font == NULL){
+        fprintf(stderr, "Erreur pendant chargement font: %s\n", SDL_GetError());
+    }
+    return font;
+}
+
+void apply_text(SDL_Renderer *renderer,int x, int y, int w, int h, const char *text, TTF_Font *font, SDL_Color color){
+
+    SDL_Surface* surface = TTF_RenderText_Solid(font, text, color);
+    SDL_Texture* texture = SDL_CreateTextureFromSurface(renderer, surface);
+    SDL_Rect dstrect2 = {x, y, w, h};
+    SDL_RenderCopy(renderer, texture, NULL, &dstrect2);
+    SDL_FreeSurface(surface);
+    clean_texture(texture);
+
+}
+
+void clean_font(TTF_Font * font){
+    TTF_CloseFont(font);
+}
+
+
+
+
diff --git a/newVersion-V3/fonctions_SDL.h b/newVersion-V3/fonctions_SDL.h
new file mode 100755
index 0000000000000000000000000000000000000000..7d77924f47fc860c9490d91746e7d6327033ec15
--- /dev/null
+++ b/newVersion-V3/fonctions_SDL.h
@@ -0,0 +1,40 @@
+/**
+ * \file fonctions_SDL.h
+ * \brief en-tête du module correspondant à une sur-couche de SDL2 pour simplifier son utilisation pour le projet
+ * \author YATIME Marouane - AIT OUALI Marouane
+ * \date 20  decembre  2021
+ */
+
+#include <SDL2/SDL.h>
+#include <SDL2/SDL_ttf.h>
+#include <SDL2/SDL_mixer.h>
+#include <SDL2/SDL2_rotozoom.h>
+#include <stdio.h>
+
+int init_sdl(SDL_Window **window, SDL_Renderer **renderer, int width, int height);
+
+SDL_Texture* charger_image(const char* nomfichier, SDL_Renderer* renderer);
+
+SDL_Texture* charger_image_transparente(const char path[], SDL_Renderer *renderer);
+
+void clear_renderer(SDL_Renderer *renderer);
+
+void apply_texture(SDL_Texture *texture,SDL_Renderer *renderer,int x, int y);
+
+void update_screen(SDL_Renderer *renderer);
+
+void clean_texture(SDL_Texture *texture);
+
+void clean_sdl(SDL_Renderer *renderer,SDL_Window *window);
+
+void init_ttf();
+
+TTF_Font * load_font(const char *path, int font_size);
+
+void apply_text(SDL_Renderer *renderer,int x, int y, int w, int h, const char *text, TTF_Font *font, SDL_Color color);
+
+void clean_font(TTF_Font * font);
+
+void init_audio();
+
+
diff --git a/newVersion-V3/font/arial.ttf b/newVersion-V3/font/arial.ttf
new file mode 100755
index 0000000000000000000000000000000000000000..ab68fb197d4479b3b6dec6e85bd5cbaf433a87c5
Binary files /dev/null and b/newVersion-V3/font/arial.ttf differ
diff --git a/newVersion-V3/graphics.c b/newVersion-V3/graphics.c
new file mode 100755
index 0000000000000000000000000000000000000000..085a23175fff61ef68c60fd61978e2ed7b4c2b00
--- /dev/null
+++ b/newVersion-V3/graphics.c
@@ -0,0 +1,155 @@
+/**
+ * \file graphics.c
+ * \brief Gestion de l'affichage du jeu
+ * \author YATIME Marouane - AIT OUALI Marouane
+ * \date 20  decembre  2021
+ */
+
+#include "graphics.h"
+
+
+void init_textures(SDL_Renderer *renderer, resources_t *textures, world_t *world) {
+
+    textures->font = load_font("font/arial.ttf", 200);
+
+    textures->main_car = charger_image_transparente("IMG/main_car.bmp", renderer);
+
+    textures->enemy_car = charger_image_transparente("IMG/enemy_car.bmp", renderer);
+
+    textures->barrage = charger_image_transparente("IMG/barrage.bmp", renderer);
+
+    textures->road = charger_image_transparente("IMG/road.bmp", renderer);
+
+    textures->bullet = charger_image_transparente("IMG/bullet.bmp", renderer);
+
+    textures->menu = charger_image_transparente("IMG/menu.bmp", renderer);
+
+    textures->new_game_button = charger_image_transparente("IMG/boutton.bmp", renderer);
+
+    textures->settings_button = charger_image_transparente("IMG/boutton.bmp", renderer);
+
+    textures->exit_button = charger_image_transparente("IMG/boutton.bmp", renderer);
+
+}
+
+
+void refresh_menu(SDL_Renderer *renderer, world_t *world, resources_t *textures) {
+    clear_renderer(renderer);
+    apply_sprite(renderer, textures->menu, &world->Menu);
+    apply_sprite(renderer, textures->new_game_button, &world->new_game_menu);
+    apply_sprite(renderer, textures->settings_button, &world->settings_menu);
+    apply_sprite(renderer, textures->exit_button, &world->exit_menu);
+    apply_text(renderer, (60), 50, 180, 90, "New Game", textures->font,(SDL_Color){243, 89, 0});
+    apply_text(renderer, (310), 50, 180, 90, "Settings", textures->font,(SDL_Color){243, 89, 0});
+    apply_text(renderer, (560), 50, 180, 90, "Exit", textures->font,(SDL_Color){243, 89, 0});
+
+    apply_text(renderer, (SCREEN_WIDTH-610), 200, 400, 14*4, "Bienvenue", textures->font,(SDL_Color){243, 89, 0});
+    apply_text(renderer, (SCREEN_WIDTH-620), 340, 400, 14*4, "Appuyer sur ", textures->font,(SDL_Color){243, 89, 0});
+    apply_text(renderer, (SCREEN_WIDTH-620), 410, 400, 14*4, "'NEW GAME'", textures->font,(SDL_Color){240, 248, 255, 0.993});
+    apply_text(renderer, (SCREEN_WIDTH-620), 460, 400, 14*4, "pour commencer", textures->font,(SDL_Color){243, 89, 0});
+    apply_text(renderer, (SCREEN_WIDTH-800), 600, 200, 14*3, "YATIME MAROUANE", textures->font,(SDL_Color){253, 217, 13});
+    apply_text(renderer, (SCREEN_WIDTH-250), 600, 200, 14*3, "AIT OUALI MAROUANE", textures->font,(SDL_Color){253, 217, 13});
+    update_screen(renderer);
+}
+
+void refresh_graphics(SDL_Renderer *renderer, world_t *world, resources_t *textures) {
+
+    clear_renderer(renderer);
+
+    list_t temp_road = world->Road;
+    while (temp_road != NULL) {
+        if (distance(temp_road->val, world->Main_car) < 2 * SCREEN_HEIGHT) {
+            apply_sprite(renderer, textures->road, &temp_road->val);
+        }
+        temp_road = temp_road->nxt;
+    }
+
+    list_t temp_barrage = world->Barrage;
+    while (temp_barrage != NULL) {
+        if (temp_barrage->val.disappear == 0) {
+            if (distance(temp_barrage->val, world->Main_car) < 2 * SCREEN_HEIGHT) {
+                apply_sprite(renderer, textures->barrage, &temp_barrage->val);
+            }
+        }
+        temp_barrage = temp_barrage->nxt;
+    }
+
+
+    list_t temp_enemy = world->Enemy_car;
+
+    while (temp_enemy != NULL) {
+        if (distance(temp_enemy->val, world->Main_car) < 2 * SCREEN_HEIGHT) {
+            if (temp_enemy->val.life >= 0) {
+                apply_sprite(renderer, textures->enemy_car, &temp_enemy->val);
+            }
+        }
+
+        temp_enemy = temp_enemy->nxt;
+    }
+
+    apply_sprite(renderer, textures->main_car, &world->Main_car);
+
+
+    if (world->nb_bullets != 0) {
+        list_t temp_bullet = world->bullet;
+        for (int i = 0; i < world->nb_bullets; i++) {
+            apply_sprite(renderer, textures->bullet, &temp_bullet->val);
+            temp_bullet = temp_bullet->nxt;
+        }
+    }
+
+
+    if (world->Main_car.life == 0) {
+        SDL_Color color = {255, 50, 50};
+        char fin_jeu[20] = "GAME OVER";
+        int W = 800;
+        int H = 200;
+        int X = SCREEN_WIDTH / 2 - W / 2;
+        int Y = SCREEN_HEIGHT / 4;
+        apply_text(renderer, X, Y, W, H, fin_jeu, textures->font, color);
+    }
+
+
+    update_screen(renderer);
+}
+
+void apply_sprite(SDL_Renderer *renderer, SDL_Texture *texture, sprite_t *sprite) {
+    if (texture != NULL) {
+        apply_texture(texture, renderer,
+                      (sprite->position.x) - ((sprite->w) / 2),
+                      (sprite->position.y) - ((sprite->h) / 2)
+        );
+    }
+}
+
+
+void clean(SDL_Window *window, SDL_Renderer *renderer, resources_t *textures, world_t *world) {
+    clean_data(world);
+    clean_textures(textures);
+    clean_sdl(renderer, window);
+    TTF_Quit();
+}
+
+void clean_textures(resources_t *textures) {
+
+    clean_texture(textures->main_car);
+
+    clean_texture(textures->enemy_car);
+
+    clean_texture(textures->barrage);
+
+    clean_texture(textures->road);
+
+    clean_texture(textures->bullet);
+
+    clean_texture(textures->menu);
+
+    clean_texture(textures->new_game_button);
+
+    clean_texture(textures->settings_button);
+
+    clean_texture(textures->exit_button);
+
+    clean_font(textures->font);
+
+}
\ No newline at end of file
diff --git a/newVersion-V3/graphics.h b/newVersion-V3/graphics.h
new file mode 100755
index 0000000000000000000000000000000000000000..2318857eeab688e8aeb3d1ea363ea67459a25dda
--- /dev/null
+++ b/newVersion-V3/graphics.h
@@ -0,0 +1,32 @@
+/**
+ * \file graphics.h
+ * \brief Gestion de l'affichage du jeu
+ * \author YATIME Marouane - AIT OUALI Marouane
+ * \date 26 septembre 2021
+ */
+
+#ifndef V1_GRAPHICS_H
+#define V1_GRAPHICS_H
+
+
+#include "constants.h"
+#include "data.h"
+#include "liste.h"
+#include "fonctions_SDL.h"
+
+
+
+void init_textures(SDL_Renderer *renderer, resources_t *textures, world_t *world);
+
+void refresh_menu(SDL_Renderer *renderer, world_t *world, resources_t *textures);
+
+void refresh_graphics(SDL_Renderer *renderer, world_t *world, resources_t *textures);
+
+void apply_sprite(SDL_Renderer *renderer, SDL_Texture *texture, sprite_t *sprite);
+
+void clean(SDL_Window *window, SDL_Renderer *renderer, resources_t *textures, world_t *world);
+
+void clean_textures(resources_t *textures);
+
+
+#endif //V1_GRAPHICS_H
diff --git a/newVersion-V3/liste.c b/newVersion-V3/liste.c
new file mode 100755
index 0000000000000000000000000000000000000000..0f3ce3a071108f7efa3f1f79d151aa99b8b4af51
--- /dev/null
+++ b/newVersion-V3/liste.c
@@ -0,0 +1,10 @@
+/**
+ * \file liste.c
+ * \brief Gestion des listes
+ * \author YATIME Marouane - AIT OUALI Marouane
+ * \date 20  decembre  2021
+ */
+
+#include "liste.h"
+
+
diff --git a/newVersion-V3/liste.h b/newVersion-V3/liste.h
new file mode 100755
index 0000000000000000000000000000000000000000..c96b31e6148fa755c9bae99c7fbab2cb27dffe6e
--- /dev/null
+++ b/newVersion-V3/liste.h
@@ -0,0 +1,27 @@
+/**
+ * \file liste.h
+ * \brief Gestion des listes
+ * \author YATIME Marouane - AIT OUALI Marouane
+ * \date 26 septembre 2021
+ */
+
+#ifndef V1_LISTE_H
+#define V1_LISTE_H
+
+
+#include "constants.h"
+#include "data.h"
+
+list_t ajouter(list_t liste, sprite_t valeur);
+
+bool estVide(list_t liste);
+
+list_t supprimerElementEnTete(list_t liste);
+
+list_t supprimerElementEnFin(list_t liste);
+
+list_t l_vide();
+
+int tailleListe(list_t liste);
+
+#endif //V1_LISTE_H
diff --git a/newVersion-V3/logic.c b/newVersion-V3/logic.c
new file mode 100755
index 0000000000000000000000000000000000000000..84f598b2d6867a42f393d40427eed509ab872585
--- /dev/null
+++ b/newVersion-V3/logic.c
@@ -0,0 +1,14 @@
+/**
+ * \file logic.c
+ * \brief Gestion de la logique du jeu (physique)
+ * \author YATIME Marouane - AIT OUALI Marouane
+ * \date 26 septembre 2021
+ */
+
+#include "logic.h"
+
+
+double distance(sprite_t s1, sprite_t s2) {
+  
+}
+
diff --git a/newVersion-V3/logic.h b/newVersion-V3/logic.h
new file mode 100755
index 0000000000000000000000000000000000000000..a621b8c6d4b33dbdee0a9688f75ca8c245be760b
--- /dev/null
+++ b/newVersion-V3/logic.h
@@ -0,0 +1,18 @@
+/**
+ * \file logic.h
+ * \brief Gestion de la logique du jeu (physique)
+ * \author YATIME Marouane - AIT OUALI Marouane
+ * \date 26 septembre 2021
+ */
+
+#ifndef V1_LOGIC_H
+#define V1_LOGIC_H
+
+#include "data.h"
+
+double distance(sprite_t s1, sprite_t s2);
+
+int sprites_collide(sprite_t* sp1, sprite_t* sp2);
+
+
+#endif //V1_LOGIC_H
diff --git a/newVersion-V3/main b/newVersion-V3/main
new file mode 100755
index 0000000000000000000000000000000000000000..841963cc27744312ee2d5f6e891a93d014752bbe
Binary files /dev/null and b/newVersion-V3/main differ
diff --git a/newVersion-V3/main.c b/newVersion-V3/main.c
new file mode 100755
index 0000000000000000000000000000000000000000..8e7810fd9703244fa5f50750d83ad8781d149aa9
--- /dev/null
+++ b/newVersion-V3/main.c
@@ -0,0 +1,45 @@
+/**
+ * \file main.c
+ * \brief Boucle de jeu
+ * \author YATIME Marouane - AIT OUALI Marouane
+ * \date  20  decembre  2021
+ */
+
+#include "constants.h"
+#include "data.h"
+#include "graphics.h"
+#include "events.h"
+
+int main() {
+
+    SDL_Event event;
+    world_t world;
+    resources_t textures;
+    SDL_Renderer *renderer;
+    SDL_Window *fenetre;
+
+    time_t t;
+    srand((unsigned) time(&t));
+    world.time_debut_jeu = t;
+
+    init_game(&fenetre, &renderer, &textures, &world);
+
+    while (!is_game_over(&world)) {
+        if (world.stop_menu == 0) {
+            handle_events(&event, renderer, &world, &textures);
+            update_menu(&world, &textures, renderer);
+            refresh_menu(renderer, &world, &textures);
+        } else {
+            refresh_graphics(renderer, &world, &textures);
+            update_data(&world, &textures, renderer);
+            handle_events(&event, renderer, &world, &textures);
+        }
+        SDL_Delay(4);
+    }
+
+
+    clean(fenetre, renderer, &textures, &world);
+
+    SDL_Quit();
+    return 0;
+}