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"); /*