diff --git a/travail_individuel/Beret/jeu_de_la_vie/run b/travail_individuel/Beret/jeu_de_la_vie/run deleted file mode 100644 index 8e08c3bddbdbd66785bf316eb066b0907f8767dc..0000000000000000000000000000000000000000 Binary files a/travail_individuel/Beret/jeu_de_la_vie/run and /dev/null differ diff --git a/travail_individuel/Beret/jeu_de_la_vie/src/main.c b/travail_individuel/Beret/jeu_de_la_vie/src/main.c index 97b3199094e953e9ffeea6c1fa2f765ab9f5b2d6..c562599a548f0154067affc641a4df3eb3bf2571 100644 --- a/travail_individuel/Beret/jeu_de_la_vie/src/main.c +++ b/travail_individuel/Beret/jeu_de_la_vie/src/main.c @@ -4,6 +4,8 @@ #include "map.h" #include "render.h" + + int main (int argc, char **argv) { if (argc=! 2){ @@ -18,91 +20,100 @@ int main (int argc, char **argv) { program_on= SDL_TRUE; int dimension_grille= atoi(argv[1]); + int dimension_tableau=600-600%dimension_grille; int regles_naissances [9]={0,0,0,1,0,0,0,0,0}; int regles_survie [9]={0,0,1,1,0,0,0,0,0}; - int **grille; + int **grille=NULL; int i; + int taille_max=20; + - init_sdl(window_1,renderer,dimension_grille); + + init_sdl(window_1,renderer,dimension_tableau); - grille = malloc(dimension_grille*sizeof(int)); - if (grille==NULL){ - fin_sdl(renderer,window_1); - printf("erreur alloc\n"); - exit(0); - } - else{ - for (i=0;i<dimension_grille; i++){ - grille[i]=malloc(dimension_grille*sizeof(int)); - if (grille[i]==NULL){ - fin_sdl(renderer,window_1); - liberer_grille(grille,i-1); - printf("erreur alloc\n"); - exit(0); + grille = malloc(dimension_grille*sizeof(int)); + if (grille==NULL){ + fin_sdl(renderer,window_1); + printf("erreur alloc\n"); + exit(0); + } + else{ + for (i=0;i<dimension_grille; i++){ + grille[i]=malloc(dimension_grille*sizeof(int)); + if (grille[i]==NULL){ + fin_sdl(renderer,window_1); + liberer_grille(grille,i-1); + printf("erreur alloc\n"); + exit(0); + } } } - } - int ** nouvelle_grille; + int ** nouvelle_grille=NULL; - nouvelle_grille = malloc(dimension_grille*sizeof(int)); - if (nouvelle_grille==NULL){ - fin_sdl(renderer,window_1); - printf("erreur alloc\n"); - exit(0); - } - else{ - for (i=0;i<dimension_grille; i++){ - nouvelle_grille[i]=malloc(dimension_grille*sizeof(int)); - if (nouvelle_grille[i]==NULL){ - fin_sdl(renderer,window_1); - liberer_grille(nouvelle_grille,i-1); - printf("erreur alloc\n"); - exit(1); + nouvelle_grille = malloc(dimension_grille*sizeof(int)); + if (nouvelle_grille==NULL){ + fin_sdl(renderer,window_1); + printf("erreur alloc\n"); + exit(0); + } + else{ + for (i=0;i<dimension_grille; i++){ + nouvelle_grille[i]=malloc(dimension_grille*sizeof(int)); + if (nouvelle_grille[i]==NULL){ + fin_sdl(renderer,window_1); + liberer_grille(nouvelle_grille,i-1); + printf("erreur alloc\n"); + exit(0); + } } } - } + init_grille(grille,dimension_grille); + printf("dim%d\n",grille[20][20]); - SDL_Event event; + SDL_Event event; + + dessiner_grille(renderer,grille, dimension_grille,dimension_tableau); + SDL_RenderPresent(renderer); - while (program_on) { /// boucle d'event - if(SDL_PollEvent(&event)) { - - switch (event.type) { - case SDL_QUIT: - program_on=SDL_FALSE; - break; - case SDL_MOUSEBUTTONDOWN: - printf("Appui :%d %d\n", event.button.x, event.button.y); - changer_case(grille, event.button.x, event.button.y,dimension_grille); - break; - case SDL_KEYDOWN: - switch(event.key.keysym.sym){ - case SDLK_RIGHT: - printf("goo calcul!\n"); - iteration_suivante(grille,nouvelle_grille,regles_naissances,regles_survie,dimension_grille); - break; - default: - printf("une touche est tapee\n"); - break; - } - break; - case SDL_WINDOWEVENT_CLOSE: - printf("appui sur la croix\n"); + while (program_on) { // boucle d'event + while(SDL_PollEvent(&event)) { + + switch (event.type) { + case SDL_QUIT: + program_on=SDL_FALSE; break; - - } - } - dessiner_grille(renderer,grille, dimension_grille); - - SDL_RenderPresent(renderer); - SDL_Delay(20); - } + case SDL_MOUSEBUTTONDOWN: + printf("Appui :%d %d\n", event.button.x, event.button.y); + changer_case(grille, event.button.x, event.button.y,dimension_grille); + break; + case SDL_KEYDOWN: + switch(event.key.keysym.sym){ + case SDLK_RIGHT: + printf("goo calcul!\n"); + iteration_suivante(grille,nouvelle_grille,regles_naissances,regles_survie,dimension_grille); + break; + default: + printf("une touche est tapee\n"); + break; + } + break; + case SDL_WINDOWEVENT_CLOSE: + printf("appui sur la croix\n"); + break; + + } + dessiner_grille(renderer,grille, dimension_grille,dimension_tableau); - liberer_grille(grille, dimension_grille); - liberer_grille(nouvelle_grille,dimension_grille); + SDL_RenderPresent(renderer); + } + SDL_Delay(100); + } + + liberer_grille(grille, dimension_grille); + liberer_grille(nouvelle_grille,dimension_grille); - fin_sdl(renderer,window_1); + fin_sdl(renderer,window_1); return 0; } \ No newline at end of file diff --git a/travail_individuel/Beret/jeu_de_la_vie/src/map.c b/travail_individuel/Beret/jeu_de_la_vie/src/map.c index 336c4df76248e7e194101c4908394039a6c43c6c..5c838c1cc205a79689b58a7965fbbec6227a4cec 100644 --- a/travail_individuel/Beret/jeu_de_la_vie/src/map.c +++ b/travail_individuel/Beret/jeu_de_la_vie/src/map.c @@ -1,16 +1,22 @@ #include "map.h" +int quelleTaillePourLesCases(int divise, int diviseur){ + int r; + r = divise/diviseur; + return r; +} + int nombrevoisin(int **grille,int i , int j,int w){ int cpt=0; - if (grille[(i-1)%w][(j-1)%w]==1){cpt++;} - if (grille[(i)%w][(j-1)%w]==1){cpt++;} - if (grille[(i+1)%w][(j-1)%w]==1){cpt++;} + if (grille[(w+i-1)%w][(w+j-1)%w]==1){cpt++;} + if (grille[(i)%w][(w+j-1)%w]==1){cpt++;} + if (grille[(i+1)%w][(w+j-1)%w]==1){cpt++;} if (grille[(i+1)%w][(j)%w]==1){cpt++;} - if (grille[(i-1)%w][(j)%w]==1){cpt++;} - if (grille[(i-1)%w][(j+1)%w]==1){cpt++;} + if (grille[(w+i-1)%w][(j)%w]==1){cpt++;} + if (grille[(w+i-1)%w][(j+1)%w]==1){cpt++;} if (grille[(i)%w][(j+1)%w]==1){cpt++;} - if (grille[(i+1)%w][(j+1)%w]==1){cpt++;} + if (grille[(w+i+1)%w][(j+1)%w]==1){cpt++;} return (cpt); } @@ -25,6 +31,17 @@ void liberer_grille(int ** grille,int taille){ } +void init_grille( int **grille, int taille){ + int i; + int j; + printf("taille%d\n",taille); + for (i=0;i<taille;i++){ + for (j=0;j<taille;j++){ + grille[i][j]=0; + } + } +} + void iteration_suivante(int **grille, int **nouvelle_grille ,int *regles_survie, int *regles_naissances, int taille){ int i; int j; @@ -48,12 +65,12 @@ void iteration_suivante(int **grille, int **nouvelle_grille ,int *regles_survie, void changer_case(int **grille,int i,int j,int taille){ - - if (grille[i%taille][j%taille]==0){ - grille[i%taille][j%taille]=1; + printf("%d\n",grille[i][j]); + if (grille[i*taille][j/taille]==0){ + grille[i/taille][j/taille]=1; } else { - grille[i%taille][j%taille]=0; + grille[i/taille][j/taille]=0; } } diff --git a/travail_individuel/Beret/jeu_de_la_vie/src/map.h b/travail_individuel/Beret/jeu_de_la_vie/src/map.h index e8d00f8c78b249af8f47ce3926cd6b62467741e1..100f5559e959330bb2845fd4d85a4b52e8b4f4e6 100644 --- a/travail_individuel/Beret/jeu_de_la_vie/src/map.h +++ b/travail_individuel/Beret/jeu_de_la_vie/src/map.h @@ -12,6 +12,7 @@ int nombrevoisin(int **grille,int i , int j,int w); void liberer_grille(int **grille,int taille); +void init_grille( int **grille, int taille); void iteration_suivante(int **grille,int **nouvelle_grille, int *regles_mort, int *regles_naissances, int taille); void changer_case(int **grille,int i,int j,int taille); #endif \ No newline at end of file diff --git a/travail_individuel/Beret/jeu_de_la_vie/src/render.c b/travail_individuel/Beret/jeu_de_la_vie/src/render.c index 28ddbace061c86397896a10b6e37938f43b46184..54bedee52853959b7beaf7f1f0ad573a81070ac8 100644 --- a/travail_individuel/Beret/jeu_de_la_vie/src/render.c +++ b/travail_individuel/Beret/jeu_de_la_vie/src/render.c @@ -1,6 +1,6 @@ #include "render.h" -void init_sdl(SDL_Window *window_1,SDL_Renderer *renderer,int dimension_grille){ +void init_sdl(SDL_Window *window_1,SDL_Renderer *renderer,int dimension_tableau){ if (SDL_Init(SDL_INIT_VIDEO) != 0) { SDL_Log("Error : SDL initialisation - %s\n", @@ -9,9 +9,9 @@ void init_sdl(SDL_Window *window_1,SDL_Renderer *renderer,int dimension_grille){ window_1 = SDL_CreateWindow("Jeu de la vie", SDL_WINDOWPOS_CENTERED, - SDL_WINDOWPOS_CENTERED, 10*dimension_grille, - 10*dimension_grille, - SDL_WINDOW_OPENGL); + SDL_WINDOWPOS_CENTERED, dimension_tableau, + dimension_tableau, + SDL_WINDOW_RESIZABLE); if (window_1 == NULL) { SDL_Log("Error : SDL window 1 creation - %s\n", @@ -29,15 +29,20 @@ void init_sdl(SDL_Window *window_1,SDL_Renderer *renderer,int dimension_grille){ } -void dessiner_grille(SDL_Renderer* renderer, int **grille,int taille){ +void dessiner_grille(SDL_Renderer* renderer, int **grille,int taille, int taille_fen){ int i; int j; - + int taille_case= taille_fen/taille; + SDL_RenderClear(renderer); for (i=0;i<taille;i++){ for(j=0;j<taille;j++){ - SDL_Rect rectangle= {10*i,10*j,10,10}; + SDL_Rect rectangle; + rectangle.x = quelleTaillePourLesCases(width, taille_monde_delimitee)*i; + rectangle.y = quelleTaillePourLesCases(height, taille_monde_delimitee)*j; + rectangle.w = quelleTaillePourLesCases(width, taille_monde_delimitee)-2; + rectangle.h = quelleTaillePourLesCases(height, taille_monde_delimitee)-2; if (grille [i][j]==1){ SDL_SetRenderDrawColor(renderer, @@ -53,6 +58,7 @@ void dessiner_grille(SDL_Renderer* renderer, int **grille,int taille){ } } } + SDL_RenderPresent(renderer); } void fin_sdl(SDL_Renderer* renderer,SDL_Window *window_1){ @@ -62,4 +68,4 @@ void fin_sdl(SDL_Renderer* renderer,SDL_Window *window_1){ SDL_DestroyWindow(window_1); window_1 = NULL; SDL_Quit(); - } \ No newline at end of file +} \ No newline at end of file diff --git a/travail_individuel/Beret/jeu_de_la_vie/src/render.h b/travail_individuel/Beret/jeu_de_la_vie/src/render.h index b99c42e60e594dbfd20027698eb9e9679e82d8f5..cca60afcb88a00d47f622f2a2d995befa25f0b05 100644 --- a/travail_individuel/Beret/jeu_de_la_vie/src/render.h +++ b/travail_individuel/Beret/jeu_de_la_vie/src/render.h @@ -7,6 +7,6 @@ #include <SDL2/SDL.h> void init_sdl(SDL_Window *window_1 ,SDL_Renderer *renderer,int dimension_grille); -void dessiner_grille(SDL_Renderer* renderer, int ** grille, int taille); +void dessiner_grille(SDL_Renderer* renderer, int ** grille, int taille,int taille_fen); void fin_sdl(SDL_Renderer* renderer,SDL_Window *window_1); #endif \ No newline at end of file