brelans carrés et autre traiterCarre
re-bonjour à tous ,
mes problèmes de compréhension de mon code continuent ....
Pour ceux qui auraient suivi mon post précédent je n'ajoute que la fonction traiterCarre() que voici :
Code:
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
|
void traiterCarre(int index) {
int nBrelan=0,nCarte,handValue,i,j;
struct Carte *family;
while(brelanCarre[index][nBrelan]) {
fprintf(stdout,"index = %d\tnBrelan = %d\n",index,nBrelan);
nCarte = 0;
while((i = (brelanCarre[index][nBrelan] + nCarte)->rang)) {
// Remplissage du tableau groups;
family = getColor((brelanCarre[index][nBrelan] + nCarte)->color);
(family + i)->used = index;// marquage de la carte dans groups et donne
donne[(family + i)->place].used = index;// selon le niveau
totaux[i]--;family->rang--;
copyKill(family + i,groups);
nCarte++;
}
if(brelanCarre[index+1]) {// d'autre carrés à traiter
traiterCarre(index+1);
}
else {// l'évaluation de la main peut commencer
setSuite(coeur);
setSuite(trefle);
setSuite(carreau);
setSuite(pique);
setNulle(coeur,carreau,trefle,pique);
handValue = evalLowCost();
if(handValue < defaultBest) {// on trouve une meilleure main
for(j=nulles[0].rang;j>0;j--) copyKill(nulles + j,bestHand);
defaultBest = handValue;
}
}
afficheMain();
// nouvelle main avec prise en compte des cartes marquées
setMain_1(index);
nBrelan += 1;// brelan suivant
}
} |
à l'exécution on se trouve avec un boucle sans fin;
or, grâce au fprintf (avec \n en fin , merci Sve@r) , les valeurs de "index" et de "nBrelan" restent à zéro ?!
Je trouve cela plutôt anormal car soit :
1) appel récursif de traiterCarre => index+1
2) pas d'appel récursif => nBrelan+1
Quel est le problème ?