Bonjour tout le monde
Je suis bloqué lors de la compilation de mon code source, voila le problème qu'il m'affiche A LA LIGNE 158 :
error : expected 'while' before '}' token
Le code source
int main(int argc, char *argv[])
{
long NombreJoueur= 0, NombreEntre=0,nombreMax = 0, NombreMystere= 0, coups= 1, continuer= 1, niveau= 0, lignes= 0;
const long MIN = 1;
while (continuer = 1)
{
printf("Bienvenue dans mon jeu !\n");
printf("Le but consiste a deviner le nombre exacte en un nombre minimum de coups !\n\n\n");
printf("===Choisissez votre mode de jeu ===\n\n");
printf("\n");
printf("1.Solo\n\n");
printf("2.Deux joueurs\n\n");
printf("Que choisissez-vous?");
scanf("%ld", &NombreJoueur);
switch (NombreJoueur)
{
case 1 :
(NombreJoueur= 1);
break;
case 2 :
(NombreJoueur= 2);
break;
default :
printf("Cette valeur n'est pas valide\n");
}
printf("\n\n");
printf("===Choississez votre niveau===\n");
printf("\n");
printf("1. Niveau 1 a 10\n\n");
printf("2. Niveau 1 a 100\n\n");
printf("3. Niveau 1 a 1000\n\n");
printf("Que choisissez-vous ?");
scanf("%ld", &niveau);
switch(niveau)
{
case 1 :
(nombreMax= 10);
break;
case 2 :
(nombreMax= 100);
break;
case 3 :
(nombreMax= 1000);
break;
default :
printf("Cette valeur n'est pas valide\n");
}
//Mode Solo
if (NombreJoueur!= 2)
{
srand (time(NULL)); // Génération du nombre aléatoire
NombreMystere = (rand() % (nombreMax - MIN + 1)) + MIN;
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("Trouve le nombre mystere !!\n\n");
printf("\n");
printf("Quel est-ce nombre ?");
do
{
scanf("%ld", &NombreEntre );
if (NombreMystere > NombreEntre)
{
printf("C'est plus !\n");
coups++;
}
else if (NombreMystere < NombreEntre)
{printf("C'est moins !\n");
coups++;
}
else
{
printf("Bravo tu as trouve le nombre en %ld coups !", coups);
}
}while (NombreMystere!=NombreEntre);
}
// Mode 2 joueurs
if (NombreJoueur!=1)
{
srand (time(NULL)); // Génération du nombre aléatoire
NombreMystere = (rand() % (nombreMax - MIN + 1)) + MIN;
printf("\n\n");
printf("===Choisissez le nombre mystere pour le second joueur===\n\n");
printf("Quel nombre avez-vous choisi ?");
scanf("%ld", &NombreMystere);
while (lignes < 170)
{
printf("Interdit de remonter la page!!!\n");
lignes++;
}
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("*****Le joueur numero 2 a entre le nombre mystere*****");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("===A votre tour, joueur numero 1, trouver ce nombre mystere !===");
printf("\n");
printf("Quel est-ce nombre ?");
do
{
scanf("%ld", &NombreEntre);
if (NombreMystere > NombreEntre)
{
printf("\n\n");
printf("c'est plus !");
coups++;
}
else if (NombreMystere < NombreEntre)
{
printf("\n\n");
printf("c'est moins !");
coups++;
}
else
{
printf("\n\n\n\n\n");
printf("===Bravo vous avez trouve le nombre en %ld coups ===\n", coups);
printf("\n\n");
}
if (NombreMystere==NombreEntre)
{
printf("Voulez-vous faire une autre partie?\n");
printf("1. Menu\n");
printf("0. Quitter\n");
printf("Que choisissez-vous?");
scanf("%ld", &continuer);
}
}
}
}
}
Savez-vous comment faire, pour le rendre opérationnel?
Merci d'avance ![]()
La ligne 158 est la 3ème accolade '}' en partant du bas
Je te conseille d'aller sur le forum du Site du Zero, ils sont plus calés niveau prog là bas ! ![]()
D'accord merci!
int main(int argc, char *argv[])
{
long NombreJoueur= 0, NombreEntre=0,nombreMax = 0, NombreMystere= 0, coups= 1, continuer= 1, niveau= 0, lignes= 0;
const long MIN = 1;
while (continuer = 1)
{
printf("Bienvenue dans mon jeu !\n");
printf("Le but consiste a deviner le nombre exacte en un nombre minimum de coups !\n\n\n");
printf("===Choisissez votre mode de jeu ===\n\n");
printf("\n");
printf("1.Solo\n\n");
printf("2.Deux joueurs\n\n");
printf("Que choisissez-vous?");
scanf("%ld", &NombreJoueur);
switch (NombreJoueur)
{
case 1 :
(NombreJoueur= 1);
break;
case 2 :
(NombreJoueur= 2);
break;
default :
printf("Cette valeur n'est pas valide\n");
}
printf("\n\n");
printf("===Choississez votre niveau===\n");
printf("\n");
printf("1. Niveau 1 a 10\n\n");
printf("2. Niveau 1 a 100\n\n");
printf("3. Niveau 1 a 1000\n\n");
printf("Que choisissez-vous ?");
scanf("%ld", &niveau);
switch(niveau)
{
case 1 :
(nombreMax= 10);
break;
case 2 :
(nombreMax= 100);
break;
case 3 :
(nombreMax= 1000);
break;
default :
printf("Cette valeur n'est pas valide\n");
}
//Mode Solo
if (NombreJoueur!= 2)
{
srand (time(NULL)); // Génération du nombre aléatoire
NombreMystere = (rand() % (nombreMax - MIN + 1)) + MIN;
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("Trouve le nombre mystere !!\n\n");
printf("\n");
printf("Quel est-ce nombre ?");
do
{
scanf("%ld", &NombreEntre );
if (NombreMystere > NombreEntre)
{
printf("C'est plus !\n");
coups++;
}
else if (NombreMystere < NombreEntre)
{
printf("C'est moins !\n");
coups++;
}
else
{
printf("Bravo tu as trouve le nombre en %ld coups !", coups);
}
}
// ton érreur était ici après le while tu met une accolade fermé .. je l'ai modifié
while (NombreMystere!=NombreEntre);
//}
{
// Mode 2 joueurs
if (NombreJoueur!=1)
{
srand (time(NULL)); // Génération du nombre aléatoire
NombreMystere = (rand() % (nombreMax - MIN + 1)) + MIN;
printf("\n\n");
printf("===Choisissez le nombre mystere pour le second joueur===\n\n");
printf("Quel nombre avez-vous choisi ?");
scanf("%ld", &NombreMystere);
while (lignes < 170)
{
printf("Interdit de remonter la page!!!\n");
lignes++;
}
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("*****Le joueur numero 2 a entre le nombre mystere*****");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("===A votre tour, joueur numero 1, trouver ce nombre mystere !===");
printf("\n");
printf("Quel est-ce nombre ?");
do
{
scanf("%ld", &NombreEntre);
if (NombreMystere > NombreEntre)
{
printf("\n\n");
printf("c'est plus !");
coups++;
}
else if (NombreMystere < NombreEntre)
{
printf("\n\n");
printf("c'est moins !");
coups++;
}
else
{
printf("\n\n\n\n\n");
printf("===Bravo vous avez trouve le nombre en %ld coups ===\n", coups);
printf("\n\n");
}
if (NombreMystere==NombreEntre)
{
printf("Voulez-vous faire une autre partie?\n");
printf("1. Menu\n");
printf("0. Quitter\n");
printf("Que choisissez-vous?");
scanf("%ld", &continuer);
}
}
}
}
}
j'ai modifier ton code est mit des commentaires vu tu t'étais gouré , erreur de débutant en plus ...
il est enfaite mal placé ton while (NombreMystere!=NombreEntre);
int main(int argc, char *argv[])
{
long NombreJoueur= 0, NombreEntre=0,nombreMax = 0, NombreMystere= 0, coups= 1, continuer= 1, niveau= 0, lignes= 0;
const long MIN = 1;
while (continuer = 1)
{
printf("Bienvenue dans mon jeu !\n");
printf("Le but consiste a deviner le nombre exacte en un nombre minimum de coups !\n\n\n");
printf("===Choisissez votre mode de jeu ===\n\n");
printf("\n");
printf("1.Solo\n\n");
printf("2.Deux joueurs\n\n");
printf("Que choisissez-vous?");
scanf("%ld", &NombreJoueur);
switch (NombreJoueur)
{
case 1 :
(NombreJoueur= 1);
break;
case 2 :
(NombreJoueur= 2);
break;
default :
printf("Cette valeur n'est pas valide\n");
}
printf("\n\n");
printf("===Choississez votre niveau===\n");
printf("\n");
printf("1. Niveau 1 a 10\n\n");
printf("2. Niveau 1 a 100\n\n");
printf("3. Niveau 1 a 1000\n\n");
printf("Que choisissez-vous ?");
scanf("%ld", &niveau);
switch(niveau)
{
case 1 :
(nombreMax= 10);
break;
case 2 :
(nombreMax= 100);
break;
case 3 :
(nombreMax= 1000);
break;
default :
printf("Cette valeur n'est pas valide\n");
}
//Mode Solo
if (NombreJoueur!= 2)
{
srand (time(NULL)); // Génération du nombre aléatoire
NombreMystere = (rand() % (nombreMax - MIN + 1)) + MIN;
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("Trouve le nombre mystere !!\n\n");
printf("\n");
printf("Quel est-ce nombre ?");
do
{
scanf("%ld", &NombreEntre );
while (NombreMystere!=NombreEntre);
{
if (NombreMystere > NombreEntre)
{
printf("C'est plus !\n");
coups++;
}
else if (NombreMystere < NombreEntre)
{
printf("C'est moins !\n");
coups++;
}
else
{
printf("Bravo tu as trouve le nombre en %ld coups !", coups);
}
}
// Mode 2 joueurs
if (NombreJoueur!=1)
{
srand (time(NULL)); // Génération du nombre aléatoire
NombreMystere = (rand() % (nombreMax - MIN + 1)) + MIN;
printf("\n\n");
printf("===Choisissez le nombre mystere pour le second joueur===\n\n");
printf("Quel nombre avez-vous choisi ?");
scanf("%ld", &NombreMystere);
while (lignes < 170)
{
printf("Interdit de remonter la page!!!\n");
lignes++;
}
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("*****Le joueur numero 2 a entre le nombre mystere*****");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("===A votre tour, joueur numero 1, trouver ce nombre mystere !===");
printf("\n");
printf("Quel est-ce nombre ?");
do
{
scanf("%ld", &NombreEntre);
if (NombreMystere > NombreEntre)
{
printf("\n\n");
printf("c'est plus !");
coups++;
}
else if (NombreMystere < NombreEntre)
{
printf("\n\n");
printf("c'est moins !");
coups++;
}
else
{
printf("\n\n\n\n\n");
printf("===Bravo vous avez trouve le nombre en %ld coups ===\n", coups);
printf("\n\n");
}
if (NombreMystere==NombreEntre)
{
printf("Voulez-vous faire une autre partie?\n");
printf("1. Menu\n");
printf("0. Quitter\n");
printf("Que choisissez-vous?");
scanf("%ld", &continuer);
}
}
}
je pense que sa devrais marché parfaitement maintenant !
Vous êtes vraiment des quiches... aucune correction proposée ne corrige l'erreur alors que le message d'erreur est explicite:
error : expected 'while' before '}' token
Traduit en français ça donne
erreur: 'while' attendu avant le symbole '}'
En gros tu fais
do
{
scanf("%ld", &NombreEntre);
...
sans mettre de un 'while(condition de continuation)' à la fin du bloc... D'où l'erreur
Edit: j'ai mal vu, il y a plusieurs erreurs avec le do while, dont une a été corrigée par gabria
Va sur le forum créations de jeux il y'a des programmeurs la bas ![]()
J'ai fait sa à l'oeil , j'ai pas visual studio sur ce pc .
si tu veux un editeur avec synthax highlighting rapide et simple pour programmer en C, je te conseille Geany, avec MinGW ca te fait un petit IDE ![]()
int main(int argc, char *argv[])
{
long NombreJoueur= 0, NombreEntre=0,nombreMax = 0, NombreMystere= 0, coups= 1, continuer= 1, niveau= 0, lignes= 0;
const long MIN = 1;
while (continuer = 1)
{
printf("Bienvenue dans mon jeu !\n");
printf("Le but consiste a deviner le nombre exacte en un nombre minimum de coups !\n\n\n");
printf("===Choisissez votre mode de jeu ===\n\n");
printf("\n");
printf("1.Solo\n\n");
printf("2.Deux joueurs\n\n");
printf("Que choisissez-vous?");
scanf("%ld", &NombreJoueur);
switch (NombreJoueur)
{
case 1 :
(NombreJoueur= 1);
break;
case 2 :
(NombreJoueur= 2);
break;
default :
printf("Cette valeur n'est pas valide\n");
}
printf("\n\n");
printf("===Choississez votre niveau===\n");
printf("\n");
printf("1. Niveau 1 a 10\n\n");
printf("2. Niveau 1 a 100\n\n");
printf("3. Niveau 1 a 1000\n\n");
printf("Que choisissez-vous ?");
scanf("%ld", &niveau);
switch(niveau)
{
case 1 :
(nombreMax= 10);
break;
case 2 :
(nombreMax= 100);
break;
case 3 :
(nombreMax= 1000);
break;
default :
printf("Cette valeur n'est pas valide\n");
}
//Mode Solo
if (NombreJoueur!= 2)
{
srand (time(NULL)); // Génération du nombre aléatoire
NombreMystere = (rand() % (nombreMax - MIN + 1)) + MIN;
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("Trouve le nombre mystere !!\n\n");
printf("\n");
printf("Quel est-ce nombre ?");
do
{
scanf("%ld", &NombreEntre );
if (NombreMystere > NombreEntre)
{
printf("C'est plus !\n");
coups++;
}
else if (NombreMystere < NombreEntre)
{
printf("C'est moins !\n");
coups++;
}
else
{
printf("Bravo tu as trouve le nombre en %ld coups !", coups);
}
}
while (NombreMystere!=NombreEntre);
}
// Mode 2 joueurs
if (NombreJoueur!=1)
{
srand (time(NULL)); // Génération du nombre aléatoire
NombreMystere = (rand() % (nombreMax - MIN + 1)) + MIN;
printf("\n\n");
printf("===Choisissez le nombre mystere pour le second joueur===\n\n");
printf("Quel nombre avez-vous choisi ?");
scanf("%ld", &NombreMystere);
while (lignes < 170)
{
printf("Interdit de remonter la page!!!\n");
lignes++;
}
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("*****Le joueur numero 2 a entre le nombre mystere*****");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("===A votre tour, joueur numero 1, trouver ce nombre mystere !===");
printf("\n");
printf("Quel est-ce nombre ?");
do
{
scanf("%ld", &NombreEntre);
if (NombreMystere > NombreEntre)
{
printf("\n\n");
printf("c'est plus !");
coups++;
}
else if (NombreMystere < NombreEntre)
{
printf("\n\n");
printf("c'est moins !");
coups++;
}
else
{
printf("\n\n\n\n\n");
printf("===Bravo vous avez trouve le nombre en %ld coups ===\n", coups);
printf("\n\n");
}
if (NombreMystere==NombreEntre)
{
printf("Voulez-vous faire une autre partie?\n");
printf("1. Menu\n");
printf("0. Quitter\n");
printf("Que choisissez-vous?");
scanf("%ld", &continuer);
}
}
while (NombreMystere!=NombreEntre);
}
}
return 0;
}
J'ai oublié de commenté et du coup je sais plus ce que j'ai corrigé, mais bref là ça passe. Par contre il y a au moins une autre erreur de débutant (mais qui n'empechera pas le code de se lancer), et quand tu l'auras trouvée, tu auras une autre surprise en lançant le mode 1 joueur, mais j'en dis pas plus :p
En fait on tu avais juste oublié le "while (NombreMystere!=NombreEntre); " à la fin du deuxième do...while
Mais bref, y a encore quelques soucis dans ce code, mais à toi de trouver ^^
LE JEU MYSTEEEEEEEERE
Mon premier programme "utile" en C
Ce tutoriel est franchement pas mal, mais le C c'est vite soulant, en tout cas arrivé à un certain niveau (les pointeurs et les strings
). En tout cas moi il m'a dégoûté de la prog, et je conseillerais à n'importe qui se lançant dans la chose de faire du C# par exemple, bien moins verbeux et plus soft pour un premier language ![]()
boarf, les pointeurs une fois qu'on a bien compris c'est pas si complique que ca, pareil pour les strings. Perso je faisait du Delpi avant et j'aime beaucoup le degre de controle qu'on a avec le C, comme l'allocation au byte pres de la memoire dont on a besoin etc. Et la synthaxe peut-etre un poil plus compliquee que les autres langages oblige a etre rigoureux ![]()