From 7cced61b52cef944494d55657df6bcdf4a670cb2 Mon Sep 17 00:00:00 2001 From: Anis BEKKOUCHE Date: Sun, 24 Nov 2024 10:37:26 +0100 Subject: [PATCH] fdfdfq --- DEV1.1/SAE1.1/graphics.c | 32 +++++++++++++++++++ DEV1.1/SAE1.1/ia.c | 50 +++++++++++++++++++++++++++++ DEV1.1/SAE1.1/makefile | 33 +++++++++++++++++++ DEV1.1/SAE1.1/menu.c | 68 ++++++++++++++++++++++++++++++++++++++++ DEV1.1/SAE1.1/utils.c | 24 ++++++++++++++ 5 files changed, 207 insertions(+) create mode 100644 DEV1.1/SAE1.1/graphics.c create mode 100644 DEV1.1/SAE1.1/ia.c create mode 100644 DEV1.1/SAE1.1/makefile create mode 100644 DEV1.1/SAE1.1/menu.c create mode 100644 DEV1.1/SAE1.1/utils.c diff --git a/DEV1.1/SAE1.1/graphics.c b/DEV1.1/SAE1.1/graphics.c new file mode 100644 index 0000000..b80b7c1 --- /dev/null +++ b/DEV1.1/SAE1.1/graphics.c @@ -0,0 +1,32 @@ +#include "blocus.h" + +void EffacerAncienSprite(int x_ancien, int y_ancien, int largeur, int hauteur) { + ChoisirCouleurDessin(CouleurParNom("white")); + RemplirRectangle(x_ancien + 1, y_ancien + 1, largeur - 1, hauteur - 1); +} + +int ecran_de_fin(int gagnant) { + FermerGraphique(); + InitialiserGraphique(); + CreerFenetre(posx, posy, 400, 400); + if (gagnant == 1) { /* 1 = bleu*/ + EcrireTexte(90, 100, "Le joueur bleu gagne", 1); + } else if (gagnant == 2) { /* 2 = rouge*/ + EcrireTexte(90, 100, "Le joueur rouge gagne", 1); + } + DessinerRectangle(50, 150, 100, 50); + DessinerRectangle(250, 150, 100, 50); /*Nouvelle fenetre avec boutons quitter et rejouer*/ + EcrireTexte(70, 175, "Rejouer", 1); + EcrireTexte(270, 175, "Quitter", 1); + while (1) { + if (SourisCliquee()) { + SourisPosition(); + if (_X >= 50 && _X <= 150 && _Y >= 150 && _Y <= 200) { + FermerGraphique(); /*si coos clique = coos rectangle rejouer, fermer fenetre et relancer le jeu*/ + return main(); + } else if (_X >= 250 && _X <= 350 && _Y >= 150 && _Y <= 200) { + FermerGraphique(); /*si coos clique = coos rectangle quitter, fermer fenetre*/ + } + } + } +} \ No newline at end of file diff --git a/DEV1.1/SAE1.1/ia.c b/DEV1.1/SAE1.1/ia.c new file mode 100644 index 0000000..724c4f7 --- /dev/null +++ b/DEV1.1/SAE1.1/ia.c @@ -0,0 +1,50 @@ +#include "blocus.h" + +void CoordIA(int grille, int *coordX, int *coordY) { + int aleatoirex, aleatoirey; + srand(time(NULL)); + aleatoirex = rand(); + do { + aleatoirex = aleatoirex / 4; + } while (aleatoirex > grille); + aleatoirey = rand(); + do { + aleatoirey = aleatoirey / 4; + } while (aleatoirey > grille); + + *coordX = aleatoirex; + *coordY = aleatoirey; +} + +void CoordBlocageIA(int grille, int *blocX, int *blocY) { + int aleatoirex, aleatoirey; + srand(time(NULL)); + aleatoirex = rand(); + do { + aleatoirex = aleatoirex / 3; + } while (aleatoirex > grille); + aleatoirey = rand(); + do { + aleatoirey = aleatoirey / 3; + } while (aleatoirey > grille); + *blocX = aleatoirex; + *blocY = aleatoirey; +} + +void DeplacementIAX(int grille, int *deplacementX) { + int aleatoirex; + srand(time(NULL)); + do { + aleatoirex = rand() % 3 - 1; /*Génère -1, 0 ou 1*/ + } while (aleatoirex > grille); + *deplacementX = aleatoirex; +} + +void DeplacementIAY(int grille, int *deplacementY) { + int aleatoirey; + srand(time(NULL)); + do { + aleatoirey = rand() % 3 - 1; /*Génère -1, 0 ou 1*/ + } while (aleatoirey > grille); + *deplacementY = aleatoirey; +} \ No newline at end of file diff --git a/DEV1.1/SAE1.1/makefile b/DEV1.1/SAE1.1/makefile new file mode 100644 index 0000000..44f762d --- /dev/null +++ b/DEV1.1/SAE1.1/makefile @@ -0,0 +1,33 @@ +CC = gcc +CFLAGS = -ansi -pedantic -g +OFILES = menu.o blocus.o utils.o graphics.o ia.o +EXE = exe +LIBS = -lgraph + +install : $(EXE) + +$(EXE) : $(OFILES) + $(CC) $(CFLAGS) -o $(EXE) $(OFILES) $(LIBS) + +blocus.o : blocus.h menu.c graphics.c utils.c ia.c + +menu.o : blocus.h + $(CC) $(CFLAGS) -c menu.c $(END) + +graphics.o : blocus.h + $(CC) $(CFLAGS) -c graphics.c $(END) + +utils.o : blocus.h + $(CC) $(CFLAGS) -c utils.c $(END) + +ia.o : blocus.h + $(CC) $(CFLAGS) -c ia.c $(END) + +run : install + ./$(EXE) + +clean : + rm -r *.o + +cleanall : clean + rm -r $(EXE) diff --git a/DEV1.1/SAE1.1/menu.c b/DEV1.1/SAE1.1/menu.c new file mode 100644 index 0000000..ccc74ea --- /dev/null +++ b/DEV1.1/SAE1.1/menu.c @@ -0,0 +1,68 @@ +#include "blocus.h" + +char* textes[] = {"3x3", "4x4", "5x5", "6x6", "7x7", "8x8", "9x9"}; /*Tableau pour grille*/ + +void creer_menu(int *solo, int *multi, int *mode_grille, int *grille) { + int i; + + InitialiserGraphique(); + CreerFenetre(posx,posy,500,500); + EcrireTexte(200, 200, "Blocus", 2); + sleep(1); + EffacerEcran(CouleurParNom("white")); + sleep(1); + + DessinerRectangle(75, 75, 350, 100); + DessinerRectangle(75, 250, 350, 100); + + EcrireTexte(185, 135, "1 Joueur", 2); + EcrireTexte(180, 310, "2 Joueurs", 2); + + while (1) { + if (SourisCliquee()) { + SourisPosition(); + if (_X >= 75 && _X <= 425 && _Y >= 75 && _Y <= 175) { /*Si clique = rectangle 1 joueur*/ + EffacerEcran(CouleurParNom("white")); + *solo = 1; + *mode_grille = 1; + break; + } else if (_X >= 75 && _X <= 425 && _Y >= 250 && _Y <= 350) { /*Si clique = rectangle 2 joueurs*/ + EffacerEcran(CouleurParNom("white")); + *multi = 1; + *mode_grille = 1; + break; + } + } + } + + if (*mode_grille == 1) { + EcrireTexte(125, 100, "Taille de la grille", 2); + for (i = 0; i < 7; i++) { + DessinerRectangle(45 + i * 60, 150, 50, 50); /*Tracer rectangles pour choisir taille grille*/ + EcrireTexte(45 + i * 60 + 15, 175, textes[i], 1); /*Ecris texte tableau dans rectangles*/ + } + + while (*grille == 0) { + if (SourisCliquee()) { + SourisPosition(); + if (_Y >= 150 && _Y <= 200) { /*regarde si coordonnées clique = coos rectangle pour choisir taille grille*/ + if (_X >= 45 && _X <= 95) { + *grille = 3; + } else if (_X >= 105 && _X <= 155) { + *grille = 4; + } else if (_X >= 165 && _X <= 215) { + *grille = 5; + } else if (_X >= 225 && _X <= 275) { + *grille = 6; + } else if (_X >= 285 && _X <= 335) { + *grille = 7; + } else if (_X >= 345 && _X <= 395) { + *grille = 8; + } else if (_X >= 405 && _X <= 455) { + *grille = 9; + } + } + } + } + } +} \ No newline at end of file diff --git a/DEV1.1/SAE1.1/utils.c b/DEV1.1/SAE1.1/utils.c new file mode 100644 index 0000000..953ca56 --- /dev/null +++ b/DEV1.1/SAE1.1/utils.c @@ -0,0 +1,24 @@ +#include "blocus.h" + +int estAdjacent(int x1, int y1, int x2, int y2) { /*Fonction qui vérifie si deux cases sont adjacentes*/ + return (x1 == x2 + 1 && y1 == y2 + 1) || (x1 == x2 - 1 && y1 == y2 - 1) || + (x1 == x2 + 1 && y1 == y2 - 1) || (x1 == x2 - 1 && y1 == y2 + 1) || + (x1 == x2 + 1 && y1 == y2) || (x1 == x2 - 1 && y1 == y2) || + (x1 == x2 && y1 == y2 - 1) || (x1 == x2 && y1 == y2 + 1); +} + +void initialiser_grille(int grille) { + int i, j; + int ty = grille * taille_case; /*Taille en y de la grille choisie*/ + int tx = grille * taille_case; /*Taille en x de la grille choisie*/ + + FermerGraphique(); + InitialiserGraphique(); /* creation nouvelles fenetre aux dimensions de la grille choisie*/ + CreerFenetre(posx,posy,tx,ty+100); /*+100 pour indiquer tour joueur*/ + + for(i = 0; i < grille; i++){ + for(j = 0; j < grille; j++){ /*Tracer grille*/ + DessinerRectangle(j*taille_case, i*taille_case, taille_case, taille_case); + } + } +} \ No newline at end of file