Partage
  • Partager sur Facebook
  • Partager sur Twitter

Besoin d'avis TP jeu du plus ou moins langage C

Pouvez vous me donner votre avis sur mon code ? merci

Anonyme
    5 avril 2021 à 19:26:14

    Bonjour à tous ! . pouvez vous me donner votre avis sur mon code ?

    il s'agit du TP du jeu du plus ou du moins amélioré. comme il n'y a pas de correction sur le site je voulais avoir des avis. merci d'avance !

    PS : je n'ai pas encore étudié les fonctions et les tableaux. je n'ai utilisé que des conditions et des boucles.

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    
    int main(int argc, char *argv[])
    {
    	int tentative, nbreJoueurs, difficultePartie, nbreMax, echec = 1, nouvellePartie = 1, nombreMystere, nbreTentatives = 1;
    	const int MIN =1;
    
    	while (nouvellePartie)
    	{
    	    nbreJoueurs = 0;
    	    difficultePartie = 0;
    		printf("=== Choix du nombre de joueurs ==== \n1 - 1 joueur \n2 - 2 joueurs\n");
    
    		while (!(nbreJoueurs == 1 || nbreJoueurs == 2))
    		{
    			scanf("%d", &nbreJoueurs);
    			if (nbreJoueurs == 1)
    			{
    				printf("Ok ! Vous venez de selectionner le mode \"1 joueur\" \n");
    
    
    			}
    			else if (nbreJoueurs == 2)
    			{
    				printf("Ok ! Vous venez de selectionner le mode \"2 joueurs\" \n");
    			}
    			else
    			{
    				printf("Je n'ai pas compris votre saisi ! Veuillez selectionner le mode de la partie svp !\n");
    			}
    		}
    
    		printf("=== Choix de la difficulte de la partie \n1 - entre 1 et 100 \n2 - entre 1 et 1000 \n3 - entre 1 et 10000\n");
    		while (!(difficultePartie == 1 || difficultePartie == 2 || difficultePartie == 3))
    		{
    			scanf("%d", &difficultePartie);
    			if (difficultePartie == 1)
    			{
    				nbreMax = 100;
    			}
    			else if (difficultePartie == 2)
    			{
    				nbreMax = 1000;
    			}
    			else if (difficultePartie ==3)
    			{
    				nbreMax = 10000;
    			}
    			else
    			{
    				printf("Je n'ai pas compris votre saisi ! Veuillez saisir votre choix svp !\n");
    			}
    		}
    
    		printf("C'est parti !\n");
    		if (nbreJoueurs == 1)
    		{
    			srand(time(NULL));
    			nombreMystere = (rand() % (nbreMax - MIN + 1)) + MIN;
    		}
    		else
    		{
    		    do
                {
                    printf("Veuillez saisir le nombre a deviner :\n");
                    scanf("%d", &nombreMystere);
                    if (!(nombreMystere > 1 && nombreMystere < nbreMax ))
                        {
                            printf("Le nombre mystere doit etre compris entre 1 et %d !\n", nbreMax);
                        }
                } while (!(nombreMystere > 1 && nombreMystere < nbreMax));
    
    
    		}
    
    		printf("Veuillez saisir un nombre entre 1 et %d.\n", nbreMax);
    		scanf("%d", &tentative);
    
    
    		if (tentative == nombreMystere)
    		{
    			printf("Waw ! Quelle chance ! Vous avez trouve du premier coup !\n");
    		}
    
    		else
    		{
    			while (echec)
    			{
    
    				if (tentative > 1 && tentative < nombreMystere && tentative < nbreMax)
    				{
    					printf("C'est plus !\n");
    					scanf("%d", &tentative);
    					nbreTentatives++;
    
    				}
    				else if (tentative > 1 && tentative > nombreMystere && tentative < nbreMax )
    				{
    					printf("C'est moins !\n");
    					scanf("%d", &tentative);
    					nbreTentatives++;
    				}
    				else if (tentative == nombreMystere)
    				{
    					printf("Bravo ! vous avez trouve le nombre mystere en %d tentatives\n", nbreTentatives);
    					echec = 0;
    				}
    				else
    				{
    					printf("Le nombre doit être compris entre 1 et %d ! Veuillez recommencer ! \n", nbreMax);
    					scanf("%d", &tentative);
    					nbreTentatives++;
    				}
                }
    		}
    
    		printf("Voulez vous lancer une autre partie ? Tapez 1 pour OUI et 0 pour NON !\n");
    		scanf("%d", &nouvellePartie);
    
    		if (nouvellePartie)
    		{
    			printf("Ok ! c'est reparti !\n");
    		}
    		else if (nouvellePartie == 0)
    		{
    			printf("Ok pas de souci ! Au revoir !\n");
    		}
    		else
    		{
    			printf("Je regrette mais je n'ai pas saisi votre reponse.. au revoir !\n");
    		}
    
    	}
    
    
    	return 0;
    }
    
    

    -
    Edité par Anonyme 6 avril 2021 à 22:36:28

    • Partager sur Facebook
    • Partager sur Twitter
      6 avril 2021 à 3:32:51

      Ta variable difficultePartie va de 1 à 3
      nbreMax prend les valeurs 10, 100, 1000
      Après que tu te sois assuré que difficultePartie est correct, tu pourrais simplifier le code en utilisant un tableau:
      int tableauMax = {10, 100, 1000};
      et tu feras:
      nbreMax = tableauMax[difficultePartie - 1];
      tu feras sauter tous tes tests sur ce point.
      Sais-tu comment écrire des fonctions?
      Tu pourrais écrire une fonction qui vérifie si un nombre est dans un intervalle et tes boucles auraient l'air de ceci:
      do {
       printf( ... le message ...);
       scanf("%d", &nombre);
      } while(dansIntervalle(nombre, minimum, maximum);
      la fonctiion pourrait être:
      int dansIntervalle(valeur, inf, sup) {
       if(valeur >= inf && valeur <= sup) return(1);
       return(0);
      }
      Tu pourrais raffiner pour avoir les bons messages ...
      Ce serait plus complexe, mais la fonction pourrait inclure le scanf et les bons messages dans des chaînes.
      • Partager sur Facebook
      • Partager sur Twitter

      Le Tout est souvent plus grand que la somme de ses parties.

      Anonyme
        6 avril 2021 à 6:21:47

        Bonjour ! Merci pour votre réponse ! je n'ai pas encore étudié les tableaux (seulement les variables, conditions et fonctions pour le moment). mais je suis sure que votre commentaire me sera très utile une fois que j'aurais étudié les fonctions et les tableaux.
        • Partager sur Facebook
        • Partager sur Twitter
          6 avril 2021 à 7:20:18

          En passant, dans la définition et la déclaration d'une fonction, il faut déclarer les types des variables ...
          int dansIntervalle(int valeur, int inf, int sup) {
          L'idée est que tu vérifies trois variables dans ton code et de la même manière.
          modeDuJeu, autrePartie, difficultePartie
          Il y a moyen de faire la validation et la vérification dans une seule et même fonction pour sauver du code.
          Le printf() du message spécifique pourrait être placé juste avant l'appel.
          Le printf() qui dit que c'est une erreur pourrait être placé dans la fonction ainsi que le scanf
          -
          printf( ...)
          nombre = dansIntervalle(minimum, maximum);
          la fonction:
          int dansIntervalle(int inf, int sup) {
           int nombre;
           for(essais=0; essais<10; essais++) {
           scanf("%d", &nombre);
           if(nombre>=inf && nombre<=sup) return(nombre);
           printf("nombre invalide, doit se trouver entre %d et %d\n", inf, sup);
           } // for
           printf("vous avez fait trop d'erreurs, je démissionne\n");
           exit(1);   // requière stdlib.h
          } // fonction
          • Partager sur Facebook
          • Partager sur Twitter

          Le Tout est souvent plus grand que la somme de ses parties.

            6 avril 2021 à 7:31:13

            Menyar_Kilani a écrit:

            je n'ai pas encore étudié les tableaux (seulement les variables, conditions et fonctions pour le moment)

            Si tu as vu les fonctions, il faut à tout prix les utiliser : c'est pour ainsi dire le concept de base de la programmation structurée (découper un programme en sous-programmes). Bref, recommence tout ! ;)

            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              6 avril 2021 à 15:46:57

              Bonjour. je me suis trompée. je n'ai pas encore vu les fonctions. je voulais dire les boucles à la place. pour le moment je n'ai vu que les conditions et les boucles.
              • Partager sur Facebook
              • Partager sur Twitter
                6 avril 2021 à 16:26:55

                Ah, dans ce cas je n'ai rien à redire, alors. Je pense que tu as fait le maximum avec juste des conditions et des boucles.
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  6 avril 2021 à 17:54:43

                  .

                  -
                  Edité par Anonyme 6 avril 2021 à 21:24:22

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Besoin d'avis TP jeu du plus ou moins langage C

                  × 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.
                  • Editeur
                  • Markdown