2024-11-13 11:07:47 +01:00
|
|
|
#include <graph.h>
|
|
|
|
|
|
2024-11-15 09:50:42 +01:00
|
|
|
|
|
|
|
|
#include "definirMaxXY.h"
|
|
|
|
|
#include "initialisation.h"
|
2024-11-15 15:45:18 +01:00
|
|
|
#include "coordoner.h"
|
2024-11-15 09:50:42 +01:00
|
|
|
|
|
|
|
|
|
2024-11-18 16:15:25 +01:00
|
|
|
int compJCJ(int taille){
|
2024-11-18 17:18:12 +01:00
|
|
|
int fin = 0, tabx = 0, taby = 0, tour = 0, initi = 0, SourisX = 0, SourisY = 0, initialiser = 0;
|
2024-11-15 17:22:14 +01:00
|
|
|
int maxX = 0, maxY = 0, joueurx1 = 0, joueury1 = 0, joueurx2 = 0, joueury2 = 0, placer = 1;
|
2024-11-15 15:45:18 +01:00
|
|
|
int emplacementcooX1 = 0, emplacementcooX2 = 0, emplacementcooY1 = 0, emplacementcooY2 = 0;
|
2024-11-14 14:50:14 +01:00
|
|
|
int grille[taille+2][taille+2];
|
2024-11-15 21:17:54 +01:00
|
|
|
int empblock[4] = {0, 0, 0, 0}, empperso[4] = {0, 0, 0, 0};
|
2024-11-21 16:01:11 +01:00
|
|
|
maxX = DefMaxX(taille); /* Defini les maximum de X et Y */
|
2024-11-15 09:50:42 +01:00
|
|
|
maxY = DefMaxY(taille);
|
2024-11-14 14:50:14 +01:00
|
|
|
for(tabx = 0; tabx < taille + 2; tabx++){
|
|
|
|
|
for(taby = 0; taby < taille + 2; taby++){
|
2024-11-21 16:01:11 +01:00
|
|
|
grille[tabx][taby] = 0; /* Defini la grille */
|
2024-11-14 14:50:14 +01:00
|
|
|
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);
|
2024-11-21 16:01:11 +01:00
|
|
|
while(initi == 0){ /* Initialise la position des deux joueurs */
|
|
|
|
|
if(SourisCliquee()){ /* Recupère les coordonées de la souris */
|
2024-11-14 14:50:14 +01:00
|
|
|
SourisX = _X;
|
|
|
|
|
SourisY = _Y;
|
|
|
|
|
}
|
2024-11-15 09:50:42 +01:00
|
|
|
if(initialiser == 0){
|
2024-11-15 15:45:18 +01:00
|
|
|
if(SourisX >= 50 && SourisX <= maxX && SourisY >= 100 && SourisY <= maxY){
|
2024-11-21 16:01:11 +01:00
|
|
|
ChargerSprite("./image/pion1.png"); /* Charge l'image, trouve l'index par la position de la souris ainsi que les coordonées */
|
2024-11-15 15:45:18 +01:00
|
|
|
joueurx1 = initialisationX(SourisX, maxX, taille);
|
|
|
|
|
joueury1 = initialisationY(SourisY, maxY, taille);
|
|
|
|
|
emplacementcooX1 = coordonerX(SourisX);
|
|
|
|
|
emplacementcooY1 = coordonerY(SourisY);
|
2024-11-21 16:01:11 +01:00
|
|
|
AfficherSprite(1, emplacementcooX1, emplacementcooY1); /* Affiche le sprite */
|
2024-11-15 15:45:18 +01:00
|
|
|
grille[joueury1][joueurx1] = 1;
|
|
|
|
|
initialiser++;
|
|
|
|
|
SourisX = 0;
|
|
|
|
|
SourisY = 0;
|
|
|
|
|
Efface();
|
|
|
|
|
EcrireTexte(30, 40, "Joueur 2 choisissez l'emplacement de base du pion 2", 1);
|
2024-11-14 14:50:14 +01:00
|
|
|
}
|
2024-11-15 09:50:42 +01:00
|
|
|
}else if (initialiser == 1){
|
2024-11-15 15:45:18 +01:00
|
|
|
if(SourisX >= 50 && SourisX <= maxX && SourisY >= 100 && SourisY <= maxY){
|
2024-11-21 16:01:11 +01:00
|
|
|
ChargerSprite("./image/pion2.png");
|
2024-11-15 15:45:18 +01:00
|
|
|
joueurx2 = initialisationX(SourisX, maxX, taille);
|
2024-11-15 17:22:14 +01:00
|
|
|
joueury2 = initialisationY(SourisY, maxY, taille);
|
2024-11-21 16:01:11 +01:00
|
|
|
if(grille[joueury2][joueurx2] != 1){ /* Si l'emplacement n'est pas déjà pris par l'user 1 */
|
2024-11-15 15:45:18 +01:00
|
|
|
emplacementcooX2 = coordonerX(SourisX);
|
|
|
|
|
emplacementcooY2 = coordonerY(SourisY);
|
|
|
|
|
AfficherSprite(2, emplacementcooX2, emplacementcooY2);
|
|
|
|
|
grille[joueury2][joueurx2] = 2;
|
|
|
|
|
initialiser++;
|
|
|
|
|
initi++;
|
|
|
|
|
}
|
|
|
|
|
SourisX = 0;
|
|
|
|
|
SourisY = 0;
|
|
|
|
|
}
|
2024-11-14 14:50:14 +01:00
|
|
|
}
|
2024-11-21 16:01:11 +01:00
|
|
|
} /* Charge les sprites */
|
|
|
|
|
ChargerSprite("./image/croix1.png");
|
|
|
|
|
ChargerSprite("./image/croix2.png");
|
2024-11-13 23:25:07 +01:00
|
|
|
while(fin == 0){
|
2024-11-21 16:01:11 +01:00
|
|
|
if(tour == 0){ /* Tour du joueur 1 */
|
2024-11-15 15:45:18 +01:00
|
|
|
Efface();
|
2024-11-14 14:50:14 +01:00
|
|
|
EcrireTexte(30, 40, "Tour du joueur 1", 2);
|
2024-11-15 20:26:26 +01:00
|
|
|
SourisX = 0;
|
2024-11-15 21:17:54 +01:00
|
|
|
SourisY = 0;
|
2024-11-15 20:26:26 +01:00
|
|
|
while(placer == 1){
|
|
|
|
|
if(SourisCliquee()){
|
2024-11-21 16:01:11 +01:00
|
|
|
SourisX = _X; /* Recupere les coordonnées de la souris X et Y */
|
2024-11-15 20:26:26 +01:00
|
|
|
SourisY = _Y;
|
|
|
|
|
}
|
2024-11-15 21:17:54 +01:00
|
|
|
VerifBlock1(SourisX, SourisY, maxX, maxY, taille, empperso);
|
2024-11-21 16:01:11 +01:00
|
|
|
if(grille[joueury1+1][joueurx1-1] != 0 && grille[joueury1+1][joueurx1] != 0 && grille[joueury1+1][joueurx1+1] != 0 && grille[joueury1][joueurx1-1] != 0 && grille[joueury1][joueurx1+1] != 0 && grille[joueury1-1][joueurx1-1] != 0 && grille[joueury1-1][joueurx1] != 0 && grille[joueury1-1][joueurx1+1] != 0){
|
2024-11-18 17:18:12 +01:00
|
|
|
LibererSprite(1);
|
2024-11-21 16:01:11 +01:00
|
|
|
LibererSprite(2); /* condition de victoire */
|
2024-11-18 17:18:12 +01:00
|
|
|
LibererSprite(3);
|
|
|
|
|
LibererSprite(4);
|
|
|
|
|
return 2;
|
2024-11-18 16:15:25 +01:00
|
|
|
}
|
2024-11-15 21:17:54 +01:00
|
|
|
if(empperso[0] != 0){
|
2024-11-18 16:15:25 +01:00
|
|
|
if(grille[empperso[1]][empperso[0]] == 0 && (empperso[1] <= joueury1+1 && empperso[1] >= joueury1-1) && (empperso[0] <= joueurx1+1 && empperso[0] >= joueurx1-1)){
|
2024-11-18 13:32:53 +01:00
|
|
|
grille[joueury1][joueurx1] = 0;
|
2024-11-15 21:17:54 +01:00
|
|
|
ChoisirCouleurDessin(CouleurParNom("white"));
|
2024-11-21 16:01:11 +01:00
|
|
|
RemplirRectangle(emplacementcooX1, emplacementcooY1, 40, 40); /* Suprime l'ancient perso pour le remplacer par un nouveau */
|
2024-11-15 21:17:54 +01:00
|
|
|
ChoisirCouleurDessin(CouleurParNom("black"));
|
2024-11-21 17:26:52 +01:00
|
|
|
joueurx1 = empperso[0]; /* Recupere les index du tableau par rapport au clique effectuer*/
|
2024-11-15 21:17:54 +01:00
|
|
|
joueury1 = empperso[1];
|
|
|
|
|
empperso[2] = coordonerX(SourisX);
|
2024-11-21 17:26:52 +01:00
|
|
|
empperso[3] = coordonerY(SourisY); /* Recupere les coordoner pour les sprites */
|
2024-11-18 13:32:53 +01:00
|
|
|
grille[empperso[1]][empperso[0]] = 1;
|
2024-11-15 21:17:54 +01:00
|
|
|
AfficherSprite(1, empperso[2], empperso[3]);
|
2024-11-21 17:26:52 +01:00
|
|
|
emplacementcooX1 = empperso[2]; /* Sauvegarde les anciennes coordoner pour supressions de sprite */
|
2024-11-18 13:32:53 +01:00
|
|
|
emplacementcooY1 = empperso[3];
|
2024-11-15 21:17:54 +01:00
|
|
|
placer = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
empperso[0] = 0;
|
2024-11-15 20:26:26 +01:00
|
|
|
placer = 1;
|
2024-11-15 15:45:18 +01:00
|
|
|
tour++;
|
2024-11-21 17:26:52 +01:00
|
|
|
}else if(tour == 1){ /* Fonction qui place les blocs du joueur 1 */
|
2024-11-15 15:45:18 +01:00
|
|
|
Efface();
|
|
|
|
|
EcrireTexte(30, 40, "Joueur 1 place le bloc", 2);
|
2024-11-15 20:26:26 +01:00
|
|
|
SourisX = 0;
|
|
|
|
|
SourisY = 0;
|
2024-11-15 17:22:14 +01:00
|
|
|
while(placer == 1){
|
2024-11-15 20:26:26 +01:00
|
|
|
if(SourisCliquee()){
|
2024-11-21 17:26:52 +01:00
|
|
|
SourisX = _X; /* Recupere les coordonnées de la souris */
|
2024-11-15 20:26:26 +01:00
|
|
|
SourisY = _Y;
|
|
|
|
|
}
|
|
|
|
|
VerifBlock1(SourisX, SourisY, maxX, maxY, taille, empblock);
|
|
|
|
|
if(empblock[0] != 0){
|
|
|
|
|
if(grille[empblock[1]][empblock[0]] == 0){
|
|
|
|
|
empblock[2] = coordonerX(SourisX);
|
2024-11-21 17:26:52 +01:00
|
|
|
empblock[3] = coordonerY(SourisY); /* Récupere les coordonnées et index pour le placement de bloc */
|
2024-11-18 13:32:53 +01:00
|
|
|
grille[empblock[1]][empblock[0]] = 3;
|
2024-11-15 20:26:26 +01:00
|
|
|
AfficherSprite(3, empblock[2], empblock[3]);
|
|
|
|
|
placer = 0;
|
|
|
|
|
}
|
2024-11-15 17:22:14 +01:00
|
|
|
}
|
2024-11-15 15:57:03 +01:00
|
|
|
}
|
2024-11-15 21:17:54 +01:00
|
|
|
empblock[0] = 0;
|
2024-11-15 17:22:14 +01:00
|
|
|
placer = 1;
|
2024-11-15 15:45:18 +01:00
|
|
|
tour++;
|
2024-11-21 17:26:52 +01:00
|
|
|
}else if(tour == 2){ /* Tour du joueur 2 le code est le même que pour le joueur 1 mais avec des variables du joueur 2 */
|
2024-11-15 15:45:18 +01:00
|
|
|
Efface();
|
2024-11-18 13:32:53 +01:00
|
|
|
EcrireTexte(30, 40, "Tour du joueur 2", 2);
|
|
|
|
|
SourisX = 0;
|
|
|
|
|
SourisY = 0;
|
|
|
|
|
while(placer == 1){
|
|
|
|
|
if(SourisCliquee()){
|
|
|
|
|
SourisX = _X;
|
|
|
|
|
SourisY = _Y;
|
|
|
|
|
}
|
|
|
|
|
VerifBlock1(SourisX, SourisY, maxX, maxY, taille, empperso);
|
2024-11-21 16:01:11 +01:00
|
|
|
if(grille[joueury2+1][joueurx2-1] != 0 && grille[joueury2+1][joueurx2] != 0 && grille[joueury2+1][joueurx2+1] != 0 && grille[joueury2][joueurx2-1] != 0 && grille[joueury2][joueurx2+1] != 0 && grille[joueury2-1][joueurx2-1] != 0 && grille[joueury2-1][joueurx2] != 0 && grille[joueury2-1][joueurx2+1]){
|
2024-11-18 17:18:12 +01:00
|
|
|
LibererSprite(1);
|
|
|
|
|
LibererSprite(2);
|
|
|
|
|
LibererSprite(3);
|
|
|
|
|
LibererSprite(4);
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
2024-11-18 13:32:53 +01:00
|
|
|
if(empperso[0] != 0){
|
2024-11-18 16:15:25 +01:00
|
|
|
if(grille[empperso[1]][empperso[0]] == 0 && (empperso[1] <= joueury2+1 && empperso[1] >= joueury2-1) && (empperso[0] <= joueurx2+1 && empperso[0] >= joueurx2-1)){
|
2024-11-18 13:32:53 +01:00
|
|
|
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++;
|
|
|
|
|
|
2024-11-21 17:26:52 +01:00
|
|
|
}else if(tour == 3){ /* Place les blocs comme pour les blocs du joueur 2 */
|
2024-11-15 15:45:18 +01:00
|
|
|
Efface();
|
|
|
|
|
EcrireTexte(30, 40, "Joueur 2 place le bloc", 2);
|
2024-11-15 20:26:26 +01:00
|
|
|
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);
|
2024-11-18 13:32:53 +01:00
|
|
|
grille[empblock[1]][empblock[0]] = 4;
|
2024-11-15 20:26:26 +01:00
|
|
|
AfficherSprite(4, empblock[2], empblock[3]);
|
|
|
|
|
placer = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2024-11-15 21:17:54 +01:00
|
|
|
empblock[0] = 0;
|
2024-11-15 20:26:26 +01:00
|
|
|
placer = 1;
|
2024-11-15 17:22:14 +01:00
|
|
|
tour = 0;
|
2024-11-14 14:50:14 +01:00
|
|
|
}
|
2024-11-13 23:25:07 +01:00
|
|
|
}
|
2024-11-20 15:01:35 +01:00
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2024-11-21 17:26:52 +01:00
|
|
|
void Efface(){ /* Efface l'affichage du haut */
|
2024-11-20 15:01:35 +01:00
|
|
|
ChoisirCouleurDessin(CouleurParNom("white"));
|
|
|
|
|
RemplirRectangle(0, 0, 650, 50);
|
|
|
|
|
ChoisirCouleurDessin(CouleurParNom("black"));
|
2024-11-13 11:07:47 +01:00
|
|
|
}
|