Partage
  • Partager sur Facebook
  • Partager sur Twitter

Solution amélioration du jeu "Plus ou Moins"

1 mai 2014 à 17:39:09

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 2 mai 2014 à 15:31:35

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
1 mai 2014 à 17:52:26

ligne 22, si je tape une lettre à la place d'un entier, que se passe-t-il ?

ligne 43, idem ?

ligne 69, idem ?

Tu pouvais faire un effort sur l'indentation, le code est rendu pas très lisible...

ligne 10, je là trouve un peu longue. scroller sur un code, c'est pas très apprécié

-
Edité par Anonyme 1 mai 2014 à 18:00:09

  • Partager sur Facebook
  • Partager sur Twitter
1 mai 2014 à 18:19:19

Voila j'ai mieux aérer le code
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
1 mai 2014 à 18:28:07

Non c'est pas aérer qu'il faut, c'est indenter !

Pour le reste, tu as regardé ?

  • Partager sur Facebook
  • Partager sur Twitter
1 mai 2014 à 18:57:51

D'autres remarque en plus de celles de fred :

- Pourquoi faire un switch sur modeJeu puis juste après avoir un test classique sur modeJeu pour une autre portion de code (ie pourquoi ne pas tout mettre dans le switch ou alors dans un if else).

- Il y a trois fois la même ligne "nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;", elle peut facilement être factoriser. En fait avec un petit tableau MAX_SELON_DIFFICULTE = { 100; 1000 ; 10000 }; on peut même faire sauter tous le if else.

- Pourquoi ne pas mettre nombreCoup à 0 au début de la boucle plutôt que de le remettre à 0 à la fin avec une condition sur "continuerPartie".

- Pourquoi dans un test faire juste "continuerPartie" alors que dans le test suivant pour tester la même chose il est fait "continuerPartie == 1".

- Pourquoi ne pas créer des méthodes pour isoler des portions de code (avec des non significatifs) pour ne pas avoir une seule grosse méthode.

-
Edité par macaque 1 mai 2014 à 19:00:44

  • Partager sur Facebook
  • Partager sur Twitter
1 mai 2014 à 21:20:53

Salut merci pour l'aide peut tu modifier le code avec les modifications que tu a indiqué stp
  • Partager sur Facebook
  • Partager sur Twitter
1 mai 2014 à 21:59:56

On est pas là pour corriger tes erreurs. Ils te donnent déjà des conseils, alors évite de demander plus ;)
  • Partager sur Facebook
  • Partager sur Twitter
http://pixelcodeteam.fr/ (@PixelCodeTeam) - L'intelligence c'est comme la programmation, quand t'en as pas tu segfault.
1 mai 2014 à 22:31:40

oui ta raison je vais me debrouiller seul
  • Partager sur Facebook
  • Partager sur Twitter
23 décembre 2014 à 12:36:58

bah du coup tu peux mettre la correction maintenant stp ?? 

Merci =)

  • Partager sur Facebook
  • Partager sur Twitter
27 décembre 2014 à 15:16:58

à

Alex@13 a écrit:

bah du coup tu peux mettre la correction maintenant stp ?? 

Merci =)

Le code est correct, il fonctionne parfaitement le seul problème est l'indentation. Je vais le corriger plus tard je vous tiens au courant 


.

-
Edité par buzzromain 27 décembre 2014 à 15:17:38

  • Partager sur Facebook
  • Partager sur Twitter
28 avril 2015 à 15:53:31

Salut, le plus ou moins amélioré je recherche la solution.
  • Partager sur Facebook
  • Partager sur Twitter
28 avril 2015 à 16:01:31

//voici une proposition de solution de Jean Dechanel
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
int main (int argc, char *argv []) {
int nombreMystere = 0, nombreTape =0, rejouer=0, coups =0, coupsRestant =0, modeJeu =0, niveauJeu =0; char nomJoueur[100];
     int nombreMax = 0, MIN = 1;
srand (time (NULL));
 printf ("\t\t\t=+=-=+= PLUS OU MOINS =+=-=+=\n\n");
    printf ("Quel est votre prénom ?  ");
    scanf ("%s", nomJoueur);
    printf ("Bienvenue au jeu du PLUS OU MOINS %s !\n\n", nomJoueur);
    do   {
  nombreMystere = (rand () %(nombreMax - MIN + 1))  + MIN;
   printf ("=== MODE DE JEU ===\n\n"); 
   printf ("Veuillez choisir un mode de jeu s'il vous plaît !\n\n");
   printf ("1. Mode Solo\n2. Mode Multijoueur\n");
    do      { 
   printf ("Votre choix ? ");   
   scanf ("%d", &modeJeu);   }
    while (modeJeu > 2);
    if (modeJeu == 1)     {
    printf ("Vous avez choisis le Mode Solo, vous allez affronter l' Ordinateur !\n\n");
    printf ("Choisissez un niveau ! :\n1 = Facile\n2 = Moyen\n3 = Difficile\n");
   do     {
     printf ("Votre choix ? ");
     scanf ("%d", &niveauJeu);
     printf ("Vous avez choisis le niveau %d\n\n", niveauJeu); 
         switch (niveauJeu )      {
    case 1:
        nombreMax = 100;
        nombreMystere = (rand() %(nombreMax - MIN + 1) ) + MIN;
        coupsRestant = 6;
        break; 
    case 2:
         nombreMax = 600;
         nombreMystere = (rand() %(nombreMax - MIN + 1) ) + MIN;
         coupsRestant = 12;
         break;
     case 3:
          nombreMax = 1100;
          nombreMystere = (rand() %(nombreMax - MIN + 1) ) + MIN;
          coupsRestant = 18;
          break;     } }
     while (niveauJeu >3)  ;   }
     else {
     printf ("Vous avez choisis le Mode Multijoueur, vous allez affronter un ou plusieurs de vos amis !\n\n");
      printf ("Joueur N° 1, choisissez un niveau de difficulté pour votre adversaire ! :\n1 = Facile\n2 = Moyen\n3 = Difficile\n");
   do     {
     printf ("Votre choix ? ");
     scanf ("%d", &niveauJeu);
     printf ("Vous avez choisis le niveau %d\n\n", niveauJeu); 
         switch (niveauJeu )      {
    case 1:
        nombreMax = 500;
        nombreMystere = (rand() %(nombreMax - MIN + 1) ) + MIN;
        coupsRestant = 12;
         break; 
    case 2:
         nombreMax = 1500;
         nombreMystere = (rand() %(nombreMax - MIN + 1) ) + MIN;
         coupsRestant = 24;
          break;
     case 3:
          nombreMax = 2500;
          nombreMystere = (rand() %(nombreMax - MIN + 1) ) + MIN;
          coupsRestant = 36;
           break;     } }
     while (niveauJeu >3)  ;   }
    do   {
 printf ("=+=-= Il vous reste %d coups =+=-=\n\n", coupsRestant);
  printf ("Quel est le nombre ?  ");
    scanf ("%d", &nombreTape);                                     
    coups++;
    coupsRestant--;
if (nombreTape < nombreMystere)
  printf ("\t\t\t\tC'est plus !\n"); 
else if (nombreTape > nombreMystere)
  printf ("\t\t\t\tC'est moins !\n"); 
else   
 printf ("BRAVOOOOOO, vous avez trouvé le nombre mystère en %d coups !!!\n\n\n", coups); 
    if (coupsRestant == 0 )
    printf ("DÉSOLÉ, vous avez perdu car vous n'avez plus de coups a jouer !!!\n\n");
}
while (nombreTape != nombreMystere && coupsRestant !=0);     
   system ("CLS");
 printf ("Voulez-vous rejouer une autre partie ?\n1 = oui\n2 = non\n\n");
        do      {
          printf ("Votre choix ! ");
        scanf ("%d", &rejouer);   }
        while (rejouer > 2);
     while (rejouer == 1);
    return 0;
}
  • Partager sur Facebook
  • Partager sur Twitter
4 août 2015 à 21:13:13

salut a tous, je viens de terminer mon exercice mais le hic c'est qu'en mode 2 joueurs le joueur n°2 voit mon nombre mystère. je cherche comment faire pour que mon nombre mystère ne soit pas visible

 #include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main()

{

    int nombreEntre = 0, nombreMystere = 0, continuerPartie = 1, choix = 0, choixNiveau =0;

    int MAX = 0;

    const int MIN = 1;

    printf("   === MENU ===\n\n");

    printf("1. Facile\n");

    printf("2. Dur\n");

    printf("3. Tres Dur\n");

    printf("\nChoisissez votre niveau de jeu: ");

    scanf("%d", &choixNiveau);

    if(choixNiveau == 1)

    {

        MAX = 100;

        printf("\n=== Facile ===");

    }

    if(choixNiveau == 2)

    {

        MAX = 1000;

        printf("\n=== Dur ===");

    }

    if(choixNiveau == 3)

    {

        MAX = 10000;

        printf("\n=== Tres Dur ===");

    }

    printf("\n1. Mode 1 Joueur\n");

    printf("2. Mode 2 joueurs\n\n");

    printf("Entrez votre choix: ");

    scanf("%d", &choix);

    if(choix == 1)

    {

        printf("\nVous avez choisis le Mode 1 Joueur\n\n");

    while(continuerPartie)

    {

    srand(time(NULL));

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

    int nombreDeCoup = 1;

    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("\nSuppert !!! Le nombre mystere est bient: %d et vous lavez trouve en %d coups.\n\n", nombreMystere, nombreDeCoup);

        }

        nombreDeCoup++;

    }

    printf("Voulez vous continuer la partie ?\n\n");

    printf("Tapez 1 pour OUI ou 0 pour NON: ");

    scanf("%d", &continuerPartie);

    printf("\n\n");

    }

    }//fin du if(choix == 1)

    else if(choix == 2)

    {

        printf("\nVous avez choisis le Mode 2 Joueurs\n\n");

         while(continuerPartie)

    {

        printf("Joueur 1, Entrez votre Nombre Mystere: ");

        scanf("%d", &nombreMystere);

        printf("\nJoueur 2, Trouvez le Nombre Mystere\n\n");

        int nombreDeCoup = 1;

    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("\nSuppert !!! Le nombre mystere est bient: %d et vous lavez trouve en %d coups.\n\n", nombreMystere, nombreDeCoup);

        }

        nombreDeCoup++;

    }

    printf("Voulez vous continuer la partie ?\n\n");

    printf("Tapez 1 pour OUI ou 0 pour NON: ");

    scanf("%d", &continuerPartie);

    printf("\n\n");

    }

    }//fin du if(choix == 2)

    return 0;

}

  • Partager sur Facebook
  • Partager sur Twitter
5 août 2015 à 10:52:23

Bonjour,

C'est du beau travail. Cependant, étant encore débutant, j'aimerais poser quelques questions concernant cette solution.

  • J'ai débuté récemment et n'ai pas encore rencontré la fonction do. Pourrais-je savoir comment elle fonctionne et à quoi elle sert ? En quoi est-elle différente de printf ? Pourquoi y a-t-il plusieurs do dans le premier do ? Aussi, lorsque j'essaie d'utiliser cette fonction, on me demande de la faire suivre d'un while. Je ne comprends pas trop comment cela fonctionne.
  • Ensuite, j'ai bien vu le switch et comprends comme cela fonctionne, mais je m'intéresse au nombre de coups. Comment sont-ils calculés ? Je vois que la valeur de nombreCoups est initialisée à 0 juste en dessous du premier do, je vois également l'incrémentation ligne 92, mais si je voulais mettre cela en place, je n'y arriverais pas. Pouvez-vous m'expliquer comment ça marche ?
  • Ligne 86, system (cls) m'est inconnu. Je ne comprends pas cela. Qu'est-ce que c'est ? En essayant votre code, j'ai choisi le "niveau moyen" et ai eu comme résultat "sh : cls : command not found". Pourquoi ?

Voilà, c'est tout pour le moment. Si vous pouviez m'aider à y voir un peu plus clair, ce serait déjà bien.

Je me permets de poser ces questions, car nous sommes sur un forum d'entraide et suis sûr qu'il y en aura.

Cordialement,

Jérôme

  • Partager sur Facebook
  • Partager sur Twitter
Jérôme
5 août 2015 à 11:01:57

En fait si tu veux, do c'est un while dans lequel on fait les instructions à l'intérieur au moins une fois.

Par exemple :

bool monBool = false;

do
{
    printf("test");
}while(monBool)
//la boucle ci-dessus fais le printf une fois


while(monBool)
{
    printf("test");
}
//la boucle ci-dessus fais le printf 0 fois.


cls efface la console sur windows. Donc system(cls) fais l'appel de la commande cls depuis le programme. Voila ce que ça fait. Si tu es sur linux, tu feras plutôt system(clear).

edit : vougoul, poste ton code bien formaté (avec le bouton </> au dessus de l'éditeur de texte) pour qu'on puisse mieux voir.

-
Edité par Triterium 5 août 2015 à 11:03:53

  • Partager sur Facebook
  • Partager sur Twitter
5 août 2015 à 11:08:07

Je travaille sur iMac, c'est sûrement pour ça que je reçois l'erreur "sh : cls : command not found", n'est-ce pas ?

En ce qui concerne "bool" et "do", ils n'apparaissent pas dans les chapitres que j'ai pu lire. C'est pourquoi je me demandais pourquoi on devait utiliser ces fonctions pour le jeu, en fait... Est-on obligé d'utiliser la fonction do pour mettre en place ce jeu, ou on peut s'en passer ?

En tout cas, merci pour la réponse rapide !

Jérôme

  • Partager sur Facebook
  • Partager sur Twitter
Jérôme
5 août 2015 à 11:15:55

Non, tout ce que tu fais avec do while tu peux le faire autrement. ça sert juste à raccourcir le code.

bool c'est juste un type qui vaut vrai ou faux et qui sert à tester des trucs.

Je te montres un exemple de l'utilisation de bool et do, puis l'utilisation d'autre chose pour remplacer.

Mettons que je veuille afficher "bonjour" au moins une fois.

// avec bool et do/while

bool monBool = false;

do
{
    printf("bonjour");
}while(monBool) // implicitement égal à while(monBool == true) ou while(monBool == 1)



//sans bool et do/while

int varTest = 0;

printf("bonjour");
while(varTest) //implicitement égal à while(varTest == 1)
{
    printf("bonjour");
}

Je ne sais pas si je suis assez clair ^^

Ah et sur mac ça doit être la même commande (clear pour effacer le temrinal)

-
Edité par Triterium 5 août 2015 à 11:16:56

  • Partager sur Facebook
  • Partager sur Twitter
5 août 2015 à 11:30:37

Ah, bool vaut pour booléen, c'est ça ? Si je comprends bien, dans le livre (fait pas OpenClassRooms, à l'époque Zéro), on est plutôt censé utiliser la partie //sans bool et do/while

J'ai testé la commande clear pour system, mais ça écrit : TERM environment variable not set. Une idée de ce que ça veut dire ?

  • Partager sur Facebook
  • Partager sur Twitter
Jérôme
5 août 2015 à 11:37:24

Mmmh bizarre que ça te fasses ça pour clear! Mais je ne suis clairement pas un expert sous mac, donc je laisserai les pros exprimer leur avis sur ça.

Concernant le reste, utiliser les bool(oui c'est bien pour booleen) c'est bien, et utiliser do/while c'est bien quand c'est nécessaire. Faut juste savoir quand les utiliser. Je dirais que c'est selon tes préférences!

Edit : tu lances ton programme depuis le terminal de mac ou depuis autre chose?(Xcode par exemple)?

-
Edité par Triterium 5 août 2015 à 11:38:44

  • Partager sur Facebook
  • Partager sur Twitter
5 août 2015 à 11:43:28

En fait, comme je suis débutant, je me pose pas mal de questions.

J'ai déjà des difficultés à mettre en place ce jeu, il y a quelques petites choses que j'ai du mal à saisir, les mathématiques ne sont pas mon point fort, mais je m'intéresse énormément à l'informatique, à la création de sites internet, d'applications et de jeux. De ce fait, je me demande si je suis fait pour la programmation. Et surtout, je me demande si je dois commencer par C. Après avoir lu les premiers chapitres du livre, j'ai trouvé ce langage très intéressant et ai voulu m'y former, mais...

Faut-il obligatoirement être un boss en mathématiques pour pouvoir programmer en C ? Pourquoi ai-je tant de difficultés à comprendre le code proposé en premier post de cette page ? Dois-je d'abord programmer avec un autre langage, comme Python ou C# ?

Je sais, je dérive un peu du sujet et des questions initials, mais au fond, il y a tout de même un rapport.

Jérôme

Edit : Pour répondre à ton 'edit', je lance le programme directement dans Xcode. Je n'ai pas essayé avec le terminal.

-
Edité par Ajie62 5 août 2015 à 11:44:25

  • Partager sur Facebook
  • Partager sur Twitter
Jérôme
5 août 2015 à 11:48:13

Pour programmer des choses simples tu n'as pas besoin de t'y connaitre plus que ça en mathématiques. Tu as juste besoin de logique et de rigueur.

Pourquoi as-tu autant de difficultés à comprendre le code des autres? Parce que tu ne t'es pas assez entrainé :') ça viendra à force de programmer, ne t'inquiète pas.

Dois-tu commencer avec un autre langage? Pas forcément. Le C est bien pour comprendre les types, et avoir un code proche de sa machine. Mon conseil : continue de programmer en C, et quand tu auras bien compris le fonctionnement, selon ce que tu veux développer, passe à un autre langage (java, C#, ...). Note que le C est utile dans pas mal de domaines pointus. Mais ce n'est pas le plus simple pour réaliser des petits programmes persos.

C'est normal que la commande system(clear) ne fonctionne pas sous Xcode, il faut la lancer depuis le terminal!

-
Edité par Triterium 5 août 2015 à 11:49:16

  • Partager sur Facebook
  • Partager sur Twitter
5 août 2015 à 11:52:50

D'accord. Je vais continuer avec le C, alors. C'est vrai que je ne suis pas assez entraîné et que pour l'instant, ça peut me paraître assez compliqué. Je vais persévérer et voir où ça me mène.

En fait, comme je suis en formation pour être professeur de français pour les étrangers (projet qui ne m'intéresse plus énormément), j'aimerais créer des applications personnelles pour des exercices et tout ça. Bon, ça c'est pour le début... Bien sûr, j'aimerais faire davantage de choses. Je suis très motivé et j'ai vraiment envie de progresser !

Aussi, comme je suis fan de jeux-vidéo depuis ma plus tendre enfance, j'aimerais apprendre à en créer de simples (pour commencer), voir comment ça se passe, ce qui se cache derrière tout ça et pouvoir en faire moi-même.

J'espère que je pourrai y arriver. Y a-t-il de bons exercices à faire pour commencer en C, à part ce jeu ? Des exercices ne figurant pas dans le bouquin, je veux dire.

Jérôme

Edit : OK, je testerai avec le terminal et te tiendrai au courant.

-
Edité par Ajie62 5 août 2015 à 11:53:15

  • Partager sur Facebook
  • Partager sur Twitter
Jérôme
5 août 2015 à 12:00:10

Lis bien le cours proposé par OCR, et finis le. A la fin il y a un petit TP en SDL qui te permet de faire un jeu de type sokoban. Tu pourras alors après essayer de coder ton propre jeu de plate-forme en SDL par exemple. Puis un jeu d'aventure. Puis autre chose! Tu peux arriver à faire plein de choses bien, mais il faut y aller progressivement ^^

Au début tu peux essayer de faire un morpion sur la console, et quand tu auras appris à gérer la SDL, tu pourras le transcrire en mode graphique. Ça peut être une bonne motivation pour progresser aussi!

  • Partager sur Facebook
  • Partager sur Twitter
5 août 2015 à 18:26:53

Bonjour,

Je voudrais savoir ce qu'on peut penser de ce code pour le jeu du plus ou moins.

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

int main()
{
    srand(time(NULL));
    const int MIN=1;
    int players=0, niveauDiff=0, MAX=1, nombreMystere=0, nombreJoueur=0, compteur=0, cache, rejoue=2;

    while (rejoue==2)
    {
        printf("\n\n!!! MORE THE LESS !!!\n\n");
        printf("Combien de joueurs etes vous? 1 ou 2?\n");
        scanf("%d", &players);

        if (players==1)
        {
            printf("\nChoisissez le niveau de difficulte:\n1 - Facile (Entre 1 et 10)\n2 - Moyen (Entre 1 et 100)\n3 - Difficile (Entre 1 et 1000)\n");
            scanf("%d", &niveauDiff);
            if (niveauDiff==1)
                MAX=10;
            else if (niveauDiff==2)
                MAX=100;
            else
                MAX=1000;

            rejoue=1;
            while (rejoue==1)
            {
                nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                compteur=0;

                do
                {
                    compteur++;
                    printf("\nA votre avis, quel est le nombre mystere ?\n\n");
                    scanf("%d", &nombreJoueur);

                    if (nombreJoueur<nombreMystere)
                        printf("\nPlus!\n");
                    else if (nombreJoueur>nombreMystere)
                        printf("\nMoins!\n");
                    else
                        printf("\nBravo!\nVous avez remporte la partie en %d coup(s).\n\n", compteur);

                }while (nombreJoueur!=nombreMystere);

                printf("\nQue voulez vous faire ?\n1 - Rejouer!\n2 - Retourner au menu.\n3 - Quitter.\n");
                scanf("%d", &rejoue);
            }
        }
        else
        {
            rejoue=1;
            while (rejoue==1)
            {
                printf("\nLe premier joueur choisit un nombre entre 1 et 10, 1 et 100, 1 et 1000...\n\n");
                scanf("%d", &nombreMystere);
                for (cache=0; cache<50; cache++)
                {
                    printf("\n");
                }

                printf("Le second joueur doit tenter de le retrouver");
                compteur=0;

                do
                {
                    compteur++;
                    printf("\nA votre avis, quel est le nombre mystere ?\n\n");
                    scanf("%d", &nombreJoueur);

                    if (nombreJoueur<nombreMystere)
                        printf("\nPlus!\n");
                    else if (nombreJoueur>nombreMystere)
                        printf("\nMoins!\n");
                    else
                        printf("\nBravo!\nVous avez remporte la partie en %d coup(s).\n", compteur);

                }while (nombreJoueur!=nombreMystere);

                printf("Que voulez vous faire ?\n1 - Rejouer!\n2 - Retourner au menu.\n3 - Quitter.\n");
                scanf("%d", &rejoue);
            }
        }
    }
    return 0;
}

Merci d'avance,

  • Partager sur Facebook
  • Partager sur Twitter
6 août 2015 à 13:06:40

salut, je vous presente mon code un peu mieux organisé. dites moi ce que vous en pensé

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

int main()
{
    int nombreEntre = 0, nombreMystere = 0, continuerPartie = 1, choix = 0, choixNiveau =0;
    int MAX = 0;
    const int MIN = 1;

    printf("   === MENU ===\n\n");
    printf("1. Facile\n");
    printf("2. Dur\n");
    printf("3. Tres Dur\n");
    printf("\nChoisissez votre niveau de jeu: ");
    scanf("%d", &choixNiveau);

    if(choixNiveau == 1)
    {
        MAX = 100;
        printf("\n=== Facile ===");
    }
    if(choixNiveau == 2)
    {
        MAX = 1000;
        printf("\n=== Dur ===");
    }
    if(choixNiveau == 3)
    {
        MAX = 10000;
        printf("\n=== Tres Dur ===");
    }

    printf("\n1. Mode 1 Joueur\n");
    printf("2. Mode 2 joueurs\n\n");
    printf("Entrez votre choix: ");
    scanf("%d", &choix);

    if(choix == 1)
    {
        printf("\nVous avez choisis le Mode 1 Joueur\n\n");

    while(continuerPartie)
    {

    srand(time(NULL));
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
    int nombreDeCoup = 1;

    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("\nSuppert !!! Le nombre mystere est bient: %d et vous lavez trouve en %d coups.\n\n", nombreMystere, nombreDeCoup);
        }

        nombreDeCoup++;

    }

    printf("Voulez vous continuer la partie ?\n\n");
    printf("Tapez 1 pour OUI ou 0 pour NON: ");
    scanf("%d", &continuerPartie);
    printf("\n\n");


    }

    }//fin du if(choix == 1)


    else if(choix == 2)
    {
        printf("\nVous avez choisis le Mode 2 Joueurs\n\n");

         while(continuerPartie)
    {
        printf("Joueur 1, Entrez votre Nombre Mystere: ");
        scanf("%d", &nombreMystere);
        printf("\nJoueur 2, Trouvez le Nombre Mystere\n\n");
        int nombreDeCoup = 1;

    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("\nSuppert !!! Le nombre mystere est bient: %d et vous lavez trouve en %d coups.\n\n", nombreMystere, nombreDeCoup);
        }

        nombreDeCoup++;

    }

    printf("Voulez vous continuer la partie ?\n\n");
    printf("Tapez 1 pour OUI ou 0 pour NON: ");
    scanf("%d", &continuerPartie);
    printf("\n\n");

    }

    }//fin du if(choix == 2)

    return 0;
}



  • Partager sur Facebook
  • Partager sur Twitter
6 août 2015 à 13:22:58

Salut! Un premier conseil : srand(time(null)) en dehors de la boucle et au début de ton programme.

Fais des fonctions et surtout indente mieux!Dès que tu as une accolade ouvrante, tu décales le texte d'une tabulation jusqu'à trouver une accolade fermante.

  • Partager sur Facebook
  • Partager sur Twitter
6 août 2015 à 15:32:49

Merci Triterium, c'est encore mieux avec tes conseils :)
  • Partager sur Facebook
  • Partager sur Twitter
10 août 2015 à 23:24:16

Salut , comme vous allez vous en rendre compte je suis débutant en langage C mais plutôt du genre motivé . alors voila concernant le jeu du plus ou moins , quand je choisis le mode avec 1 joueur sa marche a merveille par contre quand je choisie le mode avec 2 joueurs bain sa ne marche pas ( c'est a dire au lieu de  demander au premier joueur d'entrer un nombre grâce au scanf bain le programme répète le mode 1 joueur ) merci d'avance :

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

int main()
{
    const int MAX = 100 , MIN = 1 ;
    int chiffreMystere  , nombreEssayer  , coups = 0 , ModeDeJeu , NombreEntrer ;
    srand(time(NULL));
    chiffreMystere = (rand() % (MAX - MIN + 1 )) + MIN ;

printf("BIENVENUE ,choisisser un mode de jeux\n\n1.Mode 1 joueur\n\n\2.Mode 2 joueurs\n\n");
scanf("%d",&ModeDeJeu);
switch(ModeDeJeu)
{
case 1:
    printf("vous avez choisi le mode 1 joueur\n\n ");
    break;
case 2:
    printf("vous avez choisi le mode 2 joueurs\n\n ");
    break;
default:
    printf("choisisser votre mode de jeu\n\n");
    break;
}

if (1)
{
    printf("entrer un nombre compris entre 1 et 100 : \n\n");


    while  (nombreEssayer != chiffreMystere)

    {
    scanf("%d", &nombreEssayer) ;

    if (nombreEssayer > chiffreMystere)
    {
        printf("C'est moins ! \n\n");
    }

    else if ( nombreEssayer < chiffreMystere)
    {
        printf("C'est plus ! \n\n");
    }

    else
    {
        printf("C'est gagnee bravo  , vous avez utilisez %d coups!!! \n\n", coups);
    }
    coups++;
}
}
else
{
    printf("joueur 1 entrer un nombre :\n\n");


    while  (NombreEntrer != chiffreMystere)

    {
    scanf("%d", &NombreEntrer);

    if (nombreEssayer > chiffreMystere)
    {
        printf("C'est moins ! \n\n");
    }

    else if ( nombreEssayer < chiffreMystere)
    {
        printf("C'est plus ! \n\n");
    }

    else
    {
        printf("C'est gagnee bravo  , vous avez utilisez %d coups!!! \n\n", coups);
    }
    coups++;
}

}
    return 0;
}

  • Partager sur Facebook
  • Partager sur Twitter
11 août 2015 à 0:38:56

voila je me suis un peut casser la tête et j'ai résolu mon problème voila ce que sa donne :

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

int main()
{
    const int MAX = 100 , MIN = 1 ;
    int chiffreMystere  , nombreEssayer  , coups = 0 , ModeDeJeu , NombreEntrer = 1;
    srand(time(NULL));
    chiffreMystere = (rand() % (MAX - MIN + 1 )) + MIN ;

printf("BIENVENUE ,choisisser un mode de jeux\n\n1.Mode 1 joueur\n\n\2.Mode 2 joueurs\n\n");
scanf("%d",&ModeDeJeu);

switch(ModeDeJeu)
{
case 1:
    printf("vous avez choisi le mode 1 joueur\n\n ");
    printf("entrer un nombre compris entre 1 et 100 : \n\n");

    while  (nombreEssayer != chiffreMystere)
    {
    scanf("%d", &nombreEssayer) ;
    if (nombreEssayer > chiffreMystere)
    {
        printf("C'est moins ! \n\n");
    }
    else if ( nombreEssayer < chiffreMystere)
    {
        printf("C'est plus ! \n\n");
    }
    else
    {
        printf("C'est gagnee bravo  , vous avez utilisez %d coups!!! \n\n", coups);
    }
    coups++;
    }
    break;
case 2:
    printf("vous avez choisi le mode 2 joueurs\n\n ");
    printf("joueur 1 entrer un nombre :\n\n");
    scanf("%d" ,&chiffreMystere);
    printf("joueur 2 entrer un nombre compris entre 1 et 100 : \n\n");

    while  (NombreEntrer != chiffreMystere)
    {
    scanf("%d", &NombreEntrer);
    if (NombreEntrer > chiffreMystere)
    {
        printf("C'est moins ! \n\n");
    }
    else if ( NombreEntrer < chiffreMystere)
    {
        printf("C'est plus ! \n\n");
    }
    else
    {
        printf("C'est gagnee bravo  , vous avez utilisez %d coups!!! \n\n", coups);
    }
    coups++;
    }
    break;
default:
    printf("choisisser votre mode de jeu\n\n");
    break;
}
    return 0;
}

  • Partager sur Facebook
  • Partager sur Twitter
13 août 2015 à 16:03:09

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 !



  • Partager sur Facebook
  • Partager sur Twitter