Skip to content
Snippets Groups Projects
Commit 7266a035 authored by lucie's avatar lucie
Browse files

trie des fichiers avant merge

parent 4500066e
Branches PosPomme
No related tags found
No related merge requests found
CC=gcc
DEBUG=yes
ifeq ($(DEBUG),yes)
CFLAGS= -Wall -Og `sdl2-config --cflags` -MMD
LDFLAGS= `sdl2-config --libs` -lSDL2main -lSDL2 -lSDL2_image -lSDL2_ttf
else
CFLAGS= -Wall `sdl2-config --cflags` -MMD
LDFLAGS= `sdl2-config --libs` -lSDL2main -lSDL2 -lSDL2_image -lSDL2_ttf
endif
EXEC=exo
SRC= main.c jeu_de_la_vie.c vie_graph.c
OBJ= $(SRC:.c=.o)
DEP= $(SRC:.c=.d)
all: $(EXEC)
exo: $(OBJ)
$(CC) -o $@ $^ $(LDFLAGS)
main.o: main.c
$(CC) -c $< $(CFLAGS)
-include $(DEP)
%.o: %.c
$(CC) -c $< $(CFLAGS)
.PHONY: clean mrproper
clean:
@rm -rf *.o *.d
mrproper: clean
@rm -rf $(EXEC)
\ No newline at end of file
#include <SDL2/SDL.h>
#include <stdio.h>
#include <stdlib.h>
int regles[2][9] = {{0,0,0,1,0,0,0,0,0},{0,0,1,1,0,0,0,0,0}}; // regles[0] -> regles de naissance, regles[1] -> regles de survie
int ** init_tab(int nb_ligne, int nb_colonne)
{
int ** tab = (int **) malloc(nb_ligne*sizeof(int *));
if (tab != NULL)
{
for (int i=0; i < nb_ligne; i++)
{
tab[i] = (int*) malloc(nb_colonne*sizeof(int));
if (tab[i] == NULL)
{
fprintf(stderr, "Erreur lors de l'allocation du tableau\n");
for (i=i-1; i >= 0; i--)
{
free(tab[i]);
}
free(tab);
tab = NULL;
exit(EXIT_FAILURE);
}
}
}
else
{
fprintf(stderr, "Erreur lors de l'allocation du tableau\n");
tab = NULL;
exit(EXIT_FAILURE);
}
return tab;
}
void free_tab(int ** tab, int nb_ligne)
{
for (int i=0; i < nb_ligne; i++)
{
free(tab[i]);
}
free(tab);
}
void copie_tab(int ** src, int ** dest, int nb_ligne,int nb_colonne)
{
for (int i=0; i < nb_ligne; i++)
{
for (int j=0; j < nb_colonne; j++)
{
dest[i][j] = src[i][j];
}
}
}
void affiche_tab(int ** tab, int nb_ligne, int nb_colonne)
{
for (int i=0; i < nb_ligne; i++)
{
for (int j=0; j < nb_colonne; j++)
{
printf("%d ", tab[i][j]);
}
printf("\n");
}
printf("\n");
}
void gen_tab(int ** tab, int nb_ligne, int nb_colonne)
{
for (int i=0; i < nb_ligne; i++)
{
for (int j=0; j < nb_colonne; j++)
{
tab[i][j] = 0;
}
}
int milieu_x = (nb_colonne/2)-1;
int milieu_y = (nb_ligne/2)-1;
tab[milieu_y][milieu_x] = 1;
tab[milieu_y][milieu_x-1] = 1;
tab[milieu_y+1][milieu_x] = 1;
tab[milieu_y-1][milieu_x] = 1;
tab[milieu_y+1][milieu_x+1] = 1;
}
int nb_voisins(int ** tab, int nb_ligne, int nb_colonne, int x, int y)
{
int nb = 0 - tab[y][x];
for (int i=-1; i<=1; i++)
{
for (int j=-1; j<=1; j++)
{
nb += tab[(y+i+nb_colonne)%nb_colonne][(x+j+nb_ligne)%nb_ligne];
}
}
return nb;
}
int maj_situation(int ** tab_prec, int ** tab, int nb_ligne, int nb_colonne)
{
int nb_vivants = 0;
copie_tab(tab, tab_prec, nb_ligne, nb_colonne);
for (int i=0; i < nb_ligne; i++)
{
for (int j=0; j < nb_colonne; j++)
{
if (regles[tab_prec[i][j]][nb_voisins(tab_prec, nb_ligne, nb_colonne, i, j)])
{
tab[i][j] = 1;
nb_vivants++;
}
else
{
tab[i][j] = 0;
}
}
}
return nb_vivants;
}
\ No newline at end of file
#define GRILLE_L 10
#define GRILLE_H 10
int ** init_tab(int nb_ligne, int nb_colonne);
void free_tab(int ** tab, int nb_ligne);
void copie_tab(int ** src, int ** dest, int nb_ligne,int nb_colonne);
void affiche_tab(int ** tab, int nb_ligne, int nb_colonne);
void gen_tab(int ** tab, int nb_ligne, int nb_colonne);
int nb_voisins(int ** tab, int nb_ligne, int nb_colonne, int x, int y);
int maj_situation(int ** tab_prec, int ** tab, int nb_ligne, int nb_colonne);
\ No newline at end of file
#include "vie_graph.h"
int main(int argc, char** argv){
int retour = main_margot();
return retour;
}
\ No newline at end of file
#include <SDL2/SDL.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "jeu_de_la_vie.h"
#define HAUTEUR_DEFAUT 480
#define LARGEUR_DEFAUT 640
int main_margot() {
SDL_Window * fenetre = NULL;
SDL_Renderer * renderer = NULL;
int largeur = LARGEUR_DEFAUT, hauteur = HAUTEUR_DEFAUT;
int continuer = 1, nb_vivants = 0;
/*
// Initialisation de la SDL + gestion de l'échec possible
if (SDL_Init(SDL_INIT_VIDEO) < 0) {
SDL_Log("Error : SDL initialisation - %s\n", SDL_GetError()); // l'initialisation de la SDL a échoué
exit(EXIT_FAILURE);
}
else
{
// Récupération de la taille de l'écran
int i = 0;
SDL_DisplayMode ecran;
int code_retour = SDL_GetCurrentDisplayMode(i, &ecran);
if(code_retour != 0)
{
SDL_Log("Impossible de récupérer le mode d'affichage pour l'affichage vidéo #%d : %s", i, SDL_GetError());
}
else
{
SDL_Log("Afichage #%d: mode d'affichage courrant %dx%dpx @ %dhz.", i, ecran.w, ecran.h, ecran.refresh_rate);
largeur = ecran.w;
hauteur = ecran.h;
}
if (SDL_CreateWindowAndRenderer(largeur, hauteur, SDL_WINDOW_MAXIMIZED, &fenetre, &renderer) < 0)
{
SDL_Log("Erreur d'initialisation de la fenêtre et du renderer : %s\n", SDL_GetError());
exit(EXIT_FAILURE);
}
else
{
SDL_SetWindowTitle(fenetre, "Jeu de la vie");
SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear");
SDL_RenderSetLogicalSize(renderer, largeur, hauteur);
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
SDL_RenderClear(renderer);
SDL_RenderPresent(renderer);
SDL_UpdateWindowSurface(fenetre);
SDL_Delay( 1000 );
}
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(fenetre);
SDL_Quit();
}
*/
int ** tab = init_tab(GRILLE_H, GRILLE_L);
if (tab != NULL)
{
int ** tab_prec = init_tab(GRILLE_H, GRILLE_L);
if (tab_prec != NULL)
{
gen_tab(tab, GRILLE_H, GRILLE_L);
while (continuer)
{
affiche_tab(tab, GRILLE_H, GRILLE_L);
nb_vivants = maj_situation(tab_prec, tab, GRILLE_H, GRILLE_L);
if(nb_vivants == 0)
{
affiche_tab(tab, GRILLE_H, GRILLE_L);
printf("Toutes les cellules sont mortes...\n");
continuer = 0;
}
sleep(2);
}
free_tab(tab_prec, GRILLE_H);
}
free_tab(tab, GRILLE_H);
}
return 0;
}
\ No newline at end of file
int main_margot();
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment