fdfdfq #1

Open
Anis BEKKOUCHE wants to merge 2 commits from bekkouch-patch-1 into main
5 changed files with 207 additions and 0 deletions
Showing only changes of commit 7cced61b52 - Show all commits

32
DEV1.1/SAE1.1/graphics.c Normal file
View File

@ -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*/
}
}
}
}

50
DEV1.1/SAE1.1/ia.c Normal file
View File

@ -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;
}

33
DEV1.1/SAE1.1/makefile Normal file
View File

@ -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)

68
DEV1.1/SAE1.1/menu.c Normal file
View File

@ -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;
}
}
}
}
}
}

24
DEV1.1/SAE1.1/utils.c Normal file
View File

@ -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);
}
}
}