fdfdfq #1
32
DEV1.1/SAE1.1/graphics.c
Normal file
32
DEV1.1/SAE1.1/graphics.c
Normal 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
50
DEV1.1/SAE1.1/ia.c
Normal 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
33
DEV1.1/SAE1.1/makefile
Normal 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
68
DEV1.1/SAE1.1/menu.c
Normal 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
24
DEV1.1/SAE1.1/utils.c
Normal 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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user