1 2 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