diff --git a/travail_individuel/Beret/1exercice/Makefile b/travail_individuel/Beret/1exercice/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..9167bb67cab886cb61080de84825123d0a3f1cec --- /dev/null +++ b/travail_individuel/Beret/1exercice/Makefile @@ -0,0 +1,10 @@ +CC=gcc + +main:main.o + $(CC) -o main main.o -lm -lSDL2 + @echo "=> Lancer le programme avec ./main" + +main.o:main.c + $(CC) -c main.c -g -Wall -Wextra +clean: + rm -rf main main.o diff --git a/travail_individuel/Beret/1exercice/main.c b/travail_individuel/Beret/1exercice/main.c new file mode 100644 index 0000000000000000000000000000000000000000..d4d6373195912d3243d41e6d7a85981431d948df --- /dev/null +++ b/travail_individuel/Beret/1exercice/main.c @@ -0,0 +1,101 @@ +#include <SDL2/SDL.h> +#include <math.h> +#include <stdio.h> +#include <string.h> + +int main(int argc, char **argv) { + (void)argc; + (void)argv; + int x=0; + + + + SDL_Window + *window_1 = NULL,*window_2=NULL, *window_3=NULL,*window_4=NULL; // Future fenêtre de gauche + + /* 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); + } + + SDL_DisplayMode DM; + SDL_GetCurrentDisplayMode(0, &DM); + int Width = DM.w; + + /* Création de la fenêtre de gauche */ + window_1 = SDL_CreateWindow( + "Vague", // codage en utf8, donc accents possibles + x,300 + 100*cos(x/10), + 100,100, + SDL_WINDOW_RESIZABLE); + + if (window_1 == NULL) { + SDL_Log("Error : SDL window 1 creation - %s\n", + SDL_GetError()); // échec de la création de la fenêtre + SDL_Quit(); // On referme la SDL + exit(EXIT_FAILURE); + } + window_2 = SDL_CreateWindow( + "vague2", // codage en utf8, donc accents possibles + x-10,300 + 110*cos((x-10)/10), // à droite de la fenêtre de gauche + 80, 80, // largeur = 500, hauteur = 300 + 0); + + if (window_2 == NULL) { + SDL_Log("Error : SDL window 2 creation - %s\n", + SDL_GetError()); // échec de la création de la deuxième fenêtre + SDL_DestroyWindow(window_1); // la première fenétre (qui elle a été créée) doit être détruite + SDL_Quit(); + exit(EXIT_FAILURE); + } + window_3 = SDL_CreateWindow( + "vague3", // codage en utf8, donc accents possibles + x-20,300 + 130*cos((x-20)/10), // à droite de la fenêtre de gauche + 60, 60, // largeur = 500, hauteur = 300 + 0); + + if (window_3 == NULL) { + SDL_Log("Error : SDL window 3 creation - %s\n", + SDL_GetError()); // échec de la création de la deuxième fenêtre + SDL_DestroyWindow(window_2); + SDL_DestroyWindow(window_1); // la première fenétre (qui elle a été créée) doit être détruite + SDL_Quit(); + exit(EXIT_FAILURE); + } + + window_4 = SDL_CreateWindow( + "vague4", // codage en utf8, donc accents possibles + x-30,300 + 150*cos((x-30)/10), // à droite de la fenêtre de gauche + 40, 40, // largeur = 500, hauteur = 300 + 0); + + if (window_4 == NULL) { + SDL_Log("Error : SDL window 4 creation - %s\n", + SDL_GetError()); // échec de la création de la deuxième fenêtre + SDL_DestroyWindow(window_3); + SDL_DestroyWindow(window_2); + SDL_DestroyWindow(window_1); // la première fenétre (qui elle a été créée) doit être détruite + SDL_Quit(); + exit(EXIT_FAILURE); + } + while (x<Width){ + SDL_SetWindowPosition(window_1,x,300 + 100*cos((x)/10)); + SDL_SetWindowPosition(window_2,x-10,300 + 100*cos((x-10)/10)); + SDL_SetWindowPosition(window_3,x-20,300 + 100*cos((x-20)/10)); + SDL_SetWindowPosition(window_4,x-30,300 + 100*cos((x-30)/10)); + x=x+10; + + SDL_Delay(150); // Pause exprimée en ms + } + + SDL_DestroyWindow(window_4); + SDL_DestroyWindow(window_3); + SDL_DestroyWindow(window_2); + SDL_DestroyWindow(window_1); + + SDL_Quit(); // la SDL + + return 0; +} \ No newline at end of file