Partage
  • Partager sur Facebook
  • Partager sur Twitter

Solution amélioration du jeu "Plus ou Moins"

13 août 2015 à 20:28:43

Salut

Tu peux de plus éditer tes messages en cliquant sur "Modifier" en haut à droite de tes messages.

  • Partager sur Facebook
  • Partager sur Twitter
13 août 2015 à 20:49:34

Squall31 a écrit:

Salut

Tu peux de plus éditer tes messages en cliquant sur "Modifier" en haut à droite de tes messages.

merci beaucoup pour ta reponse !

  • Partager sur Facebook
  • Partager sur Twitter
13 août 2015 à 20:52:18

merci

-
Edité par NacimGuenane 13 août 2015 à 20:52:56

  • Partager sur Facebook
  • Partager sur Twitter
14 août 2015 à 16:40:10

NacimGuenane a écrit:

buzzromain a écrit:

Bonjour,

Pour tous ceux qui cherche la solution aux amélioration du jeu "Plus ou Moins".

Voici la solution :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

//Ecrit par buzzromain

int main(int argc, char *argv[])
{

    printf("=== PLUS OU MOINS ===\n\n");
    printf("Le but du jeu est de deviner le nombre mystere !\n\n");
    int nombreMystere = 0, nombreEntre = 0, nombreCoups = 0, continuerPartie = 1, niveauDifficulte = 0, MAX = 1, modejeu = 0;
    const int MIN = 1;

    do
    {
        nombreCoups = 0;
        printf("=== MENU ===\n");
        printf("Choisissez un mode de jeu : \n");
        printf("1. Mode solo\n");
        printf("2. Mode multijoueur\n");

        do
        {

        printf("Votre choix ? ");
        scanf("%d", &modejeu);
        }while(modejeu < 1 || modejeu > 2);
        switch(modejeu)

        {
        case 1:
    srand(time(NULL));
    printf("----------------\n");
        break;

        case 2:
    printf("\nChoisissez un nombre a faire deviner a votre adversaire : ");
    scanf("%d", &nombreMystere);
        }

        if(modejeu == 1)
        {

        printf("Choisissez un niveau de difficulte : \n");
        printf("1. Niveau facile : Entre 1 et 100\n");
        printf("2. Niveau moyen : Entre 1 et 1000\n");
        printf("3. Niveau difficile : Entre 1 et 10000\n");

        do
        {

        printf("Votre choix ? ");
        scanf("%d", &niveauDifficulte);
        }while(niveauDifficulte < 1 || niveauDifficulte > 3);

        printf("-----------------\n");

        if(niveauDifficulte == 1)
        {

        MAX = 100;
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

        }

        else if(niveauDifficulte == 2)

        {

        MAX = 1000;
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

        }

        else if(niveauDifficulte == 3)

        {

        MAX = 10000;
        nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;

         }

        }
    system("cls");
    printf("\n");
    printf("Devinez le nombre mystere !\n");

    do
    {
        nombreCoups++;
        printf("Quel est le nombre ? ");
        scanf("%d", &nombreEntre);
        if(nombreEntre < nombreMystere)

           {

            printf("C'est plus !\n");

           }

        else if(nombreEntre > nombreMystere)

        {

        printf("C'est moins !\n");

        }

        else

        {

        printf("\nBravo, vous avez trouve le nombre mystere en %d coups\n", nombreCoups);

        }
    }while(nombreEntre != nombreMystere);

    printf("\n------------------------------------\n");
    printf("Souhaitez-vous refaire une partie ?\n");
    printf("1. Oui\n");
    printf("2. Non\n");
    printf("Votre choix ? ");
    scanf("%d", &continuerPartie);
    printf("-------------------------------------\n\n");

    }while(continuerPartie == 1);

    return 0;
}

Mettez des commentaire dans le code source puis poster de nouveau le code source commenté sur ce sujet et j'éditerai le sujet pour mettre le code source final. Merci

-
Edité par buzzromain le 2 mai 2014 à 15:31:35

dis moi tu fais comment pour poster ton code de cette maniere c'est a dire avec le fond noir et les couleur et tout....cela m'aiderai car pour poster un code sur le forum je ne sais faire que le copier/coller merci d'avance !



Salut ! Lorsque tu postes une réponse, il y a une icône </> qui s'appelle "code". 

  • Partager sur Facebook
  • Partager sur Twitter
Jérôme
23 octobre 2015 à 16:52:41

bonjour pour ceux que ca interesse j'ai coder le jeu avec une version multi ou le but est de trouver le nombre mystere avant l'autre joueur (le mode solo avec le choix de la difficulter son inclu )jusqu'ici tout a l'air de fonctionner mais comme je debute je serais heureux d'apprendre de vos remarques et conseils 

#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main()

{

    int nombreM = 0, nombreE = 0, dif = 0, replay = 0, Ncoup = 1, nc1 = 1, nc2 = 1, multi = 0;

    int max = 100, min = 1;

do

{

    do

    {

    printf(" facile entre 1 et 5 taper 1 \n normal entre 1 et 100 taper 2 \n difficile entre 1 et 500 taper 3 \n\n");

    scanf("%d", &dif);

    printf("\n taper 2 pour jouer en mode multijoueur \n");

    scanf("%d", &multi);

    if (dif == 1)

    { max = 5; }

    if (dif == 2)

    { max = 100; }

    if (dif == 3)

    { max = 500; }

    } while ((dif < 1) || (dif > 3));

    srand(time(NULL));

    nombreM = (rand() % (max - min + 1)) + min;

while (multi == 2)//mode multi

{

printf("vous avez choisi la difficulte entre 1 et %d \n", max);

    while (nombreE != nombreM)

    {

    if (nombreE != nombreM)

    { printf("tour : joueur 1 \n");

    scanf("%d", &nombreE);

    if (nombreM < nombreE)

    { printf("c'est - \n"); nc1++; }

    else if (nombreM > nombreE)

    { printf("c'est + \n"); nc1++; }

    else { printf("felicitation joueur 1 tu a gagner avec %d coup(s) ", nc1); }

    }

    if (nombreE != nombreM)

    { printf("tour : joueur 2 \n");

    scanf("%d", &nombreE);

    if (nombreM < nombreE)

    { printf("c'est - \n"); nc2++; }

    else if (nombreM > nombreE)

    { printf("c'est + \n"); nc2++; }

    else { printf("felicitation joueur 2 tu a gagner avec %d coup(s) ", nc2); }

    }

    multi = 0;

    }

}

    while (nombreM != nombreE)//mode solo

    {

    printf("vous avez choisi la difficulter entre 1 et %d \n", max);

    scanf("%d", &nombreE);

    if (nombreE < nombreM)

    { printf("c'est + \n");

    Ncoup++; }

    else if (nombreE > nombreM)

    { printf("c'est - \n");

    Ncoup++; }

    else

    {   printf("vous avez jouez en %d coup(s) \n", Ncoup);

        printf("victoooiiire amene le bac fredy on va feter ca! \n"); }

    }

printf("\n\ntaper 12 pour rejouer\n");

scanf("%d", &replay);

printf("\n");

Ncoup = 1;

multi = 0;

}while (replay == 12);

    return 0;

}

-
Edité par jugr 23 octobre 2015 à 17:57:29

  • Partager sur Facebook
  • Partager sur Twitter
30 décembre 2015 à 16:08:23

Bonjour, j'ai essayé de faire ce jeu, mon code source fonctionne, mais un soucis majeur en mode 2 joueurs se présente lors des tests:

comment faire pour que le nombre mystère tapé par le joueur 1 soit "scanfed" puis effacé de la console, comme ça le joueur 2 ne le voit pas ?

  • Partager sur Facebook
  • Partager sur Twitter
4 mai 2016 à 18:26:17

Salut,

voici une proposition de solution au Plus ou Moins amélioré

pour les débutants qui le veulent !

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "jeu.c"

int main()
{
  
 
  
   printf("\n");
   printf("**************************************\n");
   printf("********LE JEU DU PLUS OU MOINS*******\n");
   printf("********Ecrit par Jean Dechanel*******\n");
   printf("**************************************\n\n\n");
  
    int MAX = 0, MIN = 0, nombre = 0;
   int nombreEntre = 0, nombreMystere = 0, rejouerPartie = 0, compteurCoup = 0, coupMax = 10, modeJeu = 0, niveauJeu = 0;
 
   srand(time(NULL));
  
  
do
{
    printf("\n");
    printf("Menu MODE DE JEU\n");
   
    printf("1. Mode Solo\n2. Mode Multi\n");
    do
    {
        printf("Votre choix ? ");
        scanf("%d", &modeJeu);
    }while(modeJeu < 1 || modeJeu > 2);
   
    switch(modeJeu)
    {
       case 1: printf("Bienvenu au mode Solo !\n");
       printf("\n");
       printf("Menu NIVEAU DE JEU\n");
      
       printf("1. Facile\n2. Moyen\n3. Difficile\n");
       do
       {
           printf("Votre choix ? ");
           scanf("%d", &niveauJeu);
       }while(niveauJeu < 1 || niveauJeu > 3);
       
         switch(niveauJeu)
         {
             case 1: coupMax = 15;  MAX =100; MIN =1;
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             printf("Bienvenu au niveau Facile !\n");
             printf("Entrez un nombre entre 1 et 100\n");
             break;
             case 2: coupMax = 10; MAX =1000; MIN =101;
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             printf("Bienvenu au niveau Moyen !\n");
             printf("Entrez un nombre entre 101 et 1000\n");
             break;
             case 3: coupMax = 7; MAX =10000; MIN =1001;
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             printf("Bienvenu au niveau Difficile !\n");
             printf("Entrez un nombre entre 1001 et 10000\n");
             break;
             default:
             printf("Erreur, choix non disponible !");
             break;
        }      
   
    do //debut de la boucle du jeu
    {
  
     
     printf("\n");
     printf("Attention il vous reste seulement %d coups !!!\n", coupMax);
     printf("Quel est le nombre? : ");
     scanf("%d", &nombreEntre);
  
     compteurCoup++;
     coupMax--;
 
     if(nombreEntre > nombreMystere)
     printf("C'est moins!\n");
  
     else if(nombreEntre < nombreMystere)
     printf("C'est plus!\n");
  
     else
     {
       printf("\n");
       printf("Bravo, vous avez trouve le nombre mystere en %d coups !!!\n\n", compteurCoup);
     }
    
     if (coupMax == 0 && nombreMystere != nombreEntre )
     {
       printf("\n");
       printf ("DÉSOLÉ, vous avez perdu car vous n'avez plus de coups a jouer !!!\n\n");
     }
    
    }while(nombreEntre != nombreMystere && coupMax != 0);
  
        break;
       
       case 2: printf("Bienvenu au mode Multi\n");
       printf("\n");
       printf("NIVEAU DE JEU\n");
       printf("Choisissez un niveau de jeu s'il vous plait !\n");
       printf("1. Facile\n2. Moyen\n3. Difficile\n");
       do
       {
           printf("Votre choix ? ");
           scanf("%d", &niveauJeu);
       }while(niveauJeu < 1 || niveauJeu > 3);
       
         printf("\n");
         printf("Entrez le nombreMystere ! ");
         scanf("%d", &nombreMystere);
         printf("\n");
        
         switch(niveauJeu)
         {
             case 1: coupMax = 15; MAX =100; MIN =1;
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             printf("Bienvenu au niveau Facile !\n");
             printf("Entrez un nombre entre 1 et 100\n");
             break;
             case 2: coupMax = 10; MAX = 1000; MIN =101;
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             printf("Bienvenu au niveau Moyen !\n");
             printf("Entrez un nombre entre 101 et 1000\n");
             break;
             case 3: coupMax = 7; MAX = 10000; MIN = 1001;
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             printf("Bienvenu au niveau Difficile !\n");
             printf("Entrez un nombre entre 1001 et 10000\n");
             break;
             default:
             printf("Erreur, choix non disponible !");
             break;
        }      
   
          
   
    do //debut de la boucle du jeu
    {
  
     
     printf("\n");
     printf("Attention il vous reste seulement %d coups !!!\n", coupMax);
     printf("Quel est le nombre? : ");
     scanf("%d", &nombreEntre);
  
     compteurCoup++;
     coupMax--;
 
     if(nombreEntre > nombreMystere)
     printf("C'est moins!\n");
  
     else if(nombreEntre < nombreMystere)
     printf("C'est plus!\n");
  
     else
     {
       printf("\n");
       printf("Bravo, vous avez trouve le nombre mystere en %d coups !!!\n\n", compteurCoup);
     }
    
     if (coupMax == 0 && nombreMystere != nombreEntre )
     {
       printf("\n");
       printf ("DÉSOLÉ, vous avez perdu car vous n'avez plus de coups a jouer !!!\n\n");
     }
    
    }while(nombreEntre != nombreMystere && coupMax != 0);
  
        break;
       
        default: printf("Erreur, choix non disponible !\n");
        break;
    }
      
    
    system("CLS");
   
    printf("Voulez vous rejouer une autre partie?\n ");
    printf("1. Oui\n2. Non\n");
    do
    {
      printf("Votre choix? ");
      scanf("%d", &rejouerPartie);
    }while(rejouerPartie < 1 || rejouerPartie > 2);
   
   
}while(rejouerPartie == 1);    
 
    printf("\n"); 
    printf("Partie terminee !!!\n\n\n");
  
   
   return 0;

}



-
Edité par jeanDuNet 5 mai 2016 à 12:52:29

  • Partager sur Facebook
  • Partager sur Twitter
4 mai 2016 à 18:31:25

Salut a tous,

J'attends vos commentaires et suggestions par rapport a ce code.

merci.

-
Edité par jeanDuNet 5 mai 2016 à 12:55:26

  • Partager sur Facebook
  • Partager sur Twitter
4 mai 2016 à 18:34:29

Salut,

Joli déterrage.

Si le but est de recevoir des commentaires sur votre code, en voici un sur l'aspect général :

vous devriez utiliser des fonctions pour pouvoir découper votre code et éviter à la fois des méthodes de plusieurs centaines de lignes et du code copier/coller identique à quelques paramètres près.

(Sinon normalement, en plus d'éviter de poster sur un post qui date de longtemps, on dit bonjour, et on évite d'écrire en majuscule).

Cdt

-
Edité par macaque 4 mai 2016 à 18:47:00

  • Partager sur Facebook
  • Partager sur Twitter
5 mai 2016 à 9:04:23

salut,

merci pour vos conseilles et surtout pour votre leçon de francais !

  • Partager sur Facebook
  • Partager sur Twitter
5 mai 2016 à 9:09:28

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "jeu.c"

int main()
{ 
   
  
   
   debutPartie();
   
    int MAX = 0, MIN = 0, nombre = 0;
   int nombreEntre = 0, nombreMystere = 0, rejouerPartie = 0, compteurCoup = 0, coupMax = 10, modeJeu = 0, niveauJeu = 0;
  
   srand(time(NULL));
   
   
do
{
    printf("\n");
    printf("Menu MODE DE JEU\n");
    
    printf("1. Mode Solo\n2. Mode Multi\n");
    do
    {
        printf("Votre choix ? ");
        scanf("%d", &modeJeu);
    }while(modeJeu < 1 || modeJeu > 2);
    
    switch(modeJeu)
    {
       case 1: printf("Bienvenu au mode Solo !\n");
       printf("\n");
       printf("Menu NIVEAU DE JEU\n");
       
       printf("1. Facile\n2. Moyen\n3. Difficile\n");
       do
       {
           printf("Votre choix ? ");
           scanf("%d", &niveauJeu);
       }while(niveauJeu < 1 || niveauJeu > 3);
        
         switch(niveauJeu)
         {
             case 1: coupMax = 15;  MAX =100; MIN =1; 
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             printf("Bienvenu au niveau Facile !\n");
             printf("Entrez un nombre entre 1 et 100\n");
             break;
             case 2: coupMax = 10; MAX =1000; MIN =101;
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             printf("Bienvenu au niveau Moyen !\n");
             printf("Entrez un nombre entre 101 et 1000\n");
             break;
             case 3: coupMax = 7; MAX =10000; MIN =1001;
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             printf("Bienvenu au niveau Difficile !\n");
             printf("Entrez un nombre entre 1001 et 10000\n");
             break;
             default:
             printf("Erreur, choix non disponible !");
             break;
        }       
    
    do //debut de la boucle du jeu
    {
   
      
     printf("\n"); 
     printf("Attention il vous reste seulement %d coups !!!\n", coupMax);
     printf("Quel est le nombre? : ");
     scanf("%d", &nombreEntre);
   
     compteurCoup++;
     coupMax--;
  
     if(nombreEntre > nombreMystere)
     printf("C'est moins!\n");
   
     else if(nombreEntre < nombreMystere)
     printf("C'est plus!\n");
   
     else 
     {
       printf("\n");
       printf("Bravo, vous avez trouve le nombre mystere en %d coups !!!\n\n", compteurCoup);
     }
     
     if (coupMax == 0 && nombreMystere != nombreEntre )
     {
       printf("\n");
       printf ("DÉSOLÉ, vous avez perdu car vous n'avez plus de coups a jouer !!!\n\n");
     }
     
    }while(nombreEntre != nombreMystere && coupMax != 0);
   
        break;
        
       case 2: printf("Bienvenu au mode Multi\n");
       printf("\n");
       printf("NIVEAU DE JEU\n");
       printf("Choisissez un niveau de jeu s'il vous plait !\n");
       printf("1. Facile\n2. Moyen\n3. Difficile\n");
       do
       {
           printf("Votre choix ? ");
           scanf("%d", &niveauJeu);
       }while(niveauJeu < 1 || niveauJeu > 3);
        
         printf("\n");
         printf("Entrez le nombreMystere ! ");
         scanf("%d", &nombreMystere);
         printf("\n");
         
         switch(niveauJeu)
         {
             case 1: coupMax = 15; MAX =100; MIN =1;
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             printf("Bienvenu au niveau Facile !\n");
             printf("Entrez un nombre entre 1 et 100\n");
             break;
             case 2: coupMax = 10; MAX = 1000; MIN =101;
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             printf("Bienvenu au niveau Moyen !\n");
             printf("Entrez un nombre entre 101 et 1000\n");
             break;
             case 3: coupMax = 7; MAX = 10000; MIN = 1001; 
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             printf("Bienvenu au niveau Difficile !\n");
             printf("Entrez un nombre entre 1001 et 10000\n");
             break;
             default:
             printf("Erreur, choix non disponible !");
             break;
        }       
    
           
    
    do //debut de la boucle du jeu
    {
   
      
     printf("\n"); 
     printf("Attention il vous reste seulement %d coups !!!\n", coupMax);
     printf("Quel est le nombre? : ");
     scanf("%d", &nombreEntre);
   
     compteurCoup++;
     coupMax--;
  
     if(nombreEntre > nombreMystere)
     printf("C'est moins!\n");
   
     else if(nombreEntre < nombreMystere)
     printf("C'est plus!\n");
   
     else 
     {
       printf("\n");
       printf("Bravo, vous avez trouve le nombre mystere en %d coups !!!\n\n", compteurCoup);
     }
     
     if (coupMax == 0 && nombreMystere != nombreEntre )
     {
       printf("\n");
       printf ("DÉSOLÉ, vous avez perdu car vous n'avez plus de coups a jouer !!!\n\n");
     }
     
    }while(nombreEntre != nombreMystere && coupMax != 0);
   
        break;
        
        default: printf("Erreur, choix non disponible !\n");
        break;
    }
       
     
    system("CLS");
    
    printf("Voulez vous rejouer une autre partie?\n ");
    printf("1. Oui\n2. Non\n");
    do
    {
      printf("Votre choix? ");
      scanf("%d", &rejouerPartie);
    }while(rejouerPartie < 1 || rejouerPartie > 2);
    
    
}while(rejouerPartie == 1);     
 
    printf("\n");  
    printf("Partie terminee !!!\n\n\n");
   
    
   return 0;

}

     
  • Partager sur Facebook
  • Partager sur Twitter
5 mai 2016 à 10:41:02

Voici ce que j'entends par découper le code en utilisant des fonctions :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <string.h>

#define SOLO 1
#define MULTI 2

typedef enum { false, true } bool;

typedef struct NiveauJeu NiveauJeu;
struct NiveauJeu {
    char nomNiveau[10];
    int min;
    int max;
    int coupMax;
};
NiveauJeu niveaux[] = {
    { "Facile", 0, 100, 15 },
    { "Moyen", 0, 1000, 10 },
    { "Difficile", 0, 10000, 7 }
};

void about() {
   printf("\n");
   printf("**************************************\n");
   printf("********LE JEU DU PLUS OU MOINS*******\n");
   printf("********Ecrit par Jean Dechanel*******\n");
   printf("**************************************\n\n\n");
}

int demanderModeJeu() {
    int modeJeu;
    printf("\n");
    printf("Menu MODE DE JEU\n");
    printf("1. Mode Solo\n2. Mode Multi\n");
    do {
        printf("Votre choix ? ");
        scanf("%d", &modeJeu);
    } while(modeJeu < 1 || modeJeu > 2);
    return modeJeu;
}

NiveauJeu demanderNiveauJeu() {
    int choice;
    printf("\n");
    printf("Menu NIVEAU DE JEU\n");
    printf("1. Facile\n2. Moyen\n3. Difficile\n");
    do {
        printf("Votre choix ? ");
        scanf("%d", &choice);
    } while(choice < 1 || choice > 3);
    return niveaux[choice - 1];
}

bool rejouerPartie() {
    int rejouerPartie;
    printf("\n\n\n\n\n\n");
    printf("Voulez vous rejouer une autre partie?\n");
    printf("1. Oui\n2. Non\n");
    do
    {
      printf("Votre choix? ");
      scanf("%d", &rejouerPartie);
    } while(rejouerPartie < 1 || rejouerPartie > 2);
    return rejouerPartie == 1;
}

int choixNombreMystereAleatoire(NiveauJeu niveauJeu) {
    return (rand() % (niveauJeu.max - niveauJeu.min + 1)) + niveauJeu.min;
}

int demanderNombreMystere(NiveauJeu niveauJeu) {
    int nombreMystere;
    printf("\n");
    do {
        printf("Entrez le nombreMystere entre %d et %d ! ", niveauJeu.min, niveauJeu.max);
        scanf("%d", &nombreMystere);
    } while (nombreMystere < niveauJeu.min || nombreMystere > niveauJeu.max);
    printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
    return nombreMystere;
}

int demanderNombre(int nbCoupsRestants) {
    int nombreSaisi;
    printf("\n");
    printf("Attention il vous reste seulement %d coups !!!\n", nbCoupsRestants);
    printf("Quel est le nombre? : ");
    scanf("%d", &nombreSaisi);
    return nombreSaisi;
}

int main() {

    about();
 
    srand(time(NULL));
  
    do {
        int modeJeu = demanderModeJeu();
        printf("Bienvenu au mode %s !\n", modeJeu == SOLO ? "Solo" : "Multi");
        
        NiveauJeu niveauJeu = demanderNiveauJeu();
        printf("Bienvenu au niveau %s !\n", niveauJeu.nomNiveau);

        int nbCoupsRestants = niveauJeu.coupMax;
        
        int nombreMystere = modeJeu == SOLO ? choixNombreMystereAleatoire(niveauJeu) : demanderNombreMystere(niveauJeu);

        printf("Entrez un nombre entre %d et %d\n", niveauJeu.min, niveauJeu.max);

        int nombreSaisi;
        do {
            nombreSaisi = demanderNombre(nbCoupsRestants);
            nbCoupsRestants--;
            if (nombreSaisi > nombreMystere) {
                printf("C'est moins!\n");
            } else if(nombreSaisi < nombreMystere) {
                printf("C'est plus!\n");
            }
        } while (nombreSaisi != nombreMystere && nbCoupsRestants > 0);
        printf("\n");
        if (nombreSaisi == nombreMystere) {
            printf("Bravo, vous avez trouve le nombre mystere en %d coups !!!\n\n", (niveauJeu.coupMax-nbCoupsRestants));
        } else {
            printf ("DÉSOLÉ, vous avez perdu car vous n'avez plus de coups a jouer !!!\n\n");
        }

    } while(rejouerPartie());    
 
    printf("\n"); 
    printf("Partie terminee !!!\n\n\n");
  
   
   return 0;

}




Mon code n'est sans doute pas super terrible, ça fait longtemps que je n'ai pas fait de c, mais l'idée est là.
Il faut essayer d'utiliser des méthodes qui indique bien ce qu'elle font et éviter tout copier coller.

-
Edité par macaque 6 mai 2016 à 9:27:54

  • Partager sur Facebook
  • Partager sur Twitter
5 mai 2016 à 12:15:13

salut très cher MACAQUE,

Voici le fameux Plus Ou Moins Amélioré  avec les fonctions comme vous l'avez suggéré.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include "jeu.c"

int main()
{ 
   
  
   
   debutPartie();
   
    int MAX = 0, MIN = 0, nombre = 0;
   int nombreEntre = 0, nombreMystere = 0, rejouerPartie = 0, compteurCoup = 0, coupMax = 10, modeJeu = 0, niveauJeu = 0;
  
   srand(time(NULL));
   
   
do
{
     printf("\n");
    printf("Menu MODE DE JEU\n");
    
    printf("1. Mode Solo\n2. Mode Multi\n");
    do
    {
        printf("Votre choix ? ");
        scanf("%d", &modeJeu);
    }while(modeJeu < 1 || modeJeu > 2);
    
    switch(modeJeu)
    {
       case 1:
       
       printf("Bienvenu au mode Solo !\n");
      
       partieSolo();
    
       break;
        
       case 2: 
       
       printf("Bienvenu au mode Multi\n");
       
        
       partieMulti();
    
       break;
        
       default: printf("Erreur, choix non disponible !\n");
       break;
        
    }
       
     
    system("CLS");
    
    printf("Voulez vous rejouer une autre partie?\n ");
    printf("1. Oui\n2. Non\n");
    do
    {
      printf("Votre choix? ");
      scanf("%d", &rejouerPartie);
    }while(rejouerPartie < 1 || rejouerPartie > 2);
    
    
}while(rejouerPartie == 1);     
 
    printf("\n");  
    printf("Partie terminee !!!\n\n\n");
   
    
   return 0;

}

     


-
Edité par jeanDuNet 5 mai 2016 à 12:18:58

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
5 mai 2016 à 12:21:12

Salut !

Il vaudrait utiliser la fonction principale de cette manière :

[...]

int main(void)
{
    [...]

    return 0;
}

Car tu initialise les arguments, mais tu ne les utilises pas (unused parameters).

Également pour la ligne 13 j'aurais plutôt mis une constante de définition :

[...]

#define MIN 1

[...]

Parce que tout simplement ça ne  prend pas d'espace en mémoire (tu n'utilise pas une case mémoire pour stocker un entier). C'est le préprocesseur qui se chargera de remplacer cette valeur aux endroits où tu mets tes MIN. En gros, c'est comme si tu mettais cette valeur en dur partout, sauf que c'est le pauvre préprocesseur qui le fait à ta place. Il est quand même sympa celui là ...

Et j'aurais aussi fait une fonction pour récupérer un entier du stdin. Pour pouvoir ensuite tester l'entrée, même si c'est un '\n' directement (si le joueur s'est trompé en appuyant trop vite). De plus, si tu essaie de taper bonjour pendant la sélection du mode de joueurs, tu t'appercevras qu'il y a un souci (en fait ne test pas, tu vas rentrer dans une boucle infinie). Et j'imagine que c'est le cas pour les autres fonctions scanf().

Pour ton system("cls"), ça ne marchera que sous Windows. Sous Pomme et Unix/Linux, ça ne fonctionnera pas. Donc si tu veux un code portable, je te conseille de rajouter ça avant ta fonction principale :

#ifdef _WIN32
void clear(){
    system("cls");
}
#else
void clear(){
    system("clear");
}
#endif

Et du coup, ta ligne ressemblera plutôt à ça :

clear();

Et pourquoi ne pas tester que le nombre rentré est bien dans l'intervalle MIN - MAX ?

Enfin, je te donne un exemple sous Unix avec system("clear"), mais en réalité, il vaut mieux l'éviter. Préfère utiliser un fork() avec un execl() plutôt qu'un system().

-
Edité par Anonyme 5 mai 2016 à 12:47:37

  • Partager sur Facebook
  • Partager sur Twitter
5 mai 2016 à 12:22:46

voici le fichier jeu.c

void debutPartie()
{
   printf("\n");
   printf("**************************************\n");
   printf("********LE JEU DU PLUS OU MOINS*******\n");
   printf("********Ecrit par Jean Dechanel*******\n");
   printf("**************************************\n\n\n");
}


void partieSolo()
{
   int coupMax = 0, nombreEntre = 0, nombreMystere = 0, compteurCoup = 0;
   int modeJeu = 0, niveauJeu = 0, MAX = 0, MIN = 0;
   
       printf("\n");
       printf("Menu NIVEAU DE JEU\n");
       
       printf("1. Facile\n2. Moyen\n3. Difficile\n");
       do
       {
           printf("Votre choix ? ");
           scanf("%d", &niveauJeu);
       }while(niveauJeu < 1 || niveauJeu > 3);
   
   switch(niveauJeu)
         {
             case 1: coupMax = 15;  MAX =100; MIN =1; 
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             printf("Bienvenu au niveau Facile !\n");
             printf("Entrez un nombre entre 1 et 100\n");
             break;
             case 2: coupMax = 10; MAX =1000; MIN =101;
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             printf("Bienvenu au niveau Moyen !\n");
             printf("Entrez un nombre entre 101 et 1000\n");
             break;
             case 3: coupMax = 7; MAX =10000; MIN =1001;
             nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
             printf("Bienvenu au niveau Difficile !\n");
             printf("Entrez un nombre entre 1001 et 10000\n");
             break;
             default:
             printf("Erreur, choix non disponible !");
             break;
        }       
   
   do //debut de la boucle du jeu
    {
   
      
     printf("\n"); 
     printf("Attention il vous reste seulement %d coups !!!\n", coupMax);
     printf("Quel est le nombre? : ");
     scanf("%d", &nombreEntre);
   
     compteurCoup++;
     coupMax--;
  
     if(nombreEntre > nombreMystere)
     printf("C'est moins!\n");
   
     else if(nombreEntre < nombreMystere)
     printf("C'est plus!\n");
   
     else 
     {
       printf("\n");
       printf("Bravo, vous avez trouve le nombre mystere en %d coups !!!\n\n", compteurCoup);
     }
     
     if (coupMax == 0 && nombreMystere != nombreEntre )
     {
       printf("\n");
       printf ("DÉSOLÉ, vous avez perdu car vous n'avez plus de coups a jouer !!!\n\n");
     }
     
    }while(nombreEntre != nombreMystere && coupMax != 0);
   
}



void PartieMulti()
{
   int coupMax = 0, nombreEntre = 0, nombreMystere = 0, compteurCoup = 0;
   int modeJeu = 0, niveauJeu = 0, MAX = 0, MIN = 0;
   
       printf("\n");
       printf("NIVEAU DE JEU\n");
       printf("Choisissez un niveau de jeu s'il vous plait !\n");
       printf("1. Facile\n2. Moyen\n3. Difficile\n");
       do
       {
           printf("Votre choix ? ");
           scanf("%d", &niveauJeu);
       }while(niveauJeu < 1 || niveauJeu > 3);
        
         printf("\n");
         printf("Entrez le nombreMystere ! ");
         scanf("%d", &nombreMystere);
         printf("\n");
         
         switch(niveauJeu)
         {
             case 1: coupMax = 15; MAX = 100; MIN = 1;
             
             printf("Bienvenu au niveau Facile !\n");
             printf("Entrez un nombre entre 1 et 100\n");
             break;
             case 2: coupMax = 10; MAX = 1000; MIN = 101;
             
             printf("Bienvenu au niveau Moyen !\n");
             printf("Entrez un nombre entre 101 et 1000\n");
             break;
             case 3: coupMax = 7; MAX = 10000; MIN = 1001;
             
             printf("Bienvenu au niveau Difficile !\n");
             printf("Entrez un nombre entre 1001 et 10000\n");
             break;
             default:
             printf("Erreur, choix non disponible !");
             break;
        }       
    
           
    
    do //debut de la boucle du jeu
    {
   
      
     printf("\n"); 
     printf("Attention il vous reste seulement %d coups !!!\n", coupMax);
     printf("Quel est le nombre? : ");
     scanf("%d", &nombreEntre);
   
     compteurCoup++;
     coupMax--;
  
     if(nombreEntre > nombreMystere)
     printf("C'est moins!\n");
   
     else if(nombreEntre < nombreMystere)
     printf("C'est plus!\n");
   
     else 
     {
       printf("\n");
       printf("Bravo, vous avez trouve le nombre mystere en %d coups !!!\n\n", compteurCoup);
     }
     
     if (coupMax == 0 && nombreMystere != nombreEntre )
     {
       printf("\n");
       printf ("DÉSOLÉ, vous avez perdu car vous n'avez plus de coups a jouer !!!\n\n");
     }
     
    }while(nombreEntre != nombreMystere && coupMax != 0);
   
   
      
    
}








  • Partager sur Facebook
  • Partager sur Twitter
5 mai 2016 à 12:38:15

C'est déjà plus lisible.

Maintenant si tu regardes ton code, tu dois voir que les méthodes "partieSolo()" et "partieMulti()" sont très similaires.

Il est donc très dommage d'avoir deux méthodes, cela signifie que chaque fois que tu corriges un truc dans l'une il faudra aussi le corriger dans l'autre.

Pour un petit exemple comme cela, ce n'ai pas très grave. Mais sur une grosse application va rapidement être source d'erreur. On corrigera à un endroit sans corriger l'autre, les méthodes vont diverger de plus sans raison réelle, et de plus pour une personne qui découvre le code, il lui est plus difficile de comprendre ce qu'il change entre le mode multi et le mode solo.

Je t'invite à regarder le code que j'ai posté il y a un peu plus d'une heure où je montre comment il est possible de factoriser tout cela pour avoir un main unique qui fonctionne aussi bien dans le mode solo que dans le mode multi.

-
Edité par macaque 5 mai 2016 à 13:06:32

  • Partager sur Facebook
  • Partager sur Twitter
6 mai 2016 à 8:51:27

Bonjour Macaque,

merci beaucoup pour tous tes conseilles.

j'ai jeté un œil a ton code et je l'ai apprécier.

je compte étudier votre méthode et l'appliquer.

je suis un débutant dans la programmation et je compte sur les anciens comme vous pour me guider et m'orienter.

  • Partager sur Facebook
  • Partager sur Twitter
10 mai 2016 à 16:11:58

salut, 
j'ai besoin d'etre guide dans la resolution de cet exercice



Créez une fonction maximumTableau qui aura pour rôle de remettre à 0 toutes les cases du tableau ayant une valeur supérieure à un maximum. Cette fonction prendra en paramètres le tableau ainsi que le nombre maximum autorisé (valeurMax).
Toutes les cases qui contiennent un nombre supérieur à valeurMax doivent être mises à 0.
Prototype :
void maximumTableau(int tableau[], int tailleTableau, int valeurMax);
  • Partager sur Facebook
  • Partager sur Twitter
12 mai 2016 à 13:39:50

Bonjour a tous,

bien vouloir commenter ce code s'il vous plait.

#include <stdio.h>
#include <stdlib.h>

/*Créez une fonction maximumTableau qui aura pour rôle de remettre à 0 toutes les cases du tableau ayant une valeur supérieure à un maximum. 
Cette fonction prendra en paramètres le tableau ainsi que le nombre maximum autorisé (valeurMax). 
Toutes les cases qui contiennent un nombre supérieur à valeurMax doivent être mises à 0. 
Prototype :
void maximumTableau(int tableau[], int tailleTableau, int valeurMax); */



void maximumTableau(int tableau[], int tailleTableau, int valeurMax);

int main()
{
   
   int tableau[5] = {1,2,3,4,5};
   int i;
   
   maximumTableau(tableau, 5, 3);
   
    for(i = 0; i < 5; i++)
   {
      printf("%d\n", tableau[i]);
   }
   
   return 0;
}

void maximumTableau(int tableau[], int tailleTableau, int valeurMax)
{
   int i;
   
   
 if(valeurMax == 3)
 {  
   for(i = 0; i < tailleTableau; i++)
   {
       tableau[i+valeurMax] = 0;
   }
 }
   
   
}



-
Edité par jeanDuNet 12 mai 2016 à 15:21:39

  • Partager sur Facebook
  • Partager sur Twitter
12 mai 2016 à 16:27:22

Bonjour à tous,

nouveau sur ce site depuis à peine une semaine, je me suis lancé, en tant que pur débutant, dans la programmation en langage C. J'ai donc commencé le cours "Programmer en Langage C" il y a quelques jours.

Me voilà arrivé à ce fameux Test du jeu du Plus ou Moins et si ça fonctionne "Plus ou Moins" correctement, je me confronte tout de même aujourd'hui à un petit soucis.

Je vais essayer d'expliquer clairement le problème rencontré à l'heure d'aujourd'hui et ensuite, si vous le voulez, vous examinerez mon code pour, qui sait, m'aider à trouver mon/mes erreurs.

Lorsque l'on lance le jeu, vous avez le choix entre le mode SOLO et le mode MULTI (2 joueurs).

Par contre, à l'heure actuelle, je n'ai pas encore programmé un niveau de difficulté. Je n'en suis pas encore là.

Du coup, c'est soit on joue en solo soit en multi sans difficulté particulière. Le mode SOLO fonctionne parfaitement, aucun problème à signaler. Par contre, je rencontre un petit soucis avec le mode MULTI. Voici une petite description des étapes du mode MULTI.

Mode MULTI (2 joueurs) :

1) Le jeu demande dans un premier temps au Joueur 1 d'enregistrer un nombre mystère (ce fameux nombre à deviner).

2) Via "scanf" le joueur 1 donne donc une valeur à "NombreMystere2" que le joueur 2 devra deviner.

3) Le jeu demande donc au Joueur 2 de saisir le nombre à deviner, ce qu'il fait.

4) Ensuite, une suite de conditions aideront le joueur à se rapprocher du nombre mystère par des "c'est plus" / "c'est moins", jusqu'à ce que le joueur trouve.

5) Ca y est ! On a trouvé !!! Le  nombre à trouver était "20".

Lorsque l'on a l'immense chance (lol) de trouver le nombre mystère, le jeu nous félicite à sa manière et nous propose de rejouer (ici, on rejoue directement en mode multi sans choix de repasser en mode solo, on reste donc dans la partie uniquement MULTI)

Et c'est ici que les problèmes commencent...

Lorsque l'on accepte de rejouer une partie, le jeu demande comme en début de partie à ce que le joueur 1 enregistre un chiffre mystère mais là, si vous mettez par exemple "20" alors que "20" était le nombre à trouver dans la partie précédente (celle que je vous ai détaillée juste avant), le jeu ne l'accepte pas et remets la phrase qui demande "d'enregistrer un nombre au joueur 1" à chaque fois que l'on essaiera d'enregistrer le nombre "20". Par contre, si vous mettez 15, 16 ou 17 ou tout autre nombre différent du nombre trouvé dans la partie précédente le jeu se poursuivra parfaitement.

Du coup, je me suis dit que quelque part dans mes codes, je devais simplement "réinitialiser" le NombreMystere2 à 0 avant que la boucle ne reprenne du début.

J'ai donc décidé d'insérer la ligne "NombreMystere2 = 0;" (comme je l'ai fait avec le compteur de coups).

Malheureusement, ça n'est pas fonctionnel, et je n'ai pas encore eu la logique pour savoir pourquoi il ne l'acceptait pas.

J'ai été placer mon "NombreMystere2 = 0;" dans le dernier "else if" du mode Multi, juste en dessous de "Compteur = 0;".

Mais maintenant, lorsque l'on recommence une partie (la première partie se passe toujours parfaitement bien), le jeu ne revient plus à "Joueur 1 enregistrer un nombre mystere", il passe directement à "Joueur 2 devinez le chiffre mystere", du coup, je n'ai pas eu la possibilité de changer la variable "NombreMystere2" via le Joueur 1 et par conséquent celle-ci reste sur 0 de par le code "NombreMystere2 = 0;" que j'ai été ajouter pour palier au 1er problème évoqué au début de ce roman.  

Ma question est de savoir pourquoi, juste en ajoutant un code qui permet uniquement de remettre la valeur du nombre mystère à 0 en fin de code, le jeu décide de ne plus revenir au tour du Joueur 1 comme la logique le voudrait, mais de passer directement au tour du Joueur 2 qui doit finalement deviner un nombre qui n'est autre que 0 puisque le Joueur 1 n'a pas eu la possibilité d'enregistrer le nombre qu'il aurait souhaité.

J'espère avoir été assez clair, prenez en compte que je suis un débutant de quelques jours seulement et que je ne connais pas encore tous les codes qu'il est possible d'utiliser (ça viendra avec le temps et l'apprentissage) et que je ne veux pas brûler les étapes. En gros, si une aimable personne venait à pouvoir m'aider à trouver mon erreur, j'aimerais que ça soit dans les conditions d'un débutant, dans le sens où je voudrais éviter d'avoir à utiliser des codes qui sont réservés aux plus avancés et que par conséquent je ne pourrai pas comprendre à mon niveau.

Je remercie d'avance les personnes qui auront pris de leur temps pour lire ce fameux roman qu'est le mien et je les remercie³ s'il s'avère qu'ils peuvent me donner un petit coup de main à ma compréhension.

Kevin 

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{

    int MAX = 100, MIN = 1, NombreEntre = 0, NombreMystere1 = 0, NombreMystere2 = 0, ContinuerPartie = 1, Compteur = 0, ModeJeu = 0;


        printf("----- Le plus ou moins -----\n\n");
        printf("1. Mode Solo\n");
        printf("2. Mode Multi\n\n");
        scanf("%d", &ModeJeu);

    if (ModeJeu == 1) // Mode de Jeu Solo
    {

    while (ContinuerPartie)
    {
        srand(time(NULL));
        NombreMystere1 = (rand() % (MAX - MIN + 1)) + MIN;


    while (NombreEntre != NombreMystere1)
    {
        Compteur++;
        printf("Quel est le nombre a deviner ? \n\n");
        scanf("%d", &NombreEntre);

    if (NombreEntre < NombreMystere1)
    {
        printf("\nC'est plus !\n\n");
    }

    else if (NombreEntre > NombreMystere1)
    {
        printf("\nC'est moins !\n\n");
    }

    else if (NombreEntre == NombreMystere1)
    {
        printf("\nBRAVO !!! Tu as trouve le nombre mystere en %d coup(s) SOLO !\n\n", Compteur);
        Compteur = 0; // Ici, je remets le Compteur à zéro car si l'on décide de rejouer directement, il continue d'additionner les coups avec ceux de la partie précédente.
        printf("Voulez vous rejouer ?\n\n");
        printf("1. Oui\n");
        printf("0. Non\n");
        scanf("%d", &ContinuerPartie);
    }


    }

    }
    }



    if (ModeJeu == 2) // Mode de Jeu Multi
    {

    while (ContinuerPartie)
    {

        printf("\nJoueur 1, veuillez enregistrer un nombre mystere : ");
        scanf("%d", &NombreMystere2);

    while (NombreEntre != NombreMystere2)
    {
        Compteur++;
        printf("\nJoueur 2, quel est le nombre a deviner ? \n\n");
        scanf("%d", &NombreEntre);

    if (NombreEntre < NombreMystere2)
    {
        printf("\nC'est plus !\n\n");
    }

    else if (NombreEntre > NombreMystere2)
    {
        printf("\nC'est moins !\n\n");
    }

    else if (NombreEntre == NombreMystere2)
    {

        printf("\nBRAVO !!! Tu as trouve le nombre mystere en %d coup(s) MULTI !\n\n", Compteur);
        Compteur = 0; // Ici, je remets le Compteur à zéro car si l'on décide de rejouer directement, il continue d'additionner les coups avec ceux de la partie précédente.
 
        NombreMystere2 = 0; // Comme expliqué plus haut, sans ça, NombreMystere2 garde la valeur précédente en mémoire et n'accepte pas qu'on puisse remettre le même nombre.
        printf("Voulez vous rejouer ?\n\n");
        printf("1. Oui\n");
        printf("0. Non\n");
        scanf("%d", &ContinuerPartie);
    }


    }

    }
    }


    return 0;
}

-
Edité par KevinDurieux 12 mai 2016 à 16:36:29

  • Partager sur Facebook
  • Partager sur Twitter
21 février 2018 à 19:05:50

Salut, j'attend les critiques pour pouvoir améliorer ma solution. Merci !

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main (int argc, char *argv[])
{
    int nombreMystere = 0, nombreEntre = 0, nombreDeCoups = 1;
    int continuerPartie = 1, modeJeux = 0, difficulte = 0;
    int MAX = 100, MIN = 1;

    printf("==== JEUX DU PLUS OU MOINS ====");
    printf("\n\n");
    printf("Voulez vous jouer en SOLO ou a DEUX ?\n");
    printf("\nTapez 1 pour le mode 1 joueur ou 2 pour le mode deux joueurs : ");
    scanf("%d", &modeJeux);

    printf("\nDifficulter\n");
    printf("1. Facile (Entre 1 et 100)\n");
    printf("2. Difficile (Entre 1 et 1000)\n");
    printf("3. Tres difficile (Entre 1 et 10000)\n\n");
    printf("Choisisez la difficulte: Entrez 1, 2 ou 3 : ");
    scanf("%d", &difficulte);

    if(difficulte == 1)
    {
        MAX = 100;
    }
    if(difficulte == 2)
    {
        MAX = 1000;
    }
    if(difficulte == 3)
    {
        MAX = 10000;
    }

    printf("\n");

    while(continuerPartie)
    {
        srand(time(NULL));

        if(modeJeux == 1)
        {
            nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        }
        if(modeJeux == 2)
        {
            printf("Joueur 1 : Veuillez entrer le nombre mystere a trouver : ");
            scanf("%d", &nombreMystere);

            printf("\n");
        }


        while(nombreEntre != nombreMystere)
        {
            printf("Quel est le nombre mystere ? ");
            scanf("%d", &nombreEntre);

            if(nombreEntre < nombreMystere)
            {
                printf("C'est plus !\n");
            }

            else if(nombreEntre > nombreMystere)
            {
                printf("C'est moins !\n");
            }

            else
            {
                printf("\nBravo, vous avez trouve le nombre mystere en %d coups!\n\n", nombreDeCoups);
                printf("Voulez vous contunier la partie ?\n");
                printf("Tapez 1 pour oui et 0 pour non : ");
                scanf("%d", &continuerPartie);
                printf("\n");

                if(continuerPartie == 1)
                {
                    nombreDeCoups = 0;// Pour initialiser le conmpteur nombreDeCoups à 0 lorsqu'on continu la partie
                }
            }

            nombreDeCoups++;
        }
    }

    return 0;
}



  • Partager sur Facebook
  • Partager sur Twitter
4 juillet 2018 à 17:28:58

Bonjour,

voici ma version des améliorations au TP plus ou moins en langage C :

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(int argc, char** argv) {
    int nombreSaisi = 0, nombreMystere = 0, compteurCoups = 0, continuerPartie = 1,
nombreJoueurs = 1, nombreMaximum = 100, niveauDifficulte = 1;
    const int MIN = 1;

    printf("Bienvenue dans ce mini-jeu de plus ou moins\n");
    printf("Vous souhaitez jouer... donc bon jeu\n\n");

    do {
        do {
            printf("Choisissez le niveau de difficulté :\n");
            printf("1. Entre 1 et 100\n");
            printf("2. Entre 1 et 1000\n");
            printf("3. Entre 1 et 10000\n");
            scanf("%d", &niveauDifficulte);
        } while ( (niveauDifficulte < 1) || (niveauDifficulte > 3) );

        switch(niveauDifficulte) {
            case 1:    nombreMaximum = 100;      break;
            case 2:    nombreMaximum = 1000;     break;
            case 3:    nombreMaximum = 10000;    break;
        }

        do {
            printf("Voulez-vous jouer contre l'ordinateur ou à deux ?\n");
            printf("1. Contre l'ordinateur\n");
            printf("2. À deux\n");
            scanf("%d", &nombreJoueurs);
        } while ( (nombreJoueurs < 1) || (nombreJoueurs > 2) );

        if (1 == nombreJoueurs) {
            srand( time(NULL) );
            nombreMystere = ( rand() % (nombreMaximum - MIN + 1) ) + MIN;
        } else {
            do {
                printf("Choisissez un nombre entre %d et %d :\n", MIN, nombreMaximum);
                scanf("%d", &nombreMystere);
            } while ( (nombreMystere < MIN) || (nombreMystere > nombreMaximum) );
        }

        do {
            compteurCoups++;

            printf("Quel est le nombre ? ");
            scanf("%d", &nombreSaisi);

            if (nombreSaisi > nombreMystere) {
                printf("C'est moins !\n\n");
            } else if (nombreSaisi < nombreMystere) {
                printf("C'est plus !\n\n");
            } else {
                printf ("Bravo, vous avez trouvé le nombre mystère en %d coups !!!\n\n", compteurCoups);
                compteurCoups = 0;
            }
        } while (nombreSaisi != nombreMystere);

        do {
            printf("Voulez-vous rejouer ?\n");
            printf("0. Non\n");
            printf("1. Oui\n");
            scanf("%d", &continuerPartie);
        } while ( (continuerPartie < 0) || (continuerPartie > 1) );
    } while (continuerPartie);

    return 0;
}

Qu'est-ce que vous en pensez ? Est-ce que vous avez des idées d'amélioration ?

-
Edité par me_moi 16 juin 2020 à 18:42:06

  • Partager sur Facebook
  • Partager sur Twitter
3 juin 2020 à 1:21:22

Salut

qu est ce que ça veut dire:

system("cls");

  • Partager sur Facebook
  • Partager sur Twitter
16 août 2020 à 10:34:10

svp je voudrais qu'on m'aide pour un code qui genere un nombre entre 1 et 100 et demande a l'ordinateur de le deviner a chaque essai de l'ordinateur

il vous demande si c'est (+-=) entre plus apres chaque nombre deviner la machine vous demandera (+-=)jusqu'a ce que vous entrer = pour dire que c'est la bonne reponse et le code affichera "gagner en nbre de coups"  .

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
16 août 2020 à 11:03:46

NacimGuenane a écrit :

-
Edité par NacimGuenane 13 août 2015 à 20:52:56

Les booléens ça existent ! Ne met plus jamais var == 1 ou var == 0 si cette var stocke un état du programme. Utilise plutôt un booléen si l'état est binaire ou alors une énumération s'il peut prendre plus de valeur que 2 et que ça à plus de sens. Les define j'évite pour ce genre de cas car les bool et énum sont meilleurs.

Un chapitre entier devrait être rajouté (au début) dans le cours de C sur ce sujet ...

Enfin un

const int  MIN = 1

N'a absolument rien à faire dans un code !!! On utilise pas le mot const pour déclarer une constante, on l'utilise pour dire qu'on ne modifiera pas la variable (un pointeur par exemple) mais la valeur 1 ?! Un define est bien plus approprié ici.

-
Edité par Anonyme 16 août 2020 à 11:09:48

  • Partager sur Facebook
  • Partager sur Twitter
16 août 2020 à 12:36:18

Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. 

  • Partager sur Facebook
  • Partager sur Twitter