diff --git a/travail_de_groupe/jeu_appren_par_renfo/Makefile b/travail_de_groupe/jeu_appren_par_renfo/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..8889fb44b1f7075b3e20fcd49ce9f4675174a743 --- /dev/null +++ b/travail_de_groupe/jeu_appren_par_renfo/Makefile @@ -0,0 +1,23 @@ +CC=gcc + +LDFLAG=$(shell sdl2-config --cflags --libs) -lm -lSDL2_ttf -D_REENTRANT -lSDL2_image -pthread +CFLAG=-Wall $(shell sdl2-config --cflags --libs) + +EXEC=run +SRC=$(wildcard src/*.c) +OBJ=$(SRC:.c=.o) + +all:$(EXEC) + +$(EXEC):$(OBJ) + $(CC) -o $@ $^ $(LDFLAG) + mv $^ bin/ + +%.o:%.c + $(CC) -o $@ -c $< $(CFLAG) + +.PHONY:clean + +clean: + rm -rf bin/*.o + rm -rf $(EXEC) \ No newline at end of file diff --git a/travail_de_groupe/jeu_appren_par_renfo/fichier.txt b/travail_de_groupe/jeu_appren_par_renfo/fichier.txt deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/gest_event.c b/travail_de_groupe/jeu_appren_par_renfo/src/gest_event.c new file mode 100644 index 0000000000000000000000000000000000000000..d57aab50b03e5c9634d50d5ce73e9cf84fc87b70 --- /dev/null +++ b/travail_de_groupe/jeu_appren_par_renfo/src/gest_event.c @@ -0,0 +1,42 @@ +#include "gest_event.h" + + +void gestMenu(){ + SDL_Event event; + while (SDL_PollEvent(&event)){ + switch(event.type) + { + case SDL_QUIT: + running = 0; + break; + + case SDL_KEYUP: + switch (event.key.keysym.sym) + { + case SDLK_ESCAPE: + running = 0; + continue; + + default: + continue; + } + break; + + default: + continue; + } + } + SDL_Delay(5); +} + + +void *EventLoop(void *arg){ + while(running){ + switch(game_state){ + case MENU : gestMenu();break; + //case GAME : gestGame();break; + default:printf("game state fault");break; + } + } + return NULL; +} \ No newline at end of file diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/gest_event.h b/travail_de_groupe/jeu_appren_par_renfo/src/gest_event.h new file mode 100644 index 0000000000000000000000000000000000000000..6b2a7ad2c07d35b89720c64e22dd00e0888b43d1 --- /dev/null +++ b/travail_de_groupe/jeu_appren_par_renfo/src/gest_event.h @@ -0,0 +1,10 @@ +#ifndef _GEST_EVENT_H_ +#define _GEST_EVENT_H_ + + +#include "main.h" +#include "render.h" + +void *EventLoop(void *arg); + +#endif \ No newline at end of file diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/main.c b/travail_de_groupe/jeu_appren_par_renfo/src/main.c new file mode 100644 index 0000000000000000000000000000000000000000..f75b6386f524623f953f62d44fa395839234014c --- /dev/null +++ b/travail_de_groupe/jeu_appren_par_renfo/src/main.c @@ -0,0 +1,13 @@ +#include "main.h" + +int running; +int game_state; + + +int main(){ + running = 1; + game_state = MENU; + + MainLoop(); + +} \ No newline at end of file diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/main.h b/travail_de_groupe/jeu_appren_par_renfo/src/main.h new file mode 100644 index 0000000000000000000000000000000000000000..eb08e389951121f3d8efafe7a7b22f11dae367fe --- /dev/null +++ b/travail_de_groupe/jeu_appren_par_renfo/src/main.h @@ -0,0 +1,28 @@ +#ifndef _MAIN_HEADER_ +#define _MAIN_HEADER_ + + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <time.h> +#include <unistd.h> + +#include <SDL2/SDL.h> +#include <SDL2/SDL_image.h> +#include <SDL2/SDL_ttf.h> + +#include <pthread.h> + +#include "render.h" +#include "gest_event.h" + + +#define MENU 0 +#define GAME 1 + +extern int running; +extern int game_state; + + +#endif \ No newline at end of file diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/render.c b/travail_de_groupe/jeu_appren_par_renfo/src/render.c new file mode 100644 index 0000000000000000000000000000000000000000..b0f7d94e2fee0692bb61ab8895cbf41e3a4b51b4 --- /dev/null +++ b/travail_de_groupe/jeu_appren_par_renfo/src/render.c @@ -0,0 +1,75 @@ +#include "render.h" + +SDL_Window *window; +SDL_Renderer *renderer; + +TTF_Font *RobotoFont; + +void CreateWindow(){ + SDL_DisplayMode ScreenDimension; + + if (SDL_Init(SDL_INIT_VIDEO) != 0){ + printf("Couldn't create window."); + exit(EXIT_FAILURE); + } + + SDL_GetCurrentDisplayMode(0, &ScreenDimension); + + window = SDL_CreateWindow("Game Of Life", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, ScreenDimension.w, ScreenDimension.h, SDL_WINDOW_INPUT_GRABBED | SDL_WINDOW_SHOWN | SDL_WINDOW_FULLSCREEN_DESKTOP); + + if (window == NULL){ + printf("Couldn't create window"); + exit(EXIT_FAILURE); + } + + renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_TARGETTEXTURE | SDL_RENDERER_PRESENTVSYNC); + + if (renderer == NULL){ + printf("Couldn't create renderer."); + exit(EXIT_FAILURE); + } + + if (TTF_Init() == -1) + { + exit(EXIT_FAILURE); + } + + RobotoFont = TTF_OpenFont("Res/Roboto-Black.ttf", 50); + +} + + +void MainLoop(){ + CreateWindow(); + + unsigned int a = SDL_GetTicks(); + unsigned int b = SDL_GetTicks(); + double delta = 0; + + pthread_t eventThread; + if (pthread_create(&eventThread, NULL, EventLoop, NULL) != 0){ + printf("Couldn't create thread."); + exit(EXIT_FAILURE); + } + + while (running){ + a = SDL_GetTicks(); + delta = (a - b) / 1000.0; + if (delta > 1/FPS_TO_GET){ + b = a; + switch (game_state){ + case MENU: + //Menu(); + break; + case GAME: + //Game(); + break; + } + } + else { + // fait dormir le thread pour garder des ressources + usleep(1000 * (1/FPS_TO_GET - delta)); + } + + } +} \ No newline at end of file diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/render.h b/travail_de_groupe/jeu_appren_par_renfo/src/render.h new file mode 100644 index 0000000000000000000000000000000000000000..75f94e37b205ac0527e22d0a41fdef98e84dc682 --- /dev/null +++ b/travail_de_groupe/jeu_appren_par_renfo/src/render.h @@ -0,0 +1,15 @@ +#ifndef _RENDER_H_ +#define _RENDER_H_ + +#include "main.h" +#include "gest_event.h" + +#define FPS_TO_GET 60 + +extern SDL_Window *window; +extern SDL_Renderer *renderer; + + +void MainLoop(); + +#endif \ No newline at end of file