diff --git a/.gitignore b/.gitignore
index 1d1707800bf21f21d2d64298d77a23aa2f0aae53..d312fed01388c7dd83f45930f2397c97ca5d5dd2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,4 +4,6 @@ doc
 *.depend
 *.layout
 *.cbp
+src/bin
+src/obj
 
diff --git a/resources/Cases terrain/Thumbs.db b/resources/Cases terrain/Thumbs.db
index 05dd7de4d209115a0f70babef6c581d9040305f8..4b9f168cf4e8593c33cba85aef7844943b5a7c19 100644
Binary files a/resources/Cases terrain/Thumbs.db and b/resources/Cases terrain/Thumbs.db differ
diff --git a/resources/Cases terrain/eau.bmp b/resources/Cases terrain/eau.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..46d56d66f1f49fc6d2514d12d4c9dc0768d8b853
Binary files /dev/null and b/resources/Cases terrain/eau.bmp differ
diff --git a/resources/Cases terrain/foret1.bmp b/resources/Cases terrain/foret1.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..c3736079cc599cc27a526ea30903f7338bc14f1c
Binary files /dev/null and b/resources/Cases terrain/foret1.bmp differ
diff --git a/resources/Cases terrain/foret2.bmp b/resources/Cases terrain/foret2.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..4bcbe2fe380a97a457696adaa125c7aae64ede53
Binary files /dev/null and b/resources/Cases terrain/foret2.bmp differ
diff --git a/resources/Cases terrain/montagnes-neige.bmp b/resources/Cases terrain/montagnes-neige.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..5c61250a37aecbcb5c3158d6a8357b3a9addf2fc
Binary files /dev/null and b/resources/Cases terrain/montagnes-neige.bmp differ
diff --git a/resources/Cases terrain/montagnes-nuages.bmp b/resources/Cases terrain/montagnes-nuages.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..3d63600ab3b97da774933fe05a2d66d28084834c
Binary files /dev/null and b/resources/Cases terrain/montagnes-nuages.bmp differ
diff --git a/resources/Cases terrain/montagnes1.bmp b/resources/Cases terrain/montagnes1.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..7f9d39d2351285b70850afa38de5448b2481111a
Binary files /dev/null and b/resources/Cases terrain/montagnes1.bmp differ
diff --git a/resources/Cases terrain/montagnes2.bmp b/resources/Cases terrain/montagnes2.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..6678ba069982534a47bc7fcc9d80a68ef1988487
Binary files /dev/null and b/resources/Cases terrain/montagnes2.bmp differ
diff --git a/resources/Cases terrain/normal1.bmp b/resources/Cases terrain/normal1.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..0dac72aac5e5c7010b2ad566f398867468d68d0c
Binary files /dev/null and b/resources/Cases terrain/normal1.bmp differ
diff --git a/resources/Cases terrain/normal2.bmp b/resources/Cases terrain/normal2.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..4abe021adbaa969f83cc66a758f03be3b3a07572
Binary files /dev/null and b/resources/Cases terrain/normal2.bmp differ
diff --git a/resources/normal2.bmp b/resources/normal2.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..48920216a164e797f3c71643718c1dd65f03e6eb
Binary files /dev/null and b/resources/normal2.bmp differ
diff --git a/resources/personnage.bmp b/resources/personnage.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..b8d2370a77c2c3eda79bbcf9d6dc4834901c60ff
Binary files /dev/null and b/resources/personnage.bmp differ
diff --git a/src/SDL.c b/src/SDL.c
new file mode 100644
index 0000000000000000000000000000000000000000..4f281fd99fde43455ff94d7ef01239ee9341025f
--- /dev/null
+++ b/src/SDL.c
@@ -0,0 +1,316 @@
+#include <stdlib.h>
+#include <SDL/SDL.h>
+
+#define LARGEUR_CARTE 16
+#define HAUTEUR_CARTE 10
+#define LARGEUR_CASE 53
+#define HAUTEUR_CASE 71
+#define NB_PERSO 1
+
+
+int main_SDL()
+{
+    int i;
+    int j;
+    SDL_Event event;
+    SDL_Surface* ecran=NULL;
+    SDL_Surface* perso[NB_PERSO]={NULL};
+    SDL_Surface* Case=NULL;
+    SDL_Rect Position_Case[LARGEUR_CARTE*HAUTEUR_CARTE];
+    SDL_Rect Position_Perso[NB_PERSO];
+    int quitter=0;
+
+    if ( SDL_Init( SDL_INIT_VIDEO ) < 0 )
+    {
+        printf( "Unable to init SDL: %s\n", SDL_GetError() );
+        return 1;
+    }
+    ecran = SDL_SetVideoMode(LARGEUR_CARTE*(LARGEUR_CASE+1), HAUTEUR_CARTE*(HAUTEUR_CASE+2), 32, SDL_HWSURFACE|SDL_DOUBLEBUF);
+    if (ecran == NULL) // Si l'ouverture a échoué, on le note et on arrête
+    {
+        fprintf(stderr, "Impossible de charger le mode vidéo : %s\n", SDL_GetError());
+        exit(EXIT_FAILURE);
+    }
+    SDL_WM_SetCaption("Elder Internal Ignition",NULL);
+
+    SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0));
+
+    perso[0] = SDL_LoadBMP("../resources/personnage.bmp");
+        if (!perso[0])
+        {
+            printf("Unable to load bitmap: %s\n", SDL_GetError());
+            return 1;
+        }
+    SDL_SetColorKey(perso[0], SDL_SRCCOLORKEY, SDL_MapRGB(perso[0]->format, 0, 0, 255));
+    Case = SDL_LoadBMP("../resources/normal2.bmp");
+    if (!Case)
+        {
+            printf("Unable to load bitmap: %s\n", SDL_GetError());
+            return 1;
+        }
+    SDL_SetColorKey(Case, SDL_SRCCOLORKEY, SDL_MapRGB(Case->format, 0, 0, 255));
+
+    for(i=0;i<LARGEUR_CARTE;i+=2)
+    {
+        for(j=0;j<HAUTEUR_CARTE;j++)
+            {
+                Position_Case[i*HAUTEUR_CARTE+j].x=LARGEUR_CASE*i;
+                Position_Case[i*HAUTEUR_CARTE+j].y=HAUTEUR_CASE*j;
+            }
+    }
+    for(i=1;i<LARGEUR_CARTE;i+=2)
+    {
+        for(j=0;j<HAUTEUR_CARTE;j++)
+            {
+                Position_Case[i*HAUTEUR_CARTE+j].x=LARGEUR_CASE*i;
+                Position_Case[i*HAUTEUR_CARTE+j].y=HAUTEUR_CASE*j+(HAUTEUR_CASE/2);
+            }
+    }
+    Position_Perso[0]=Position_Case[0];
+    while(quitter==0)
+    {
+        SDL_WaitEvent(&event);
+        switch(event.type) /* Test du type d'événement */
+        {
+            case SDL_QUIT: /* Si c'est un événement de type "Quitter" */
+                quitter=1;
+                break;
+            case SDL_KEYDOWN:/* Si c'est un événement de type "touche pressée" */
+                switch(event.key.keysym.sym){
+                    case SDLK_KP7:
+                        if(Position_Perso[0].y>0&&Position_Perso[0].x>0)
+                            {Position_Perso[0].y-=HAUTEUR_CASE/2;
+                            Position_Perso[0].x-=LARGEUR_CASE;}
+                        break;
+                    case SDLK_KP8:
+                        if(Position_Perso[0].y>0)
+                            Position_Perso[0].y-=HAUTEUR_CASE;
+                        break;
+                    case SDLK_KP9:
+                        if((Position_Perso[0].y>0)&&(Position_Perso[0].x<LARGEUR_CASE*(LARGEUR_CARTE-1)))
+                            {Position_Perso[0].y-=HAUTEUR_CASE/2;
+                            Position_Perso[0].x+=LARGEUR_CASE;}
+                        break;
+                    case SDLK_KP1:
+                        if(Position_Perso[0].y<HAUTEUR_CASE*(HAUTEUR_CARTE-1)&&Position_Perso[0].x>0)
+                            {Position_Perso[0].y+=HAUTEUR_CASE/2;
+                            Position_Perso[0].x-=LARGEUR_CASE;}
+                        break;
+                    case SDLK_KP2:
+                        if(Position_Perso[0].y<HAUTEUR_CASE*(HAUTEUR_CARTE-1))
+                            Position_Perso[0].y+=HAUTEUR_CASE;
+                        break;
+                    case SDLK_KP3:
+                        if(Position_Perso[0].y<HAUTEUR_CASE*(HAUTEUR_CARTE-1)&&Position_Perso[0].x<LARGEUR_CASE*(LARGEUR_CARTE-1))
+                            {Position_Perso[0].y+=HAUTEUR_CASE/2;
+                            Position_Perso[0].x+=LARGEUR_CASE;}
+                        break;
+                    case SDLK_ESCAPE:
+                        quitter=1;
+                        break;
+                    default:
+                        quitter=0;
+                }
+             break;
+        }
+        SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0));
+        for(i=0;i<LARGEUR_CARTE*HAUTEUR_CARTE;i++)
+        {
+            SDL_BlitSurface(Case,NULL,ecran,&Position_Case[i]);
+        }
+        SDL_BlitSurface(perso[0],NULL,ecran,&Position_Perso[0]);
+        SDL_Flip(ecran);
+    }
+    quitter=0;
+    SDL_FreeSurface(Case);
+    SDL_FreeSurface(perso[0]);
+    SDL_Quit();
+    return 0;
+}
+
+
+
+
+
+int main_Open_Classrooms ()
+{
+    int i;
+    SDL_Event event;
+    int continuer=0;
+    SDL_Surface* ecran=NULL;
+    SDL_Surface* rectangle=NULL;
+    SDL_Surface* image=NULL;
+    SDL_Rect position_image;
+    SDL_Rect position[256];
+
+    for(i=0;i<256;i++)
+    {
+        position[i].x=0;
+        position[i].y=i;
+    }
+
+
+    SDL_Surface* degrade[256]={NULL};
+
+    // initialize SDL video
+    if ( SDL_Init( SDL_INIT_VIDEO ) < 0 )
+    {
+        printf( "Unable to init SDL: %s\n", SDL_GetError() );
+        return 1;
+    }
+
+    // create a new window
+
+    ecran = SDL_SetVideoMode(800, 256, 16,SDL_HWSURFACE|SDL_DOUBLEBUF);
+    if (ecran == NULL) // Si l'ouverture a échoué, on le note et on arrête
+    {
+        fprintf(stderr, "Impossible de charger le mode vidéo : %s\n", SDL_GetError());
+        exit(EXIT_FAILURE);
+    }
+    SDL_WM_SetCaption("fenetre de test",NULL);
+
+
+
+    SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,200,89,3));
+    SDL_Flip(ecran);
+
+    while(continuer==0)
+    {
+        SDL_WaitEvent(&event);
+        switch(event.type) /* Test du type d'événement */
+        {
+            case SDL_QUIT: /* Si c'est un événement de type "Quitter" */
+            SDL_Quit();
+            exit(0);
+            break;
+            case SDL_KEYDOWN:
+            continuer=1;
+            break;
+        }
+    }
+
+    continuer=0;
+    rectangle = SDL_CreateRGBSurface(SDL_HWSURFACE,400,256,16,0,0,0,0);
+    SDL_FillRect(rectangle,NULL,SDL_MapRGB(ecran->format,0,127,255));
+    SDL_BlitSurface(rectangle,NULL,ecran,&position[0]);
+    SDL_Flip(ecran);
+
+    while(continuer==0)
+    {
+        SDL_WaitEvent(&event);
+        switch(event.type) /* Test du type d'événement */
+        {
+            case SDL_QUIT: /* Si c'est un événement de type "Quitter" */
+            SDL_FreeSurface(rectangle);
+            SDL_Quit();
+            exit(0);
+            break;
+            case SDL_KEYDOWN:
+            continuer=1;
+            break;
+        }
+    }
+    continuer=0;
+     for(i=0;i<256;i++)
+    {
+        degrade[i]=SDL_CreateRGBSurface(SDL_HWSURFACE,800,1,16,0,0,0,0);
+        SDL_FillRect(degrade[i],NULL,SDL_MapRGB(ecran->format,i,i,i));
+    }
+
+    for(i=0;i<256;i++)
+    {
+        SDL_BlitSurface(degrade[i],NULL,ecran,&position[i]);
+    }
+    SDL_Flip(ecran);
+
+    while(continuer==0)
+    {
+        SDL_WaitEvent(&event);
+        switch(event.type) /* Test du type d'événement */
+        {
+            case SDL_QUIT: /* Si c'est un événement de type "Quitter" */
+                for(i=0;i<256;i++)
+                {
+                    SDL_FreeSurface(degrade[i]);
+                }
+                SDL_FreeSurface(rectangle);
+                SDL_Quit();
+                exit(0);
+                break;
+            case SDL_KEYDOWN:
+                continuer=1;
+                break;
+        }
+    }
+    continuer=0;
+    for(i=0;i<256;i++)
+    {
+        SDL_FreeSurface(degrade[i]);
+    }
+    SDL_FreeSurface(rectangle);
+
+
+
+    // load an image
+    image = SDL_LoadBMP("montagnes1.bmp");
+    if (!image)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+    SDL_BlitSurface(image,NULL,ecran,&position[0]);
+    SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,120,250,120));
+    position_image=position[0];
+    SDL_Flip(ecran);
+
+    SDL_EnableKeyRepeat(10, 10);
+     while(1)
+    {
+        SDL_WaitEvent(&event);
+        switch(event.type) /* Test du type d'événement */
+        {
+            case SDL_QUIT: /* Si c'est un événement de type "Quitter" */
+                SDL_FreeSurface(image);
+                SDL_Quit();
+                exit(0);
+                break;
+            case SDL_MOUSEBUTTONDOWN:
+                position_image.x=event.button.x;
+                position_image.y=event.button.y;
+                break;
+            case SDL_KEYDOWN:/* Si c'est un événement de type "touche pressée" */
+                switch(event.key.keysym.sym){
+                    case SDLK_UP:
+                        if(position_image.y>0)
+                        position_image.y--;
+                        break;
+                    case SDLK_DOWN:
+                        if(position_image.y<256)
+                        position_image.y++;
+                        break;
+                    case SDLK_LEFT:
+                        if(position_image.x>0)
+                        position_image.x--;
+                        break;
+                    case SDLK_RIGHT:
+                        if(position_image.x<800)
+                        position_image.x++;
+                        break;
+                    case SDLK_ESCAPE:
+                        SDL_FreeSurface(image);
+                        SDL_Quit();
+                        exit(0);
+                        break;
+                    default:
+                         ;
+                }
+             break;
+         }
+         SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,120,250,120));
+         SDL_BlitSurface(image,NULL,ecran,&position_image);
+         SDL_Flip(ecran);
+    }
+
+
+    return 0;
+}
diff --git a/src/SDL.dll b/src/SDL.dll
new file mode 100644
index 0000000000000000000000000000000000000000..781b54d6ee5d89abc7e26f8405ef29f99ee68c2f
Binary files /dev/null and b/src/SDL.dll differ
diff --git a/src/SDL.h b/src/SDL.h
new file mode 100644
index 0000000000000000000000000000000000000000..2eefcb96d0ce016d5f12020d0a735999a48de054
--- /dev/null
+++ b/src/SDL.h
@@ -0,0 +1,8 @@
+
+#ifndef SDL_H_INCLUDED
+#define SDL_H_INCLUDED
+
+int main_SDL();
+int main_Open_Classrooms ();
+
+#endif
diff --git a/src/TerrainsXML.c b/src/TerrainsXML.c
index af220db7e7389c39e95ebde2e05c5533e88aa8e9..e121b776e357384e248dc5683216a4b1f9edc0c8 100644
--- a/src/TerrainsXML.c
+++ b/src/TerrainsXML.c
@@ -1,5 +1,6 @@
 #include <stdio.h>
 #include <stdlib.h>
+
 #include "TerrainsXML.h"
 
 Case* Remplir_Terrains(FILE* Terrains_XML_log, const char *filename) /* Remplit le tableau de cases à partir du fichier XML */
diff --git a/src/main.c b/src/main.c
index 4c1b4dd45e2e8eb68434c2144493d4958f1496b5..c47bcffbbe0e52dc62e50eb4631343eec7508542 100644
--- a/src/main.c
+++ b/src/main.c
@@ -4,6 +4,7 @@
 #include "classe.h"
 #include "case.h"
 #include "terrain.h"
+#include "SDL.h"
 
 int init_jeu(){ /* crée les différents types de terrains, de classes et d'attaques en lisant dans un fichier */
    FILE *fichier;
@@ -17,6 +18,8 @@ int init_jeu(){ /* cr
 
 int main()
 {
+
+    main_SDL();
 /* --------------------------- Test de lecture XML Classes ------------------------------------------------- */
 /*
     int i = 0;
@@ -33,7 +36,7 @@ int main()
 /* --------------------------- Test de lecture XML Cases ------------------------------------------------- */
 
 
-    Librairie_Terrains("Terrains.xml");
+    Librairie_Terrains("../resources/Terrains.xml");
 
 /*