printf("selectionner le mode\nPour cela il vous suffit de choisir le chiffre correspondant au mode:\n\t");
printf("1.Mode 1 joueur\n\n\t");
printf("2.Mode 2 joueurs\n\n\t");
scanf("%d", &Mode);
switch(Mode)//liaison entre chiffre et mode
{
case1:
nom();
printf("Nous allons jouer a devine le nombre(ou le chiffre) que j'ai choisi.\n\t\t\tC'est hyper simple; tu devine juste le nomre ue j'ai choisi aleatooirement et le tour est jouer\n\n\n\nPour commencer choisit ton nombre(compris entre 0 et 100),j'ai deja choisi le mien\n\n");
do
{
scanf("%d", &Nombre_du_joueur1);
if(Nombre_du_joueur1<0|| Nombre_du_joueur1>100)
printf("t'es idiot ou quoi. j'ai entre 0 et 100\n");
elseif(Nombre_du_joueur1>Nombre_aleatoire)
printf("le tient est superieur au mien, recommence\n");
elseif(Nombre_du_joueur1<Nombre_aleatoire)
printf("le tient est inferieur au mien, recommence\n");
else
printf("§§§§§Bravo§§§§§. t'as trouver, t'es un genie\nt'as eu la reponse en %d coups", Nombre_de_coups);
Nombre_de_coups++;
}while(Nombre_du_joueur1!=Nombre_aleatoire);
break;
case2: //mode deux joueurs
printf("que le joueur 1 tape so numero en cachette\n");
scanf("%d", &Nombre_du_joueur1);
do
{
printf("au joueur 2 de jouer\n\n\t");
scanf("%d", &Nombre_du_joueur2);
if(Nombre_du_joueur2>Nombre_du_joueur1)
printf("le tient est superieur au sien, recommence\n");
elseif(Nombre_du_joueur2<Nombre_du_joueur1)
printf("le tient est inferieur au sien, recommence\n");
else
printf("§§§§§Bravo§§§§§. t'as trouver, t'es un genie\nt'as eu la reponse en %d coups", Nombre_de_coups);
le proleme se pose au miveau de ma fonction: elle recupere le nom et le prenom, mais au lieu de les affichés tous les deux elle affiche les prenoms deux fois.
exemple:
- prenom=brice et nom= cachmir
ma fonction va affiché ceci bienvenue Mr rice brice (j'ai pas oublié le b du premier brice. c'est eactement ce que ma fonction afiche)
Bonjour ! Je crois que l'erreur vient de ce que tu as déclaré 'prenom' et 'nom' comme des caractères, et non comme des chaînes de caractères. Et tout le reste est logique :
char nom=0, prenom=0;
'prenom' et 'nom' prennent chacun 1 octet (type char), et cet octet est rempli par un 0. On a donc deux octets : 0, 0.
scanf("%s", &nom);
Lorsque tu entres « cachmir », le 'c' va dans le deuxième octet (celui réservé pour 'nom'), le 'a' dans l'octet qui suit (bien qu'il ne soit pas sensé être utilisé) et ainsi de suite. Les octets sont maintenant : 0, c, a, c, h, m, i, r, 0 (et seuls les deux premiers sont sensés être utilisés).
scanf("%s", &prenom);
Lorsque tu entres « brice », le premier octet reçoit 'b', le deuxième reçoit 'r', et les autres reçoivent 'i', 'c', 'e', et 0. Les octets sont maintenant : b, r, i, c, e, 0, i, r, 0.
Il affiche 'nom', qui est un caractère, avec le format %s, donc il va tout afficher jusqu'à rencontrer le caractère nul. Tout afficher à partir du deuxième octet, puisque 'nom' est stocké au deuxième octet. Donc, pour 'nom', il affichera « rice ».
Pour 'prenom', c'est pareil, mais à partir du premier octet, puisque 'prenom' est stocké au premier octet. Donc, pour 'prenom', il affichera « brice ».
(Apparemment il a stocké d'abord 'nom' puis 'prenom' dans cet ordre.)
Je ne parviens pas à continuer le jeu lorsque je demande.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, const char * argv[])
{
int nombreDejoueur;
printf ("1. 1 joueur\n\n2. 2 joueurs\n\n");
scanf ("%d", &nombreDejoueur);
if (nombreDejoueur == 1)
{
const int MAX = 100, MIN = 1;
int nombreEntre = 0,
nombreMystere = 0,
compteurCoups = 0,
continuerPartie = 1;
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
printf ("Vous devez deviner le nombre\n\n");
do
{
printf("Entrez un nombre ! \n");
scanf("%d", &nombreEntre);
// On compare le nombre entré avec le nombre mystère
if (nombreMystere > nombreEntre)
printf("C'est plus !\n\n");
else if (nombreMystere < nombreEntre)
printf("C'est moins !\n\n");
else
printf("Bravo, vous avez trouve le nombre mystere en %d coups !!!\n\n", compteurCoups);
compteurCoups++;
}while (nombreEntre != nombreMystere);
printf ("Taper 1 pour continuer a jouer ou 0 pour quitter le jeu :\n\n");
scanf ("%d", &continuerPartie);
}
else
{
int nombreEntre = 0,
nombreMystere = 0,
compteurCoups = 0,
continuerPartie = 1;
printf(" joueur 1 doit entrer un nombre pour que le joueur 2 devine !\n\n");
scanf("%d", &nombreMystere);
printf (" Devinez le nombre mystere ! \n\n");
do
{
if (continuerPartie == 1)
printf("entrez un nombre ! \n");
scanf("%d", &nombreEntre);
if (nombreMystere > nombreEntre)
printf("C'est plus !\n\n");
else if (nombreMystere < nombreEntre)
printf("C'est moins !\n\n");
else
printf("Bravo, vous avez trouve le nombre mystere en %d coups !!!\n\n", compteurCoups);
compteurCoups++;
}while (nombreEntre != nombreMystere);
printf ("Taper 1 pour continuer a jouer ou 0 pour quitter le jeu :\n\n");
scanf ("%d", &continuerPartie);
}
return 0;
}
Il aurait été bien de créer ton propre sujet et ne pas "polluer" celui de quelqu'un d'autre. Concernant ton code, il y a pas mal de problèmes d'indentation ce qui rend le code relativement illisible.
Concernant le fond, en effet dans ton code tu demande au joueur si il veux rejouer et tu met bien à jour la variable pour continuer la partie, mais tu ne reboucle pas au début de la partie, il faudrait mettre tout ton jeu dans une grande boucle while qui vérifie la valeur de la variable continuer partie
Déjà si tu pouvais indenter ton code ce serait plus facile à lire, parce que là c'est chaud à s'y retrouver .
Sinon, c'est normal que la partie ne continue pas. Regarde ta ligne 67 par exemple. Tu ne te sers pas de ta variable continuerPartie. Ce qu'il faudrait faire c'est mettre tout ton code dans une boucle while comme ceci:
int main(int argc, const char * argv[])
{
int continuerPartie = 1;
while(continuerPartie)
{
//Ton code
}
return 0;
}
Je n'ai pas testé mais je pense que ça devrait marcher. A+
edit: dsl LChalam, on a répondu en même temps
- Edité par Sylabio 23 août 2017 à 8:49:58
Plus j'apprends et plus je me rends compte que je ne sais rien.
Plus j'apprends et plus je me rends compte que je ne sais rien.
plus ou moins
× 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.
Plus j'apprends et plus je me rends compte que je ne sais rien.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Plus j'apprends et plus je me rends compte que je ne sais rien.