#include #include #include "jeu.h" #include void DessinerCercle(int x, int y, int rayon) { DessinerArc(x - rayon, y - rayon, 2 * rayon, 2 * rayon, 0, 360); } void dessinerGrille(struct EtatJeu etatJeu) { int i, j; int largeurFenetre = 800; int hauteurFenetre = 600; int marge = 50; /* Marge pour éviter les bords */ /* Calculer la taille de case en prenant le minimum entre largeur et hauteur */ int tailleCase = (largeurFenetre - 2 * marge) / etatJeu.tailleGrille; if (tailleCase * etatJeu.tailleGrille > (hauteurFenetre - 2 * marge)) { tailleCase = (hauteurFenetre - 2 * marge) / etatJeu.tailleGrille; } /* Calculer les positions de départ pour centrer la grille */ int startX = (largeurFenetre - (tailleCase * etatJeu.tailleGrille)) / 2; int startY = (hauteurFenetre - (tailleCase * etatJeu.tailleGrille)) / 2; EffacerEcran(CouleurParNom("white")); for (i = 0; i < etatJeu.tailleGrille; i++) { for (j = 0; j < etatJeu.tailleGrille; j++) { int x = startX + (j * tailleCase); int y = startY + (i * tailleCase); ChoisirCouleurDessin(CouleurParNom("black")); DessinerRectangle(x, y, tailleCase, tailleCase); if (etatJeu.grille[i][j] == 1) { ChoisirCouleurDessin(CouleurParNom("blue")); RemplirRectangle(x + 5, y + 5, tailleCase - 10, tailleCase - 10); } else if (etatJeu.grille[i][j] == 2) { ChoisirCouleurDessin(CouleurParNom("red")); RemplirRectangle(x + 5, y + 5, tailleCase - 10, tailleCase - 10); } } } } void gererClicSouris(struct EtatJeu *etatJeu) { int x = _X; int y = _Y; int largeurFenetre = 800; int hauteurFenetre = 600; int marge = 50; int tailleCase = (largeurFenetre - 2 * marge) / etatJeu->tailleGrille; if (tailleCase * etatJeu->tailleGrille > (hauteurFenetre - 2 * marge)) { tailleCase = (hauteurFenetre - 2 * marge) / etatJeu->tailleGrille; } int startX = (largeurFenetre - (tailleCase * etatJeu->tailleGrille)) / 2; int startY = (hauteurFenetre - (tailleCase * etatJeu->tailleGrille)) / 2; /* Ajuster les coordonnées du clic en fonction du décalage de la grille */ x -= startX; y -= startY; /* Calculer les indices de la grille */ int i = y / tailleCase; int j = x / tailleCase; printf("Processing click at: (%d, %d) -> Grid position: (%d, %d)\n", x, y, i, j); if (i >= 0 && i < etatJeu->tailleGrille && j >= 0 && j < etatJeu->tailleGrille && etatJeu->grille[i][j] == 0) { etatJeu->grille[i][j] = etatJeu->tourJoueur; printf("Placed mark for player %d at position (%d, %d)\n", etatJeu->tourJoueur, i, j); etatJeu->tourJoueur = (etatJeu->tourJoueur == 1) ? 2 : 1; dessinerGrille(*etatJeu); } } struct EtatJeu initialiserJeu(int tailleGrille, int mode) { struct EtatJeu etatJeu; int i, j; etatJeu.tailleGrille = tailleGrille; etatJeu.mode = mode; etatJeu.tourJoueur = 1; etatJeu.phase = 0; etatJeu.grille = (int**)malloc(tailleGrille * sizeof(int*)); for (i = 0; i < tailleGrille; i++) { etatJeu.grille[i] = (int*)malloc(tailleGrille * sizeof(int)); for (j = 0; j < tailleGrille; j++) { etatJeu.grille[i][j] = 0; } } return etatJeu; } int verifierVictoire(struct EtatJeu etatJeu) { int i, j; for (i = 0; i < etatJeu.tailleGrille; i++) { if (etatJeu.grille[i][0] != 0) { int gagnant = etatJeu.grille[i][0]; int victoire = 1; for (j = 1; j < etatJeu.tailleGrille; j++) { if (etatJeu.grille[i][j] != gagnant) { victoire = 0; break; } } if (victoire) return gagnant; } } for (j = 0; j < etatJeu.tailleGrille; j++) { if (etatJeu.grille[0][j] != 0) { int gagnant = etatJeu.grille[0][j]; int victoire = 1; for (i = 1; i < etatJeu.tailleGrille; i++) { if (etatJeu.grille[i][j] != gagnant) { victoire = 0; break; } } if (victoire) return gagnant; } } if (etatJeu.grille[0][0] != 0) { int gagnant = etatJeu.grille[0][0]; int victoire = 1; for (i = 1; i < etatJeu.tailleGrille; i++) { if (etatJeu.grille[i][i] != gagnant) { victoire = 0; break; } } if (victoire) return gagnant; } if (etatJeu.grille[0][etatJeu.tailleGrille - 1] != 0) { int gagnant = etatJeu.grille[0][etatJeu.tailleGrille - 1]; int victoire = 1; for (i = 1; i < etatJeu.tailleGrille; i++) { if (etatJeu.grille[i][etatJeu.tailleGrille - 1 - i] != gagnant) { victoire = 0; break; } } if (victoire) return gagnant; } return 0; }