IA - Choix des pions pouvant être déplacés
2 participants
Page 1 sur 1
IA - Choix des pions pouvant être déplacés
bonsoir
J'ai une fonction qui permet de sélectionner un certain nombre de pions déplaçables pour un joueur et un état de jeu donné. Je pense que vous pouvez l'utiliser comme une "boîte noire" dans vos programmations papier ou informatiques.
Description:
ChoixPionsDeplacables( int joueur, int Plateau[17][25], int nbrepions )
..donc les données sont le joueur (1 ou -1), le plateau et le nombre voulu de pions à choisir nbrepions, que je n'ai pas fixé.
Résultat:
Un tableau de structure, de type PION: Pionschoisis[nbrepions]. Il donne la liste des différents pions déplaçables, étant indexé de 0 à nbrepions-1.
Rappel: la structure PION comprend les variables ligne, colonne, et joueur.
En sortie de la fonction, on n'a donc aucune idée des déplacements unitaires possibles que le pion peut effectuer, même s'ils ont été testés.
Dernier problème: Sarah me dira que le mieux est l'ennemi du bien. J'ai un soucis de symétrie car au lieu d'écrire deux fois le programme avec une condition selon le joueur, j'aurais aimé tout faire en une fois, avec un paramètre "joueur" 1 ou -1. Ca marcherait pour les cases et le stockage des données dans Pionschoisis, mais pas popur les boucles FOR: on doit parcourir Plateau[l][c] dans deux sens différents (selon le joueur) et je n'arrive pas à interchanger l++ et l--...
Bon, ok, c'est pas important vu qu'on devrait avoir tout le temps joueur =-1 (IA faite pour l'ordi normalement).
J'ai une fonction qui permet de sélectionner un certain nombre de pions déplaçables pour un joueur et un état de jeu donné. Je pense que vous pouvez l'utiliser comme une "boîte noire" dans vos programmations papier ou informatiques.
Description:
ChoixPionsDeplacables( int joueur, int Plateau[17][25], int nbrepions )
..donc les données sont le joueur (1 ou -1), le plateau et le nombre voulu de pions à choisir nbrepions, que je n'ai pas fixé.
Résultat:
Un tableau de structure, de type PION: Pionschoisis[nbrepions]. Il donne la liste des différents pions déplaçables, étant indexé de 0 à nbrepions-1.
Rappel: la structure PION comprend les variables ligne, colonne, et joueur.
En sortie de la fonction, on n'a donc aucune idée des déplacements unitaires possibles que le pion peut effectuer, même s'ils ont été testés.
Dernier problème: Sarah me dira que le mieux est l'ennemi du bien. J'ai un soucis de symétrie car au lieu d'écrire deux fois le programme avec une condition selon le joueur, j'aurais aimé tout faire en une fois, avec un paramètre "joueur" 1 ou -1. Ca marcherait pour les cases et le stockage des données dans Pionschoisis, mais pas popur les boucles FOR: on doit parcourir Plateau[l][c] dans deux sens différents (selon le joueur) et je n'arrive pas à interchanger l++ et l--...
Bon, ok, c'est pas important vu qu'on devrait avoir tout le temps joueur =-1 (IA faite pour l'ordi normalement).
Kerigwenn- Nombre de messages : 99
Localisation : ...sur ma chaise.
Date d'inscription : 18/10/2007
Re: IA - Choix des pions pouvant être déplacés
La fonction a été réécrite (en fait l'autre existe toujours, on sait jamais, c'en est maintenant une deuxième). Elle cherche les nbrepions pions de la CPU déplaçables pour un état donné de jeu.
Description:
ChoixPionsDeplacablesCPU( int Plateau[17][25], int nbrepions)
Elle renvoie toujours le même type de résultat.
Description:
ChoixPionsDeplacablesCPU( int Plateau[17][25], int nbrepions)
Elle renvoie toujours le même type de résultat.
Kerigwenn- Nombre de messages : 99
Localisation : ...sur ma chaise.
Date d'inscription : 18/10/2007
Re: IA - Choix des pions pouvant être déplacés
int ChoixPionsDeplacablesCPU( int Plateau[17][25], int nbrepions)
{
PION Pionschoisis[nbrepions];
int cpt=0, l=0, c=0;
while(cpt<nbrepions)
{
for(l=0;l<=24;l++) //On parcourt le plateau depuis la première ligne
{
for(c=0;c<17;c++)
{
if( Plateau[l][c]==joueur) //Quand on apperçoit un pion appartenant au CPU
{
if(Plateau[l][c-2]==0 || Plateau[l][c+2]==0) //Déplacement simple possible à gauche ou à droite
{
Pionschoisis[cpt].ligne=l;
Pionschoisis[cpt].colonne=c;
Pionschoisis[cpt].joueur=joueur;
cpt++;
}
if(Plateau[l+1][c-1]==0 || Plateau[l+1][c+1]==0) //Déplacement simple possible à gauche ou droite en diagonale
{
Pionschoisis[cpt].ligne=l;
Pionschoisis[cpt].colonne=c;
Pionschoisis[cpt].joueur=joueur;
cpt++;
}
if(Plateau[l][c-4]==0 || Plateau[l][c+4]==0) //Saut possible à gaucge ou à droite
{
Pionschoisis[cpt].ligne=l;
Pionschoisis[cpt].colonne=c;
Pionschoisis[cpt].joueur=joueur;
cpt++;
}
if(Plateau[l+2][c-2]==0 || Plateau[l+2][c+2]==0) //Saut possible à gaucge ou à droite en diagonale
{
Pionschoisis[cpt].ligne=l;
Pionschoisis[cpt].colonne=c;
Pionschoisis[cpt].joueur=joueur;
cpt++;
}
}
}
}
}
}
{
PION Pionschoisis[nbrepions];
int cpt=0, l=0, c=0;
while(cpt<nbrepions)
{
for(l=0;l<=24;l++) //On parcourt le plateau depuis la première ligne
{
for(c=0;c<17;c++)
{
if( Plateau[l][c]==joueur) //Quand on apperçoit un pion appartenant au CPU
{
if(Plateau[l][c-2]==0 || Plateau[l][c+2]==0) //Déplacement simple possible à gauche ou à droite
{
Pionschoisis[cpt].ligne=l;
Pionschoisis[cpt].colonne=c;
Pionschoisis[cpt].joueur=joueur;
cpt++;
}
if(Plateau[l+1][c-1]==0 || Plateau[l+1][c+1]==0) //Déplacement simple possible à gauche ou droite en diagonale
{
Pionschoisis[cpt].ligne=l;
Pionschoisis[cpt].colonne=c;
Pionschoisis[cpt].joueur=joueur;
cpt++;
}
if(Plateau[l][c-4]==0 || Plateau[l][c+4]==0) //Saut possible à gaucge ou à droite
{
Pionschoisis[cpt].ligne=l;
Pionschoisis[cpt].colonne=c;
Pionschoisis[cpt].joueur=joueur;
cpt++;
}
if(Plateau[l+2][c-2]==0 || Plateau[l+2][c+2]==0) //Saut possible à gaucge ou à droite en diagonale
{
Pionschoisis[cpt].ligne=l;
Pionschoisis[cpt].colonne=c;
Pionschoisis[cpt].joueur=joueur;
cpt++;
}
}
}
}
}
}
Kerigwenn- Nombre de messages : 99
Localisation : ...sur ma chaise.
Date d'inscription : 18/10/2007
Re: IA - Choix des pions pouvant être déplacés
fait gaffe t'as pas mis de return
Si tu ne retournes risn, comme tu la declares en int, envoie return EXIT_SUCCESS.
Si tu ne retournes risn, comme tu la declares en int, envoie return EXIT_SUCCESS.
Re: IA - Choix des pions pouvant être déplacés
La spécialiste de Code::Blocks, c'est toi.
Moi ce programme il m'énnerve, je sais jamais quoi mettre en type de fonctions et en return, et j'avoue que je manque de temps pour m'y intéresser.
J'essaie de faire un peu avancer le truc, mais apparement ça n'est pas correct. Désolé. La prochaine fois je me tairais au lieu de dire des bêtises.
Moi ce programme il m'énnerve, je sais jamais quoi mettre en type de fonctions et en return, et j'avoue que je manque de temps pour m'y intéresser.
J'essaie de faire un peu avancer le truc, mais apparement ça n'est pas correct. Désolé. La prochaine fois je me tairais au lieu de dire des bêtises.
Kerigwenn- Nombre de messages : 99
Localisation : ...sur ma chaise.
Date d'inscription : 18/10/2007
Re: IA - Choix des pions pouvant être déplacés
Pitié, Audrey, tu sais bien que ca n'avait rien de méchant!!
Ne le prends pas mal, stp... Je m'en voudrais si tu me fais la tete parce que mes conseils ressemblent a des reproches alors qu'ils n'en sont pas DU TOUT!!
N'hésite surtout pas a continuer de dire des betises
Parce que tu penses a plein de trucs auxquels je ne penserait pas toute seule... Il ne faut jamais hesiter a dire des betises^^.
Si tu ne sais pas quoi mettre, je te conseille de les passer en "int" comme tu le fais, en rajoutant juste "return EXIT_SUCCESS;" ou "return 1;" à la fin.
Sinon, declare tes fonctions en "void"
Mais c'est pas très important, tu as raison, je peux le faire sans problème si tu n'en as pas envie
C'est juste que quand tu m'envoies des fonctions, je suis trop impatiente de les essayer !
Ne le prends pas mal, stp... Je m'en voudrais si tu me fais la tete parce que mes conseils ressemblent a des reproches alors qu'ils n'en sont pas DU TOUT!!
N'hésite surtout pas a continuer de dire des betises
Parce que tu penses a plein de trucs auxquels je ne penserait pas toute seule... Il ne faut jamais hesiter a dire des betises^^.
Si tu ne sais pas quoi mettre, je te conseille de les passer en "int" comme tu le fais, en rajoutant juste "return EXIT_SUCCESS;" ou "return 1;" à la fin.
Sinon, declare tes fonctions en "void"
Mais c'est pas très important, tu as raison, je peux le faire sans problème si tu n'en as pas envie
C'est juste que quand tu m'envoies des fonctions, je suis trop impatiente de les essayer !
Re: IA - Choix des pions pouvant être déplacés
Et puis si code:blocks t'énerve, tu peux faire EXACTEMENT les memes choses sous dev ou visual!
Travaille avec ton préféré!
Travaille avec ton préféré!
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|