Skip to content
Snippets Groups Projects
Commit 24cddfa0 authored by maberet's avatar maberet
Browse files

Modification jeu de la vie Marc : résolution seg fault

parent 0be3e93a
No related branches found
No related tags found
No related merge requests found
File deleted
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#include "map.h" #include "map.h"
#include "render.h" #include "render.h"
int main (int argc, char **argv) { int main (int argc, char **argv) {
if (argc=! 2){ if (argc=! 2){
...@@ -18,12 +20,16 @@ int main (int argc, char **argv) { ...@@ -18,12 +20,16 @@ int main (int argc, char **argv) {
program_on= SDL_TRUE; program_on= SDL_TRUE;
int dimension_grille= atoi(argv[1]); 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_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 regles_survie [9]={0,0,1,1,0,0,0,0,0};
int **grille; int **grille=NULL;
int i; 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)); grille = malloc(dimension_grille*sizeof(int));
if (grille==NULL){ if (grille==NULL){
...@@ -43,7 +49,7 @@ int main (int argc, char **argv) { ...@@ -43,7 +49,7 @@ int main (int argc, char **argv) {
} }
} }
int ** nouvelle_grille; int ** nouvelle_grille=NULL;
nouvelle_grille = malloc(dimension_grille*sizeof(int)); nouvelle_grille = malloc(dimension_grille*sizeof(int));
if (nouvelle_grille==NULL){ if (nouvelle_grille==NULL){
...@@ -58,15 +64,20 @@ int main (int argc, char **argv) { ...@@ -58,15 +64,20 @@ int main (int argc, char **argv) {
fin_sdl(renderer,window_1); fin_sdl(renderer,window_1);
liberer_grille(nouvelle_grille,i-1); liberer_grille(nouvelle_grille,i-1);
printf("erreur alloc\n"); printf("erreur alloc\n");
exit(1); exit(0);
} }
} }
} }
init_grille(grille,dimension_grille);
printf("dim%d\n",grille[20][20]);
SDL_Event event; SDL_Event event;
while (program_on) { /// boucle d'event dessiner_grille(renderer,grille, dimension_grille,dimension_tableau);
if(SDL_PollEvent(&event)) { SDL_RenderPresent(renderer);
while (program_on) { // boucle d'event
while(SDL_PollEvent(&event)) {
switch (event.type) { switch (event.type) {
case SDL_QUIT: case SDL_QUIT:
...@@ -92,11 +103,11 @@ int main (int argc, char **argv) { ...@@ -92,11 +103,11 @@ int main (int argc, char **argv) {
break; break;
} }
} dessiner_grille(renderer,grille, dimension_grille,dimension_tableau);
dessiner_grille(renderer,grille, dimension_grille);
SDL_RenderPresent(renderer); SDL_RenderPresent(renderer);
SDL_Delay(20); }
SDL_Delay(100);
} }
liberer_grille(grille, dimension_grille); liberer_grille(grille, dimension_grille);
......
#include "map.h" #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 nombrevoisin(int **grille,int i , int j,int w){
int cpt=0; int cpt=0;
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][(j-1)%w]==1){cpt++;} if (grille[(i)%w][(w+j-1)%w]==1){cpt++;}
if (grille[(i+1)%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)%w]==1){cpt++;} if (grille[(w+i-1)%w][(j)%w]==1){cpt++;}
if (grille[(i-1)%w][(j+1)%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)%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); return (cpt);
} }
...@@ -25,6 +31,17 @@ void liberer_grille(int ** grille,int taille){ ...@@ -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){ void iteration_suivante(int **grille, int **nouvelle_grille ,int *regles_survie, int *regles_naissances, int taille){
int i; int i;
int j; int j;
...@@ -48,12 +65,12 @@ void iteration_suivante(int **grille, int **nouvelle_grille ,int *regles_survie, ...@@ -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){ void changer_case(int **grille,int i,int j,int taille){
printf("%d\n",grille[i][j]);
if (grille[i%taille][j%taille]==0){ if (grille[i*taille][j/taille]==0){
grille[i%taille][j%taille]=1; grille[i/taille][j/taille]=1;
} }
else { else {
grille[i%taille][j%taille]=0; grille[i/taille][j/taille]=0;
} }
} }
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
int nombrevoisin(int **grille,int i , int j,int w); int nombrevoisin(int **grille,int i , int j,int w);
void liberer_grille(int **grille,int taille); 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 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); void changer_case(int **grille,int i,int j,int taille);
#endif #endif
\ No newline at end of file
#include "render.h" #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) { if (SDL_Init(SDL_INIT_VIDEO) != 0) {
SDL_Log("Error : SDL initialisation - %s\n", SDL_Log("Error : SDL initialisation - %s\n",
...@@ -9,9 +9,9 @@ void init_sdl(SDL_Window *window_1,SDL_Renderer *renderer,int dimension_grille){ ...@@ -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", window_1 = SDL_CreateWindow("Jeu de la vie",
SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED, 10*dimension_grille, SDL_WINDOWPOS_CENTERED, dimension_tableau,
10*dimension_grille, dimension_tableau,
SDL_WINDOW_OPENGL); SDL_WINDOW_RESIZABLE);
if (window_1 == NULL) { if (window_1 == NULL) {
SDL_Log("Error : SDL window 1 creation - %s\n", 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){ ...@@ -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 i;
int j; int j;
int taille_case= taille_fen/taille;
SDL_RenderClear(renderer);
for (i=0;i<taille;i++){ for (i=0;i<taille;i++){
for(j=0;j<taille;j++){ 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){ if (grille [i][j]==1){
SDL_SetRenderDrawColor(renderer, SDL_SetRenderDrawColor(renderer,
...@@ -53,6 +58,7 @@ void dessiner_grille(SDL_Renderer* renderer, int **grille,int taille){ ...@@ -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){ void fin_sdl(SDL_Renderer* renderer,SDL_Window *window_1){
......
...@@ -7,6 +7,6 @@ ...@@ -7,6 +7,6 @@
#include <SDL2/SDL.h> #include <SDL2/SDL.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_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); void fin_sdl(SDL_Renderer* renderer,SDL_Window *window_1);
#endif #endif
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment