| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 
 | #include <iostream> 
using namespace std; 
 
const int COLONNES=5; 
const int LIGNES=5; 
 
struct liste_coordonnees 
{ 
int coord[12]; 
int nb; 
}; 
 
typedef int plateau[COLONNES][LIGNES]; 
 
struct jeu 
{ 
plateau partie; 
plateau controles; 
double evalpos_joueur1; 
bool MAT; 
}; 
 
void Decompresser_Coord(int coord, int &i, int &j) 
{ 
 
i = coord/10; 
j = coord - (10*i); 
} 
 
void Initialiser_Coord(liste_coordonnees& adj1, liste_coordonnees& adj2) 
{ 
adj1.coord[0]=1; 
adj1.coord[1]=2; 
adj1.coord[2]=10; 
adj2.coord[0]=43; 
adj2.coord[1]=33; 
adj2.coord[2]=34; 
adj1.nb=3; 
adj2.nb=3; 
} 
 
void Initialiser_Partie(jeu& partie) 
{ 
//Pieces du joueur 1
partie.partie[0][0]=1; // Le roi du joueur 1 est repéré par le chiffre 1 
partie.controles[0][1]=1;
partie.controles[1][1]=1; 
partie.controles[1][0]=1;
//Pieces du joueur 2
partie.partie[4][4]=-1; // La roi du joueur 2 est repéré par le chiffre -1 
partie.controles[4][3]=-1; 
partie.controles[3][3]=-1; 
partie.controles[3][4]=-1; 
} 
 
void Position_Roi(jeu& partie) //Procédure sensée evaluer la position du roi
{ 
int eval1=0; // Evaluation de la position du roi pour le joueur 1 (compté positivement) 
int eval2=0;// Evaluation de la position du roi pour le joueur 2 (compté négativement) 
int k, l; 
liste_coordonnees adj1; //Coord des cases adjacantes au roi du joueur 1 
liste_coordonnees adj2; //Coord des cases adjacantes au roi du joueur 2 
Initialiser_Coord(adj1, adj2); //Initialisation des listes de coordonnees 
 
//Application de la formule, définie arbitrairement, afin d'évaluer la position du roi : 
 
for(int i=0 ; i < adj1.nb ; i++) 
{ 
Decompresser_Coord(adj1.coord[i], k, l); 
eval1+=(partie.controles[k][l]+(partie.partie[k][l]/abs(partie.partie[k][l]))); 
} 
for(int i=0 ; i < adj2.nb ; i++) 
{ 
Decompresser_Coord(adj2.coord[i], k, l); 
eval2+=((partie.controles[k][l])+(partie.partie[k][l]/(abs(partie.partie[k][l])))); 
} 
eval1=eval1/adj1.nb; 
eval2=eval2/adj2.nb;
//Mise à jour de la valeur de la position du joueur 1
partie.evalpos_joueur1 = partie.evalpos_joueur1 + eval1 + eval2; 
} 
 
int main() 
{ 
jeu nouveau; 
Initialiser_Partie(nouveau); 
Position_Roi(nouveau); 
cout<<nouveau.evalpos_joueur1; 
} | 
Partager