Salut a tous
J’essaye pour mon othello de reférencer tous les coups valides pour un coup donné.
Je parcours donc tout l’othellier et regarde si la case est un coupValide à l’aide de ma fonction coupValide(char camp,char * grille,int ligne, int colonne), et si il est bon le rajoute a la tete de ma liste chainé.
Je crée donc une fonction donneTousLesCoupsValides(char * grille, char camp, Maillon * teteMaillon) qui rend ma liste chainé via mon pointeur sur teteMaillon.
La fonction compile mais je l’ai pas téstée.
C’est pour cela que je crée la deuxieme fonction:
char * donneStringCoupsValides(char -grille, char +camp)
qui elle me renvoie a la compile:
>make
gcc -Wall -pedantic -c representation.c
representation.c: In function `donneStringCoupsValides':
representation.c:237: erreur: type incompatibles dans affectation
make: *** [representation.o] Erreur 1
La ligne etant
[cpp]teteMaillon->coup=NULL; (ligne 76 de representation.c pour vous)[/cpp]
il y a donc un probleme a l’initialisation, mais quesqui va pas ???
Dans representation.h
[cpp]
typedef struct _StrCoup {
int ligne;
int colonne;
char camp;
} StrCoup;
typedef struct _Maillon {
StrCoup coup;
struct _Maillon * suivant;
} Maillon;
[/cpp]
Dans representation.c
[cpp]
/*******************************************************************
*
- Nom : int donneTousLesCoupsValides(
-
char * grille,
-
char camp,
-
Maillon * teteMaillon
-
)
- Entrée : char * grille,
-
char camp,
-
Maillon * teteMaillon
- Sortie : nombre de coups valides pour camp
-
Liste tous les coups valides pour camp
-
et les enregistrent dans la liste chainée
******************************************************************/
int donneTousLesCoupsValides(char * grille, char camp, Maillon * teteMaillon)
{
int i,j,cpt;
cpt=0;
for(i=0;i<DIMENSION_MAX;i++)
for(j=0;j<DIMENSION_MAX;j++)
if(coupValide(camp,grille,i,j))
{
Maillon * newMaillon = (Maillon *)malloc(sizeof(Maillon));
StrCoup newStrCoup;
newStrCoup.ligne=i;
newStrCoup.colonne=j;
newStrCoup.camp=camp;
newMaillon->coup=newStrCoup;
newMaillon->suivant=teteMaillon;
cpt++;
}
return cpt;
}
/*******************************************************************
*
- Nom : char * donneStringCoupsValides(char -grille, char +camp)
- Entrée : char * grille, char camp
- Sortie : char * representant la liste des coups suivit de \0
-
Liste tous les coups valides pour camp
-
et les retournes dans un char *
******************************************************************/
char * donneStringCoupsValides(char * grille, char camp)
{
Maillon tmp;
Maillon * teteMaillon;
char * coups;
int index=0;
teteMaillon = (Maillon *)malloc(sizeof(Maillon));
teteMaillon->coup=NULL;
printf(“Entrée donneStringCoupsValodes\n”);
donneTousLesCoupsValides(grille,camp,teteMaillon);
printf(“Sortie donneTousLesCoupsValides\n”);
coups=(char *)malloc(sizeof(char)*10000);
do
{ tmp.coup=teteMaillon->coup;
tmp.suivant=teteMaillon->suivant;
*(coups+index)=’(’; index++;
*(coups+index)=tmp.coup.colonne+‘a’; index++;
*(coups+index)=’ ‘; index++;
*(coups+index)=tmp.coup.ligne+1; index++;
*(coups+index)=’)’; index++;
*(coups+index)=’ '; index++;
} while(tmp.suivant!=NULL);
*(coups+index)=’\0’;
return coups;
}
[/cpp]
Cordialement