add const keyword

This commit is contained in:
Mylloon 2022-11-28 21:06:59 +01:00
parent f24108bff8
commit 670ab29be4
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
14 changed files with 58 additions and 48 deletions

View file

@ -6,11 +6,11 @@
#include "minimax.h" #include "minimax.h"
/* Joue le tour d'après l'algorithme alpha-beta */ /* Joue le tour d'après l'algorithme alpha-beta */
void action_joueur_alphabeta(Jeu *jeu, int couleur); void action_joueur_alphabeta(Jeu *jeu, const int couleur);
/* Décide d'une case à jouer via l'algorithme alpha-beta */ /* Décide d'une case à jouer via l'algorithme alpha-beta */
void _action_joueur_alphabeta(Jeu *jeu, int profondeur, int couleur, void _action_joueur_alphabeta(Jeu *jeu, int profondeur, int couleur,
int gagnant, int *ligne, int *colonne, int *score, const int gagnant, int *ligne, int *colonne,
int note, int qui); int *score, const int note, const int qui);
#endif #endif

View file

@ -6,7 +6,7 @@
typedef struct jeu Jeu; typedef struct jeu Jeu;
/* Joue le tour d'un joueur humain */ /* Joue le tour d'un joueur humain */
void action_joueur_humain(Jeu *jeu, int couleur); void action_joueur_humain(Jeu *jeu, const int couleur);
/* Auxiliaire : Demande au joueur où placer son jeton */ /* Auxiliaire : Demande au joueur où placer son jeton */
void _action_joueur_humain(int *ligne, int *colonne); void _action_joueur_humain(int *ligne, int *colonne);

View file

@ -23,9 +23,10 @@ struct jeton {
typedef struct jeton Jeton; typedef struct jeton Jeton;
/* Ajoute un nouveau jeton */ /* Ajoute un nouveau jeton */
Jeton *ajoute_jeton(int position_i, int position_j, int couleur); Jeton *ajoute_jeton(const int position_i, const int position_j,
const int couleur);
void affiche_jeton(FILE *stream, Jeton *jeton); void affiche_jeton(FILE *stream, const Jeton *jeton);
/* Jeu contenant nos 2 joueurs et le plateau de jeu */ /* Jeu contenant nos 2 joueurs et le plateau de jeu */
struct jeu { struct jeu {
@ -49,7 +50,8 @@ struct coups {
typedef struct coups Coups; typedef struct coups Coups;
/* Vérifie si un joueur peut jouer */ /* Vérifie si un joueur peut jouer */
Coups *action_possible_joueur(Jeton *plateau[LONGEUR][LARGEUR], int couleur); Coups *action_possible_joueur(Jeton *plateau[LONGEUR][LARGEUR],
const int couleur);
/* Libère les coups possibles de la mémoire */ /* Libère les coups possibles de la mémoire */
void free_coups(Coups *coups); void free_coups(Coups *coups);
@ -60,10 +62,10 @@ int partie_finie(Jeu *jeu);
/* Compte les points, change le résultat avec le gagnant ainsi que les points de /* Compte les points, change le résultat avec le gagnant ainsi que les points de
* chacun des joueurs (Gagnant, Perdant) * chacun des joueurs (Gagnant, Perdant)
* Renvoie 0 si égalité entre les 2 joueurs */ * Renvoie 0 si égalité entre les 2 joueurs */
int selection_gagnant(Jeu *jeu, int *resultat); int selection_gagnant(const Jeu *jeu, int *resultat);
/* Copie le jeu */ /* Copie le jeu */
Jeu *copie_jeu(Jeu *jeu_source); Jeu *copie_jeu(const Jeu *jeu_source);
/* Libère le jeu de la mémoire */ /* Libère le jeu de la mémoire */
void free_jeu(Jeu *jeu); void free_jeu(Jeu *jeu);

View file

@ -16,7 +16,7 @@ struct joueur {
typedef struct joueur Joueur; typedef struct joueur Joueur;
/* Créer un nouveau joueur */ /* Créer un nouveau joueur */
Joueur *nouveau_joueur(int pion); Joueur *nouveau_joueur(const int pion);
/* Ajoute un jeton à un joueur */ /* Ajoute un jeton à un joueur */
void ajoute_jeton_joueur(Joueur *joueur, Jeton *jeton); void ajoute_jeton_joueur(Joueur *joueur, Jeton *jeton);
@ -25,15 +25,16 @@ void ajoute_jeton_joueur(Joueur *joueur, Jeton *jeton);
void retire_jeton_joueur(Joueur *joueur, Jeton *jeton); void retire_jeton_joueur(Joueur *joueur, Jeton *jeton);
/* Renvoie la couleur de l'ennemi */ /* Renvoie la couleur de l'ennemi */
int couleur_ennemi(int couleur); int couleur_ennemi(const int couleur);
/* Gère le coup d'un joueur en faisant les changements nécessaire au jeu /* Gère le coup d'un joueur en faisant les changements nécessaire au jeu
* Renvoie 0 en cas de coup illégal */ * Renvoie 0 en cas de coup illégal */
int jeu_joueur(Jeu *jeu, int case_i, int case_j, int couleur); int jeu_joueur(Jeu *jeu, const int case_i, const int case_j, const int couleur);
/* Auxiliaire : S'occupe de faire les changements de jetons récursivement /* Auxiliaire : S'occupe de faire les changements de jetons récursivement
* lorsqu'un joueur joue */ * lorsqu'un joueur joue */
void _jeu_joueur(Jeu *jeu, int case_i, int case_j, int case_i_direction, void _jeu_joueur(Jeu *jeu, const int case_i, const int case_j,
int case_j_direction, int couleur); const int case_i_direction, const int case_j_direction,
const int couleur);
#endif #endif

View file

@ -29,10 +29,10 @@ void ajoute_liste(Liste *liste, Element *nouvel_element);
void supprime_liste(Element *element_actuel, Jeton *jeton); void supprime_liste(Element *element_actuel, Jeton *jeton);
/* Affiche la liste */ /* Affiche la liste */
void affiche_liste(Element *element); void affiche_liste(const Element *element);
/* Renvoie une copie de la liste */ /* Renvoie une copie de la liste */
Liste *copie_liste(Liste *liste); Liste *copie_liste(const Liste *liste);
/* Libère la liste en mémoire */ /* Libère la liste en mémoire */
void free_liste(Liste *liste); void free_liste(Liste *liste);

View file

@ -6,13 +6,14 @@
#include "joueur.h" #include "joueur.h"
/* Joue le tour d'après l'algorithme minimax */ /* Joue le tour d'après l'algorithme minimax */
void action_joueur_minimax(Jeu *jeu, int couleur); void action_joueur_minimax(Jeu *jeu, const int couleur);
/* Décide d'une case à jouer via l'algorithme minimax */ /* Décide d'une case à jouer via l'algorithme minimax */
void _action_joueur_minimax(Jeu *jeu, int profondeur, int couleur, int gagnant, void _action_joueur_minimax(Jeu *jeu, int profondeur, const int couleur,
int *ligne, int *colonne, int *score); const int gagnant, int *ligne, int *colonne,
int *score);
/* Calcule la valeur heuristique pour un coup */ /* Calcule la valeur heuristique pour un coup */
int heuristique(Jeu *jeu, int couleur); int heuristique(const Jeu *jeu, const int couleur);
#endif #endif

View file

@ -14,12 +14,13 @@ void affiche_plateau(Jeton *plateau[LONGEUR][LARGEUR]);
void _affiche_lettres(void); void _affiche_lettres(void);
/* Vérifie si une case est jouable par un joueur */ /* Vérifie si une case est jouable par un joueur */
int case_jouable(Jeton *plateau[LONGEUR][LARGEUR], int case_i, int case_j, int case_jouable(Jeton *plateau[LONGEUR][LARGEUR], const int case_i,
int couleur); const int case_j, const int couleur);
/* Auxiliaire : Vérifie pour une direction si le coup est légal */ /* Auxiliaire : Vérifie pour une direction si le coup est légal */
int _case_jouable(Jeton *plat[LONGEUR][LARGEUR], int case_i, int case_j, int _case_jouable(Jeton *plateau[LONGEUR][LARGEUR], const int case_i,
int case_i_direction, int case_j_direction, int couleur); const int case_j, const int case_i_direction,
const int case_j_direction, const int couleur);
/* Vérifie si le plateau est rempli */ /* Vérifie si le plateau est rempli */
int plateau_rempli(Jeton *plateau[LONGEUR][LARGEUR]); int plateau_rempli(Jeton *plateau[LONGEUR][LARGEUR]);

View file

@ -1,6 +1,6 @@
#include "../includes/alphabeta.h" #include "../includes/alphabeta.h"
void action_joueur_alphabeta(Jeu *jeu, int couleur) { void action_joueur_alphabeta(Jeu *jeu, const int couleur) {
int ligne, colonne, score = INT_MAX; int ligne, colonne, score = INT_MAX;
_action_joueur_alphabeta(jeu, 9, couleur, couleur, &ligne, &colonne, &score, _action_joueur_alphabeta(jeu, 9, couleur, couleur, &ligne, &colonne, &score,
0, VIDE); 0, VIDE);
@ -9,8 +9,8 @@ void action_joueur_alphabeta(Jeu *jeu, int couleur) {
} }
void _action_joueur_alphabeta(Jeu *jeu, int profondeur, int couleur, void _action_joueur_alphabeta(Jeu *jeu, int profondeur, int couleur,
int gagnant, int *ligne, int *colonne, int *score, const int gagnant, int *ligne, int *colonne,
int note, int qui) { int *score, const int note, const int qui) {
Coups *possibilites = action_possible_joueur(jeu->plateau, couleur); Coups *possibilites = action_possible_joueur(jeu->plateau, couleur);
if (!possibilites->taille_liste) { if (!possibilites->taille_liste) {

View file

@ -1,6 +1,6 @@
#include "../includes/humain.h" #include "../includes/humain.h"
void action_joueur_humain(Jeu *jeu, int couleur) { void action_joueur_humain(Jeu *jeu, const int couleur) {
int ligne, colonne; int ligne, colonne;
_action_joueur_humain(&ligne, &colonne); _action_joueur_humain(&ligne, &colonne);

View file

@ -2,7 +2,7 @@
#include "../includes/humain.h" #include "../includes/humain.h"
#include "../includes/minimax.h" #include "../includes/minimax.h"
Jeton *ajoute_jeton(int pos_i, int pos_j, int couleur) { Jeton *ajoute_jeton(const int pos_i, const int pos_j, const int couleur) {
Jeton *jeton = malloc(sizeof(Jeton)); Jeton *jeton = malloc(sizeof(Jeton));
jeton->couleur = couleur; jeton->couleur = couleur;
jeton->pos_i = pos_i; jeton->pos_i = pos_i;
@ -11,7 +11,7 @@ Jeton *ajoute_jeton(int pos_i, int pos_j, int couleur) {
return jeton; return jeton;
} }
void affiche_jeton(FILE *stream, Jeton *jeton) { void affiche_jeton(FILE *stream, const Jeton *jeton) {
fprintf(stream, "%c%d", jeton->pos_j + 'A', jeton->pos_i + 1); fprintf(stream, "%c%d", jeton->pos_j + 'A', jeton->pos_i + 1);
} }
@ -65,7 +65,8 @@ void deroulement_partie(Jeu *jeu) {
} }
} }
Coups *action_possible_joueur(Jeton *plat[LONGEUR][LARGEUR], int couleur) { Coups *action_possible_joueur(Jeton *plat[LONGEUR][LARGEUR],
const int couleur) {
Coups *coups = malloc(sizeof(Coups)); Coups *coups = malloc(sizeof(Coups));
coups->coups = nouvelle_liste(); coups->coups = nouvelle_liste();
coups->taille_liste = 0; coups->taille_liste = 0;
@ -100,7 +101,7 @@ int partie_finie(Jeu *jeu) {
return reponse; return reponse;
} }
int selection_gagnant(Jeu *jeu, int *resultat) { int selection_gagnant(const Jeu *jeu, int *resultat) {
if (jeu->j1->nb_jeton == jeu->j2->nb_jeton) { if (jeu->j1->nb_jeton == jeu->j2->nb_jeton) {
// Si égalité // Si égalité
return 0; return 0;
@ -121,7 +122,7 @@ int selection_gagnant(Jeu *jeu, int *resultat) {
return 1; return 1;
} }
Jeu *copie_jeu(Jeu *source) { Jeu *copie_jeu(const Jeu *source) {
Jeu *res = malloc(sizeof(Jeu)); Jeu *res = malloc(sizeof(Jeu));
// Copie de J1 // Copie de J1

View file

@ -1,6 +1,6 @@
#include "../includes/joueur.h" #include "../includes/joueur.h"
Joueur *nouveau_joueur(int pion) { Joueur *nouveau_joueur(const int pion) {
Joueur *joueur = malloc(sizeof(Joueur)); Joueur *joueur = malloc(sizeof(Joueur));
joueur->nom = pion == NOIR ? "noir" : "blanc"; joueur->nom = pion == NOIR ? "noir" : "blanc";
joueur->couleur = pion; joueur->couleur = pion;
@ -33,9 +33,10 @@ void retire_jeton_joueur(Joueur *joueur, Jeton *jeton) {
jeton->couleur = VIDE; jeton->couleur = VIDE;
} }
int couleur_ennemi(int couleur) { return couleur == NOIR ? BLANC : NOIR; } int couleur_ennemi(const int couleur) { return couleur == NOIR ? BLANC : NOIR; }
int jeu_joueur(Jeu *jeu, int case_i, int case_j, int couleur) { int jeu_joueur(Jeu *jeu, const int case_i, const int case_j,
const int couleur) {
int flag = 0; int flag = 0;
// Coup illégal // Coup illégal
@ -72,8 +73,9 @@ int jeu_joueur(Jeu *jeu, int case_i, int case_j, int couleur) {
return flag; return flag;
} }
void _jeu_joueur(Jeu *jeu, int case_i, int case_j, int case_i_direction, void _jeu_joueur(Jeu *jeu, const int case_i, const int case_j,
int case_j_direction, int couleur) { const int case_i_direction, const int case_j_direction,
const int couleur) {
if (case_i + case_i_direction < 0 || case_i + case_i_direction >= LONGEUR || if (case_i + case_i_direction < 0 || case_i + case_i_direction >= LONGEUR ||
case_j + case_j_direction < 0 || case_j + case_j_direction >= LARGEUR) { case_j + case_j_direction < 0 || case_j + case_j_direction >= LARGEUR) {
// Après une suite de pion ennemi, si l'on arrive à l'extérieur du // Après une suite de pion ennemi, si l'on arrive à l'extérieur du

View file

@ -46,7 +46,7 @@ void supprime_liste(Element *elem, Jeton *data) {
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
void affiche_liste(Element *element) { void affiche_liste(const Element *element) {
if (element) { if (element) {
affiche_liste(element->suivant); affiche_liste(element->suivant);
affiche_jeton(stdout, element->jeton); affiche_jeton(stdout, element->jeton);
@ -54,7 +54,7 @@ void affiche_liste(Element *element) {
} }
} }
Liste *copie_liste(Liste *liste) { Liste *copie_liste(const Liste *liste) {
Liste *res = nouvelle_liste(); Liste *res = nouvelle_liste();
Element *element = liste->premier; Element *element = liste->premier;

View file

@ -1,14 +1,15 @@
#include "../includes/minimax.h" #include "../includes/minimax.h"
void action_joueur_minimax(Jeu *jeu, int couleur) { void action_joueur_minimax(Jeu *jeu, const int couleur) {
int ligne, colonne, score = INT_MAX; int ligne, colonne, score = INT_MAX;
_action_joueur_minimax(jeu, 5, couleur, couleur, &ligne, &colonne, &score); _action_joueur_minimax(jeu, 5, couleur, couleur, &ligne, &colonne, &score);
jeu_joueur(jeu, ligne, colonne, couleur); jeu_joueur(jeu, ligne, colonne, couleur);
} }
void _action_joueur_minimax(Jeu *jeu, int profondeur, int couleur, int gagnant, void _action_joueur_minimax(Jeu *jeu, int profondeur, int couleur,
int *ligne, int *colonne, int *score) { const int gagnant, int *ligne, int *colonne,
int *score) {
Coups *possibilites = action_possible_joueur(jeu->plateau, couleur); Coups *possibilites = action_possible_joueur(jeu->plateau, couleur);
// Pas de coups possibles // Pas de coups possibles
@ -70,7 +71,7 @@ void _action_joueur_minimax(Jeu *jeu, int profondeur, int couleur, int gagnant,
free_coups(possibilites); free_coups(possibilites);
} }
int heuristique(Jeu *jeu, int couleur) { int heuristique(const Jeu *jeu, const int couleur) {
if (jeu->j1->couleur == couleur) { if (jeu->j1->couleur == couleur) {
// Si on est le joueur 1 // Si on est le joueur 1
return jeu->j1->nb_jeton - jeu->j2->nb_jeton; return jeu->j1->nb_jeton - jeu->j2->nb_jeton;

View file

@ -63,8 +63,8 @@ void _affiche_lettres(void) {
printf("\n"); printf("\n");
} }
int case_jouable(Jeton *plat[LONGEUR][LARGEUR], int case_i, int case_j, int case_jouable(Jeton *plat[LONGEUR][LARGEUR], const int case_i,
int couleur) { const int case_j, const int couleur) {
int flag = 0; int flag = 0;
// Coup illégal // Coup illégal
@ -89,8 +89,9 @@ int case_jouable(Jeton *plat[LONGEUR][LARGEUR], int case_i, int case_j,
return flag; return flag;
} }
int _case_jouable(Jeton *plat[LONGEUR][LARGEUR], int case_i, int case_j, int _case_jouable(Jeton *plat[LONGEUR][LARGEUR], const int case_i,
int case_i_direction, int case_j_direction, int couleur) { const int case_j, const int case_i_direction,
const int case_j_direction, const int couleur) {
if (case_i + case_i_direction < 0 || case_i + case_i_direction >= LONGEUR || if (case_i + case_i_direction < 0 || case_i + case_i_direction >= LONGEUR ||
case_j + case_j_direction < 0 || case_j + case_j_direction >= LARGEUR) { case_j + case_j_direction < 0 || case_j + case_j_direction >= LARGEUR) {
// Après une suite de pion ennemi, si l'on arrive à l'extérieur du // Après une suite de pion ennemi, si l'on arrive à l'extérieur du