Comme vous allez le remarquer je suis entrain de faire la formation pour apprendre le langage C.
J'ai essaye de faire les améliorations,ceux qui sont avant les fonctions.
J'ai réaliser une boucle do..while ayant pour but de s'activer lorsque le nombre du joueur 1 n'est pas compris entre 1 et 100. Lorsque le joueur choisie un nombre qui n'est pas compris entre 1 et 100 la boucle ne s'active pas. J'aimerais si possible vôtre avis, car j'ai beau relire mon code je ne comprend pas où est l'erreur.
Merci par avance de vôtre aide.
Voici mon code, le problème est à la fin, après bienvenue dans le mode 2 joueurs :
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ( int argc, char** argv )
{
printf("Bienvenue\nNous allons jouer a un petit jeu :\nTout d'abord, veuillez selectioner le mode de jeux :\n 0) Mode contre l'IA\n 1) Mode 2 joueurs\n");
int choixjoueurs = 0;
scanf("%d", &choixjoueurs);
if (choixjoueurs == 0)
{
printf("Bienvenue dans le mode 1 joueur\n");
const int MAX = 100, MIN = 1;
int nombrejoueurs = 0, nombresmystere = 0;
srand(time(NULL));
nombresmystere = (rand() % (MAX - MIN + 1)) + MIN;
int comptetour = 0;
int continuerpartie = 0;
do
{
do
{
printf("Veullez choisir un chiffre :\n");
scanf ("%d", &nombrejoueurs);
if (nombrejoueurs > nombresmystere)
{
printf("C'est moins\n");
comptetour = comptetour + 1;
}
else if (nombrejoueurs < nombresmystere)
{
printf("C'est plus\n");
comptetour = comptetour + 1;
}
else
{
printf("Bravo vous avez devinez le nombre avec %d coups\n", comptetour);
}
} while (nombrejoueurs != nombresmystere);
printf("Est ce que vous vouler continuer, taper 0 sinon 1\n");
scanf("%d", &continuerpartie);
} while (continuerpartie == 0);
}
else
{
printf("Bienvenue dans le mode 2 joueurs\n");
int nbrsjoueur1;
int nbrsjoueur2;
do
{
printf("Le joueur 1 doit choisir un nombre entre 1 et 100, le joueur 2 devra deviner se nombre en moins de coup possible :\n");
scanf("%d", &nbrsjoueur1);
if (nbrsjoueur1 >= 1 && nbrsjoueur1 <= 100)
{
printf("Merci\n");
}
else
{
printf("Veuillez reesayer\n");
}
} while (nbrsjoueur1 <= 1 && nbrsjoueur1 >= 100);
}
return 0;
}
Évite le mot activer ! On parle plutôt de condition du while qui est soit vrai soit fausse !
Tu veux ré exécuter la boucle si nbrsjoueur1 est <= 1 ou si nbrsjoueur1 est>= 100
Dans ton code pour ré éxécuter la boucle, il faut que nbrsjoueur1 soit <= 1 et que nbrsjoueur1 soit >=100 or il ne peut pas être les deux à la fois ! Ce qui fait que la condition est toujours fausse !
Évite le mot activer ! On parle plutôt de condition du while qui est soit vrai soit fausse !
Tu veux ré exécuter la boucle si nbrsjoueur1 est <= 1 ou si nbrsjoueur1 est>= 100
Dans ton code pour ré éxécuter la boucle, il faut que nbrsjoueur1 soit <= 1 et que nbrsjoueur1 soit >=100 or il ne peut pas être les deux à la fois ! Ce qui fait que la condition est toujours fausse !
Merci pour ta réponse, du coup ça marche, merci beaucoup
Ah la la, on dirait qu'aujourd'hui personne ne se comprend...
Ce que disait edgarjacobs, c'est que pour comprendre la ligne qui intriguait ironwolf151, il faut ôter le 's'. Pour comprendre la ligne. (En effet, à cause du 's' on pourrait croire qu'il s'agit du nombre de joueurs, pas du nombre entré par le joueur.)
Boucle do..while, ne s'active pas
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Je ne comprends pas cette condition
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent