je ne comprends pas pourquoi mon prog ne rentre pas dans une boucle do...while
C'est d'autant plus étrange que ça fonctionne bien quelques lignes au dessus.
Ce morceau de code là fonctionne comme il faut.
- Code: Tout sélectionner
if(estTigre==1)
{
/***********************************************si le joueur est Tigre******************************************************/
while(nb_chevre_place != NB_CHEVRE)
{
//tant que la phase de placemant n'est pas terminé
affichage_PlateauCurses(P);
if((action_estVainqueurChevre(P,nb_tour)==FAUX) && (action_estVainqueurTigre(P,nb_tour)==FAUX))
{
//S'il n'y a pas un vainqueur la chèvre pose une chèvre
do {
posHc=rand()%(TAILLE_PLATEAU_LARGEUR-1);//les positions des chèvres sont aléatoires
posVc=rand()%(TAILLE_PLATEAU_LONGUEUR-1);
}while(deplacement_estPlacementValide(P,posHc,posVc)==FAUX);
printw("Appuyez sur une touche pour passer au prochain tour\n");
getch();
action_placerChevre(P,posHc,posVc);
affichage_PlateauCurses(P);
//le joueur tigre déplace un tigre
do{
printw("%s: Quel tigre voulez vous déplacer selon une position (x,y) :",Tigre.nom);
printw("("); posHt=getch();printw(",");posVt=getch();printw(")\n");
posHt=posHt-48;
posVt=posVt-48;
}while((posHt= TAILLE_PLATEAU_LARGEUR) || (posVt= TAILLE_PLATEAU_LONGUEUR));
do{
printw("%s: Où voulez vous déplacer selon une position (x,y) :",Tigre.nom);
printw("("); new_posHt=getch();printw(",");new_posVt=getch();printw(")\n");
new_posHt=new_posHt-48;
new_posVt=new_posVt-48;
}while(deplacement_estPlacementValide(P,new_posHt,new_posVt)==FAUX);
action_deplacer(P,posHt,posVt,new_posHt,new_posVt,&Tigre);
//getch();
affichage_PlateauCurses(P);
nb_tour++;
}
else
{
//s'il y a un vainqueur on force la sortie de boucle
nb_chevre_place= NB_CHEVRE;
}
clear();
}
}
Mais en reprenant la même structure, je ne rentre pas dans un do_while.
J'ai identifié ce problème en faisant un affichage qui ne sors pas ne console.
C'est étrange, au début je pensais que cela était dpu à mno rand qui ne devait jamais tapé sur la bonne case et que j'avais juste pas de bol et que je prenais une boucle infini. Mais en fait non vu que l'on a même pas un seul affichage de printw de la boucle.
- Code: Tout sélectionner
else
{
/************************************************************si le joueur a choisi le role de chèvre***************************************/
while(nb_chevre_place != NB_CHEVRE)
{
//tant que la phase de placemant n'est pas terminé
int num_case;
affichage_PlateauCurses(P);
if((action_estVainqueurChevre(P,nb_tour)==FAUX) && (action_estVainqueurTigre(P,nb_tour)==FAUX))
{
//S'il n'y a pas un vainqueur la chèvre pose une chèvre
do{
printw("%s: Où voulez vous placer une chèvre selon une position (x,y) :",Chevre.nom);
printw("("); posHc=getch();printw(",");posVc=getch();printw(")\n");
posHc=posHc-48;
posVc=posVc-48;
}while((posHc= TAILLE_PLATEAU_LARGEUR) || (posVc= TAILLE_PLATEAU_LONGUEUR));
action_placerChevre(P,posHc,posVc);
affichage_PlateauCurses(P);//a noter qu'ici à l'affichage la chèvre est bien posé, il n'y a donc pas de raison de ne pas entrer dans le do while
//le joueur tigre déplace un tigre
[COLOR=Red]do{
//on tape aléatoirement sur le plateau jusqu'à trouver un tigre
posHt=rand()%(TAILLE_PLATEAU_LARGEUR-1);
posVt=rand()%(TAILLE_PLATEAU_LONGUEUR-1);
num_case=action_posCase(posHt,posVt);
printw("%d",num_case); //aucun affichage de cette valeur
}while(P->cases[num_case].value!='T');[/COLOR]
do{
//on tape aléatoirement sur le plateau jusqu'à trouver un déplacement possible
new_posHt=rand()%(TAILLE_PLATEAU_LARGEUR-1);
new_posVt=rand()%(TAILLE_PLATEAU_LONGUEUR-1);
num_case=action_posCase(new_posHt,new_posVt);
}while((deplacement_estDeplacementValideTigre(P,posHt,posVt,new_posHt,new_posVt)==FAUX) || (deplacement_estCaptureChevreValide(P,posHt,posVt,new_posHt,new_posHt)==FAUX));
action_deplacer(P,posHt,posVt,new_posHt,new_posVt,&Tigre);
affichage_PlateauCurses(P);
nb_tour++;
}
else
{
//s'il y a un vainqueur on force la sortie de boucle
nb_chevre_place= NB_CHEVRE;
}
clear();
}
}
J'ai mis en rouge la partie concerné.Auriez vous une idée de ce qui peut me causer ça ?
