Ajouts de commentaires jeu.c

This commit is contained in:
2024-11-21 12:47:10 +01:00
parent b2e07e67e0
commit d5c2269de6

15
jeu.c
View File

@@ -18,8 +18,11 @@ struct EtatJeu initialiserJeu(int tailleGrille, int mode) {
etat.joueur2.x = -1; etat.joueur2.x = -1;
etat.joueur2.y = -1; etat.joueur2.y = -1;
/* Alloue la mémoire pour la grille de jeu */
etat.grille = malloc(tailleGrille * sizeof(int*)); etat.grille = malloc(tailleGrille * sizeof(int*));
/* Pour chaque ligne de la grille */
for(i = 0; i < tailleGrille; i++) { for(i = 0; i < tailleGrille; i++) {
/* Alloue la mémoire pour la ligne et l'initialise à 0 */
etat.grille[i] = malloc(tailleGrille * sizeof(int)); etat.grille[i] = malloc(tailleGrille * sizeof(int));
memset(etat.grille[i], 0, tailleGrille * sizeof(int)); memset(etat.grille[i], 0, tailleGrille * sizeof(int));
} }
@@ -38,15 +41,22 @@ int peutDeplacer(struct EtatJeu etatJeu, int joueur) {
int i, j; int i, j;
int newX, newY; int newX, newY;
/* Récupère la position du pion du joueur actuel */
pos = joueur == 1 ? etatJeu.joueur1 : etatJeu.joueur2; pos = joueur == 1 ? etatJeu.joueur1 : etatJeu.joueur2;
/* Parcourt toutes les cases adjacentes (8 directions possibles) */
for(i = -1; i <= 1; i++) { for(i = -1; i <= 1; i++) {
for(j = -1; j <= 1; j++) { for(j = -1; j <= 1; j++) {
/* Ignore la position actuelle du pion */
if(i == 0 && j == 0) continue; if(i == 0 && j == 0) continue;
/* Calcule les nouvelles coordonnées potentielles */
newX = pos.x + i; newX = pos.x + i;
newY = pos.y + j; newY = pos.y + j;
/* Vérifie si la nouvelle position est :
1. Dans les limites de la grille (>= 0 et < tailleGrille)
2. Sur une case vide (== 0) */
if(newX >= 0 && newX < etatJeu.tailleGrille && if(newX >= 0 && newX < etatJeu.tailleGrille &&
newY >= 0 && newY < etatJeu.tailleGrille && newY >= 0 && newY < etatJeu.tailleGrille &&
etatJeu.grille[newY][newX] == 0) { etatJeu.grille[newY][newX] == 0) {
@@ -70,6 +80,7 @@ void dessinerGrille(struct EtatJeu etatJeu) {
EffacerEcran(CouleurParNom("white")); EffacerEcran(CouleurParNom("white"));
ChoisirCouleurDessin(CouleurParNom("black")); ChoisirCouleurDessin(CouleurParNom("black"));
/* Affiche le message en fonction de la phase du jeu */
if(etatJeu.phase == 0) { if(etatJeu.phase == 0) {
sprintf(message, "Joueur %d : Placez votre pion", etatJeu.tourJoueur); sprintf(message, "Joueur %d : Placez votre pion", etatJeu.tourJoueur);
} else if(etatJeu.phase == 1) { } else if(etatJeu.phase == 1) {
@@ -79,14 +90,16 @@ void dessinerGrille(struct EtatJeu etatJeu) {
} }
EcrireTexte(200, 30, message, 2); EcrireTexte(200, 30, message, 2);
/* Calcule la taille de chaque case de la grille */
tailleCase = (largeurFenetre - 2 * marge) / etatJeu.tailleGrille; tailleCase = (largeurFenetre - 2 * marge) / etatJeu.tailleGrille;
if (tailleCase * etatJeu.tailleGrille > (hauteurFenetre - 2 * marge)) { if (tailleCase * etatJeu.tailleGrille > (hauteurFenetre - 2 * marge)) {
tailleCase = (hauteurFenetre - 2 * marge) / etatJeu.tailleGrille; tailleCase = (hauteurFenetre - 2 * marge) / etatJeu.tailleGrille;
} }
/* Calcule la position de départ de la grille */
startX = (largeurFenetre - (tailleCase * etatJeu.tailleGrille)) / 2; startX = (largeurFenetre - (tailleCase * etatJeu.tailleGrille)) / 2;
startY = (hauteurFenetre - (tailleCase * etatJeu.tailleGrille)) / 2; startY = (hauteurFenetre - (tailleCase * etatJeu.tailleGrille)) / 2;
/* Pour chaque case de la grille */
for (i = 0; i < etatJeu.tailleGrille; i++) { for (i = 0; i < etatJeu.tailleGrille; i++) {
for (j = 0; j < etatJeu.tailleGrille; j++) { for (j = 0; j < etatJeu.tailleGrille; j++) {
int x = startX + (j * tailleCase); int x = startX + (j * tailleCase);