diff --git a/Makefile b/Makefile index f50e866..bbc9870 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,6 @@ but : game OFILES = taille.o \ menu.o \ - grille.o \ nbjoueur.o \ nbjoueur2.o \ boutonJVJ.o \ @@ -27,7 +26,7 @@ CFLAGS = -Wall -ansi -pedantic # CHAPITRE 3 : DEPENDANCES (REGLES IMPLICITES) -menu.o : taille.h menu.h nbjoueur.h nbjoueur2.h boutonJVJ.h grille.h +menu.o : taille.h menu.h nbjoueur.h nbjoueur2.h boutonJVJ.h taille.o : taille.h jeu.h @@ -49,8 +48,6 @@ boutonJVJ.o : boutonJVJ.h nbjoueur2.o : nbjoueur2.h -grille.o : grille.h - jeu.o : jeu.h menu.h comportementJCJ.h comportementJCIA.h main.o : jeu.h diff --git a/comportementJCIA.c b/comportementJCIA.c index 5a54869..f6603ab 100644 --- a/comportementJCIA.c +++ b/comportementJCIA.c @@ -1,6 +1,196 @@ #include +#include + +#include "definirMaxXY.h" +#include "initialisation.h" +#include "coordoner.h" +#include "effacehaut.h" +#include "verificationblock.h" -void compJCIA(int taille){ - DessinerSegment(1, 1, 100, 100); +int compJCIA(int taille){ + int fin = 0, tabx = 0, taby = 0, tour = 0, initi = 0, SourisX = 0, SourisY = 0, initialiser = 0; + int maxX = 0, maxY = 0, joueurx1 = 0, joueury1 = 0, joueurx2 = 0, joueury2 = 0, placer = 1; + int emplacementcooX1 = 0, emplacementcooX2 = 0, emplacementcooY1 = 0, emplacementcooY2 = 0; + int grille[taille+2][taille+2]; + int empblock[4] = {0, 0, 0, 0}, empperso[4] = {0, 0, 0, 0}; + maxX = DefMaxX(taille); + maxY = DefMaxY(taille); + for(tabx = 0; tabx < taille + 2; tabx++){ + for(taby = 0; taby < taille + 2; taby++){ + grille[tabx][taby] = 0; + if(taby == 0 || taby == taille + 1 || tabx == 0 || tabx == taille + 1){ + grille[tabx][taby] = 9; + } + } + } + EcrireTexte(30, 40, "Joueur 1 choisissez l'emplacement de base du pion 1", 1); + while(initi == 0){ + if(SourisCliquee()){ + SourisX = _X; + SourisY = _Y; + } + if(initialiser == 0){ + if(SourisX >= 50 && SourisX <= maxX && SourisY >= 100 && SourisY <= maxY){ + ChargerSprite("pion1.png"); + joueurx1 = initialisationX(SourisX, maxX, taille); + joueury1 = initialisationY(SourisY, maxY, taille); + emplacementcooX1 = coordonerX(SourisX); + emplacementcooY1 = coordonerY(SourisY); + AfficherSprite(1, emplacementcooX1, emplacementcooY1); + grille[joueury1][joueurx1] = 1; + initialiser++; + SourisX = 0; + SourisY = 0; + Efface(); + EcrireTexte(30, 40, "Joueur 2 choisissez l'emplacement de base du pion 2", 1); + } + }else if (initialiser == 1){ + SourisX = rand() % maxX; + SourisY = rand() % maxY; + if(SourisX >= 50 && SourisX <= maxX && SourisY >= 100 && SourisY <= maxY){ + ChargerSprite("pion2.png"); + joueurx2 = initialisationX(SourisX, maxX, taille); + joueury2 = initialisationY(SourisY, maxY, taille); + if(grille[joueury2][joueurx2] != 1){ + emplacementcooX2 = coordonerX(SourisX); + emplacementcooY2 = coordonerY(SourisY); + AfficherSprite(2, emplacementcooX2, emplacementcooY2); + grille[joueury2][joueurx2] = 2; + initialiser++; + initi++; + } + SourisX = 0; + SourisY = 0; + } + } + } + ChargerSprite("croix1.png"); + ChargerSprite("croix2.png"); + while(fin == 0){ + if(tour == 0){ + Efface(); + EcrireTexte(30, 40, "Tour du joueur 1", 2); + SourisX = 0; + SourisY = 0; + while(placer == 1){ + if(SourisCliquee()){ + SourisX = _X; + SourisY = _Y; + } + VerifBlock1(SourisX, SourisY, maxX, maxY, taille, empperso); + if(grille[joueury1+1][joueurx1] != 0 && grille[joueury1-1][joueurx1] != 0 && grille[joueury1+1][joueurx1+1] != 0 && grille[joueury1-1][joueurx1-1] != 0 && grille[joueury1][joueurx1+1] != 0 && grille[joueury1][joueurx1-1] != 0){ + LibererSprite(1); + LibererSprite(2); + LibererSprite(3); + LibererSprite(4); + return 3; + } + if(empperso[0] != 0){ + if(grille[empperso[1]][empperso[0]] == 0 && (empperso[1] <= joueury1+1 && empperso[1] >= joueury1-1) && (empperso[0] <= joueurx1+1 && empperso[0] >= joueurx1-1)){ + grille[joueury1][joueurx1] = 0; + ChoisirCouleurDessin(CouleurParNom("white")); + RemplirRectangle(emplacementcooX1, emplacementcooY1, 40, 40); + ChoisirCouleurDessin(CouleurParNom("black")); + joueurx1 = empperso[0]; + joueury1 = empperso[1]; + empperso[2] = coordonerX(SourisX); + empperso[3] = coordonerY(SourisY); + grille[empperso[1]][empperso[0]] = 1; + AfficherSprite(1, empperso[2], empperso[3]); + emplacementcooX1 = empperso[2]; + emplacementcooY1 = empperso[3]; + placer = 0; + } + } + } + empperso[0] = 0; + placer = 1; + tour++; + }else if(tour == 1){ + Efface(); + EcrireTexte(30, 40, "Joueur 1 place le bloc", 2); + SourisX = 0; + SourisY = 0; + while(placer == 1){ + if(SourisCliquee()){ + SourisX = _X; + SourisY = _Y; + } + VerifBlock1(SourisX, SourisY, maxX, maxY, taille, empblock); + if(empblock[0] != 0){ + if(grille[empblock[1]][empblock[0]] == 0){ + empblock[2] = coordonerX(SourisX); + empblock[3] = coordonerY(SourisY); + grille[empblock[1]][empblock[0]] = 3; + AfficherSprite(3, empblock[2], empblock[3]); + placer = 0; + } + } + } + empblock[0] = 0; + placer = 1; + tour++; + }else if(tour == 2){ + Efface(); + EcrireTexte(30, 40, "Tour du joueur 2", 2); + SourisX = 0; + SourisY = 0; + while(placer == 1){ + SourisX = rand() % maxX; + SourisY = rand() % maxY; + VerifBlock1(SourisX, SourisY, maxX, maxY, taille, empperso); + if(grille[joueury2+1][joueurx2] != 0 && grille[joueury2-1][joueurx2] != 0 && grille[joueury2+1][joueurx2+1] != 0 && grille[joueury2-1][joueurx2-1] != 0 && grille[joueury2][joueurx2+1] != 0 && grille[joueury2][joueurx2-1] != 0){ + LibererSprite(1); + LibererSprite(2); + LibererSprite(3); + LibererSprite(4); + return 1; + } + if(empperso[0] != 0){ + if(grille[empperso[1]][empperso[0]] == 0 && (empperso[1] <= joueury2+1 && empperso[1] >= joueury2-1) && (empperso[0] <= joueurx2+1 && empperso[0] >= joueurx2-1)){ + grille[joueury2][joueurx2] = 0; + ChoisirCouleurDessin(CouleurParNom("white")); + RemplirRectangle(emplacementcooX2, emplacementcooY2, 40, 40); + ChoisirCouleurDessin(CouleurParNom("black")); + joueurx2 = empperso[0]; + joueury2 = empperso[1]; + empperso[2] = coordonerX(SourisX); + empperso[3] = coordonerY(SourisY); + grille[empperso[1]][empperso[0]] = 2; + AfficherSprite(2, empperso[2], empperso[3]); + emplacementcooX2 = empperso[2]; + emplacementcooY2 = empperso[3]; + placer = 0; + } + } + } + empperso[0] = 0; + placer = 1; + tour++; + + }else if(tour == 3){ + Efface(); + EcrireTexte(30, 40, "Joueur 2 place le bloc", 2); + SourisX = 0; + SourisY = 0; + while(placer == 1){ + SourisX = rand() % maxX; + SourisY = rand() % maxY; + VerifBlock1(SourisX, SourisY, maxX, maxY, taille, empblock); + if(empblock[0] != 0){ + if(grille[empblock[1]][empblock[0]] == 0){ + empblock[2] = coordonerX(SourisX); + empblock[3] = coordonerY(SourisY); + grille[empblock[1]][empblock[0]] = 4; + AfficherSprite(4, empblock[2], empblock[3]); + placer = 0; + } + } + } + empblock[0] = 0; + placer = 1; + tour = 0; + } + } } diff --git a/grille.c b/grille.c deleted file mode 100644 index 0d18e7c..0000000 --- a/grille.c +++ /dev/null @@ -1,27 +0,0 @@ -#include - - -void Grille(int taille){ - int bord = 0, x = 100, xx = 50, y = 100, yy = 100; - ChoisirCouleurDessin(CouleurParNom("Black")); - for(bord = 0; bord < taille; bord++){ - DessinerSegment(50, 100, x, 100); /* Dessine le bord du haut de la grille */ - x += 50; - } - x -= 50; /* Enlève le surplus de la fonction for */ - for(bord = 0; bord <= taille; bord++){ - DessinerSegment(50, 100, 50 , y); /* Dessine les barre latérale en fonction de la taille choisie */ - DessinerSegment(x, 100, x, y); - y += 50; - } - y -= 50; /* Enlève le surplus de la fonction for */ - DessinerSegment(50, y, x, y); - for(bord = 0; bord <= taille; bord++){ - DessinerSegment(50, yy, x, yy); /* Dessine les barre horizontale de l'intérieur de la grille */ - yy += 50; - } - for(bord = 0; bord <= taille; bord++){ - DessinerSegment(xx, 100, xx, y); /* Dessine les barre verticale de l'intérieur de la grille */ - xx += 50; - } -} diff --git a/grille.h b/grille.h deleted file mode 100644 index c5fd477..0000000 --- a/grille.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef GRILLE_H -#define GRILLE_H - - - -void Grille(int taille); - - -#endif diff --git a/main.c b/main.c index f05909e..2e57c71 100644 --- a/main.c +++ b/main.c @@ -1,19 +1,18 @@ #include #include - -#include - #include "jeu.h" int main (void){ - int victoire = 0, choix = 0; + int victoire = 0, choix = 0, SourisX = 0, SourisY = 0; InitialiserGraphique(); CreerFenetre(50, 50, 700, 500); /* Initialise la fenetre puis lance le programme jeu.c qui lancera d'autre programme */ while(1){ + choix = 0; + SourisX = 0; + SourisY = 0; EffacerEcran(CouleurParNom("white")); victoire = Jeu(); - printf("victoire : %d\n", victoire); FermerGraphique(); InitialiserGraphique(); CreerFenetre(50, 50, 700, 500); @@ -23,10 +22,21 @@ int main (void){ EcrireTexte(120, 135, "Rejouer ?", 2); DessinerRectangle(400, 100, 200, 50); EcrireTexte(420, 135, "Quitter ?", 2); + if(SourisCliquee()){ + SourisX = _X; + SourisY = _Y; + } + if(SourisX <= 300 && SourisX >= 100 && SourisY <= 150 && SourisY >= 100){ + choix++; + }else if(SourisX <= 600 && SourisX >= 400 && SourisY <= 150 && SourisY >= 100){ + choix = 5; + } if(victoire == 1){ EcrireTexte(300, 235, "Joueur 1 a gagner !", 2); }else if (victoire == 2){ EcrireTexte(300, 235, "Joueur 2 a gagner !", 2); + }else if (victoire == 3){ + EcrireTexte(300, 235, "L'IA a gagner !", 2); } if(choix == 5){ return EXIT_SUCCESS; diff --git a/menu.c b/menu.c index b50f9d9..bc5702a 100644 --- a/menu.c +++ b/menu.c @@ -4,7 +4,6 @@ #include "nbjoueur.h" #include "nbjoueur2.h" #include "boutonJVJ.h" -#include "grille.h" int Menu(int *retour) { @@ -39,3 +38,31 @@ int Menu(int *retour) { retour[0] = choix; retour[1] = echotaille; } + + + +void Grille(int taille){ + int bord = 0, x = 100, xx = 50, y = 100, yy = 100; + ChoisirCouleurDessin(CouleurParNom("Black")); + for(bord = 0; bord < taille; bord++){ + DessinerSegment(50, 100, x, 100); /* Dessine le bord du haut de la grille */ + x += 50; + } + x -= 50; /* Enlève le surplus de la fonction for */ + for(bord = 0; bord <= taille; bord++){ + DessinerSegment(50, 100, 50 , y); /* Dessine les barre latérale en fonction de la taille choisie */ + DessinerSegment(x, 100, x, y); + y += 50; + } + y -= 50; /* Enlève le surplus de la fonction for */ + DessinerSegment(50, y, x, y); + for(bord = 0; bord <= taille; bord++){ + DessinerSegment(50, yy, x, yy); /* Dessine les barre horizontale de l'intérieur de la grille */ + yy += 50; + } + for(bord = 0; bord <= taille; bord++){ + DessinerSegment(xx, 100, xx, y); /* Dessine les barre verticale de l'intérieur de la grille */ + xx += 50; + } +} + diff --git a/menu.h b/menu.h index 9c318d3..f95f649 100644 --- a/menu.h +++ b/menu.h @@ -2,8 +2,8 @@ #define MENU_H - - int Menu(int *retour); +void Grille(int taille); + #endif