Language C probleme boucle while main.
popsitune
-
popsitune -
popsitune -
bonjour je dois programmer pour ma fac un jeu contagion.
j'ai deja fait tout le jeu mais j'ai un probleme au niveau de la condition d'arret de mon jeu qui ne fonctionne pas comme prevu apres 2 jous a chercher je ne trouve toujours pas par moi même.
je Voudrais donc que le jeu s'arrete quand l'un des 2 sous programme return son *test=true.
voici les 2 sous programme qui ne fonctionne pas.
bool plusDePion (grille plateau,bool*test){
int lig=1;
int col;
int cptPlusX=0;/*compteur qui augmente qd il ne trouve pas de X si il est egal a 49, plus de piece X*/
int cptPlusO=0;/*compteur qui augmente qd il ne trouve pas de O si il est egal a 49, plus de piece O*/
while(lig<TAILLE){
col=1;
while(col<TAILLE){
if(plateau[lig][col]!='x'){
cptPlusX=cptPlusX+1;
}else if(plateau[lig][col]!='x'){
cptPlusO=cptPlusO+1;
}
col=col+1;
}
lig=lig+1;
}
if(cptPlusX==49){
*test=true;
return *test;
}else if(cptPlusO==49){
*test=true;
return *test;
}
else{
*test=false;
return *test;
}
}
il verifie toute les case du tableau a chaque fois qu'il trouve un x il monte le compteur X de même pour le compteur O.
puis il retourne un true dans test si il n'as trouver aucun X de même pour les O sinon false et le programme peu donc continuer.( le programme stop a true.
et le 2 eme sous programme
bool finPartie(grille plateau,bool*test,int*cptGagnantX,int*cptGagnantO){
int lig=1;
int col;
while(lig<TAILLE){
col=1;
while(col<TAILLE){
if (plateau[lig][col]=='o'){/*si la case est un O*/
*cptGagnantO=*cptGagnantO+1;
}else if (plateau[lig][col]=='x'){
*cptGagnantX=*cptGagnantX+1;
}
if(*cptGagnantX+*cptGagnantO==49){/*si le tableau est plein on arrete*/
*test=true;
return *test;
}else {/*si une case est vide on continue*/
*test=false;
return *test;
}
col=col+1;
}
lig=lig+1;
}
*test=true;
return *test;
}
il verifie toute les case du tableau si l'une d'elle est un O, il monte le compteur o si c'est un X il monte le compteur X puis si la somme des 2 est egale a 49 donc que le tableau est plein, il return un true dc stop la boucle sinon si une case est vide la boucle continue.
et voila le main
int main(void){
grille plateau;
float temps;
int ligSelect,colSelect;/*enregistre les ligne et colonne pr reconnaitre la position d'un pion selectionner */
int ligDest,colDest;/*enregistre les lignes et colonnes pr reconnaitre la position de destination d'un pion*/
int cptJoueur=0;/*compteur de tours et de joueur*/
char pionSelect;/*enregistre le pion selectionner pr suivre son deplacement*/
int gagnantX=0;/*compte le nombre de pion X*/
int gagnantO=0;/*compte le nombre de pion O*/
bool finJeu;
initTableau(plateau);
afficherTab(plateau);
while(finJeu==false){
selectionnerPion(plateau,&cptJoueur,&pionSelect,&ligSelect,&colSelect);
choixDeLarriver(plateau,&cptJoueur,&pionSelect,&ligDest,&colDest,&ligSelect,&colSelect);
copierDeplacer(plateau,&cptJoueur,&pionSelect,&ligDest,&colDest,&ligSelect,&colSelect);
finPartie(plateau,&finJeu,&gagnantX,&gagnantO);
plusDePion(plateau,&finJeu);
}
if(gagnantX>gagnantO){
printf(" le gagnant est le joueur X!");
}else printf("le gagnant est le joueur O!");
return(0);
}
Merci d'avance :)
j'ai deja fait tout le jeu mais j'ai un probleme au niveau de la condition d'arret de mon jeu qui ne fonctionne pas comme prevu apres 2 jous a chercher je ne trouve toujours pas par moi même.
je Voudrais donc que le jeu s'arrete quand l'un des 2 sous programme return son *test=true.
voici les 2 sous programme qui ne fonctionne pas.
bool plusDePion (grille plateau,bool*test){
int lig=1;
int col;
int cptPlusX=0;/*compteur qui augmente qd il ne trouve pas de X si il est egal a 49, plus de piece X*/
int cptPlusO=0;/*compteur qui augmente qd il ne trouve pas de O si il est egal a 49, plus de piece O*/
while(lig<TAILLE){
col=1;
while(col<TAILLE){
if(plateau[lig][col]!='x'){
cptPlusX=cptPlusX+1;
}else if(plateau[lig][col]!='x'){
cptPlusO=cptPlusO+1;
}
col=col+1;
}
lig=lig+1;
}
if(cptPlusX==49){
*test=true;
return *test;
}else if(cptPlusO==49){
*test=true;
return *test;
}
else{
*test=false;
return *test;
}
}
il verifie toute les case du tableau a chaque fois qu'il trouve un x il monte le compteur X de même pour le compteur O.
puis il retourne un true dans test si il n'as trouver aucun X de même pour les O sinon false et le programme peu donc continuer.( le programme stop a true.
et le 2 eme sous programme
bool finPartie(grille plateau,bool*test,int*cptGagnantX,int*cptGagnantO){
int lig=1;
int col;
while(lig<TAILLE){
col=1;
while(col<TAILLE){
if (plateau[lig][col]=='o'){/*si la case est un O*/
*cptGagnantO=*cptGagnantO+1;
}else if (plateau[lig][col]=='x'){
*cptGagnantX=*cptGagnantX+1;
}
if(*cptGagnantX+*cptGagnantO==49){/*si le tableau est plein on arrete*/
*test=true;
return *test;
}else {/*si une case est vide on continue*/
*test=false;
return *test;
}
col=col+1;
}
lig=lig+1;
}
*test=true;
return *test;
}
il verifie toute les case du tableau si l'une d'elle est un O, il monte le compteur o si c'est un X il monte le compteur X puis si la somme des 2 est egale a 49 donc que le tableau est plein, il return un true dc stop la boucle sinon si une case est vide la boucle continue.
et voila le main
int main(void){
grille plateau;
float temps;
int ligSelect,colSelect;/*enregistre les ligne et colonne pr reconnaitre la position d'un pion selectionner */
int ligDest,colDest;/*enregistre les lignes et colonnes pr reconnaitre la position de destination d'un pion*/
int cptJoueur=0;/*compteur de tours et de joueur*/
char pionSelect;/*enregistre le pion selectionner pr suivre son deplacement*/
int gagnantX=0;/*compte le nombre de pion X*/
int gagnantO=0;/*compte le nombre de pion O*/
bool finJeu;
initTableau(plateau);
afficherTab(plateau);
while(finJeu==false){
selectionnerPion(plateau,&cptJoueur,&pionSelect,&ligSelect,&colSelect);
choixDeLarriver(plateau,&cptJoueur,&pionSelect,&ligDest,&colDest,&ligSelect,&colSelect);
copierDeplacer(plateau,&cptJoueur,&pionSelect,&ligDest,&colDest,&ligSelect,&colSelect);
finPartie(plateau,&finJeu,&gagnantX,&gagnantO);
plusDePion(plateau,&finJeu);
}
if(gagnantX>gagnantO){
printf(" le gagnant est le joueur X!");
}else printf("le gagnant est le joueur O!");
return(0);
}
Merci d'avance :)
A voir également:
- Language C probleme boucle while main.
- Désactiver remise en main propre leboncoin - Forum Vos droits sur internet
- Delai paiement le bon coin remise en main propre - Forum Vos droits sur internet
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Prise en main a distance windows - Guide
- Photoshop french language pack ✓ - Forum Photoshop