Langage C

Résolu
Bonjour,
je vais commencer pour mettre mon code :

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


int main ( int argc, char** argv )
{
    long nombreMystere = 0, nombreEntre = 0;
    const long MAX = 100, MIN = 1;
	long compteur = 0;
	long continuerPartie = 1;
	long choixPartie;
	long nombreChoisi;
	long modeJoueur = 0;

    // Génération du nombre aléatoire

    srand(time(NULL));
	printf("~~~~~~~~~~~~~~Mode Joueurs~~~~~~~~~~~~~\n\n\n\n");
	printf("1- 1 Joueur\n");
	printf("2- 2 Joueurs\n");
	printf("\n\n");
	scanf("%ld", &modeJoueur);
	switch (modeJoueur)
	{
	case 1 :
		printf("Vous avez choisi le mode 1 Joueur.\n");
    nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
	break;
	case 2 :
		printf("Vous avez choisi le mode 2 Joueurs.\n");
		printf("Joueur 1 choisissez un nombre entre 1 et 100\n");
		nombreMystere = scanf("%ld", &nombreChoisi);
		break;
	}
	


    /* La boucle du programme. Elle se répète tant que l'utilisateur
    n'a pas trouvé le nombre mystère */
	while (continuerPartie)
	{

    do
    {
        // On demande le nombre
        printf("Quel est le nombre ? ");
		compteur++;
        scanf("%ld", &nombreEntre);

        // On compare le nombre entré avec le nombre mystère

        if (nombreMystere > nombreEntre)
            printf("C'est plus !\n\n");
        else if (nombreMystere < nombreEntre)
            printf("C'est moins !\n\n");
	        else
			printf ("Bravo, vous avez trouve le nombre mystere en %ld coups !!!\n\n", compteur);
	
		
    } while (nombreEntre != nombreMystere);
	printf("Voulez vous faire une autre partie ?\n");
	printf("1-Oui\n");
	printf("2-Non\n");
	scanf("%ld", &choixPartie);
	switch (choixPartie)
	{
	case 1 :
		printf("Et c'est partie pour une nouvelle partie !!!\n");
		break;
		continuerPartie = 1;
		case 2 :
		printf("Eh bien a une prochaine fois !!!\n");
		continuerPartie = 0;
		break;
	}
	}
    return 0;
}


Alors je vous explique mon problème qui cocnerne le mode 2 joueurs, quand on a choisi le programme demande au joueur 1 d'entrer un nombre que le joueur 2 devra deviné, le problème c'est qu'une fois le nombre entré, le joueur 2 voit le nombre choisi par le joueur 1, comment faire ?

Merci à tous par avance de votre aide.
Configuration: Windows Vista
Firefox 3.0.6

20 réponses

  1. Contributeur
    en fait j'ai reflchit, le mieux c'est :

    ton switch determine la valeur de min et max.

    apres ton switch, tu fait le srand avec les valeurs qui varient selon le choix du joueur...
    1. Contributeur
      deja, ca c'est faux :

      else (choixNiveau == 3 && modeJoueur == 1)

      il faut else if !!!

      ah eh bien tu dois enlever le srand (time(null))

      on ne doit le mettre que 1 fois par prog !
      par contre, tu peux mettre ca !

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

      normalement c bon !
      1. /*
        
        Plus ou Moins
        -------------
        
        Réalisé par Dark Raviel
        
        
        Création le : 23/02/2008
        
        */
        
        
        #include <stdio.h>
        #include <stdlib.h>
        #include <time.h>
        
        
        int main ( int argc, char** argv )
        {
            long nombreMystere = 0, nombreEntre = 0;
        	long compteur = 0;
        	long continuerPartie = 1;
        	long choixPartie;
        	long nombreChoisi;
        	long modeJoueur = 0;
        	long choixNiveau = 0;
        	long Max = 10000, MIN = 1;
        
            // Génération du nombre aléatoire
        
          
        	printf("~~~~~~~~~~~~~~Mode Joueurs~~~~~~~~~~~~~\n\n\n\n");
        	printf("1- 1 Joueur\n");
        	printf("2- 2 Joueurs\n");
        	printf("\n\n");
        	scanf("%ld", &modeJoueur);
        	switch (modeJoueur)
        	{
        	case 1 :
        		printf("Vous avez choisi le mode 1 Joueur.\n\n");
        		printf("Choisissez votre niveau de difficulté\n\n");
        		pritnf("1- Facile (le nombre sera situé entre 1 et 100)\n\n");
        		printf("2- Moyen (le nombre sera situé entre 1 et 1000)\n\n");
        		printf("3- Difficile (le nombre sera situé entre 1 et 10000)\n\n");
        		scanf("%ld", &choixNiveau);
        		
        		if (choixNiveau == 1 && modeJoueur == 1)
        		{
        			const MAX = 100, MIN = 1;
        			  srand(time(NULL));
        			  nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        		}
        		else if (choixNiveau == 2 && modeJoueur == 1)
        		{
        			const MAX = 1000, MIN = 1;
        			srand(time(NULL));
        			nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        		}
        		else (choixNiveau == 3 && modeJoueur == 1)
        		{
        			const MAX = 10000, MIN = 1;
        			srand(time(NULL)); // Cette ligne me pose problème !!!
        			nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
        		}
        
        
        
            
        	break;
        	case 2 :
        		printf("Vous avez choisi le mode 2 Joueurs.\n");
        		printf("Joueur 1 choisissez un nombre entre 1 et 100\n");
        		scanf("%ld", &nombreChoisi);
        		nombreMystere = nombreChoisi;
        		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\n\n");
        		
        		break;
        	}
        	
        
        
            /* La boucle du programme. Elle se répète tant que l'utilisateur
            n'a pas trouvé le nombre mystère */
        	while (continuerPartie)
        	{
        
            do
            {
                // On demande le nombre
                printf("Quel est le nombre ? ");
        		compteur++;
                scanf("%ld", &nombreEntre);
        
                // On compare le nombre entré avec le nombre mystère
        
                if (nombreMystere > nombreEntre)
                    printf("C'est plus !\n\n");
                else if (nombreMystere < nombreEntre)
                    printf("C'est moins !\n\n");
        	        else
        			printf ("Bravo, vous avez trouve le nombre mystere en %ld coups !!!\n\n", compteur);
        	
        		
            } while (nombreEntre != nombreMystere);
        	printf("Voulez vous faire une autre partie ?\n");
        	printf("1-Oui\n");
        	printf("2-Non\n");
        	scanf("%ld", &choixPartie);
        	switch (choixPartie)
        	{
        	case 1 :
        		printf("Et c'est partie pour une nouvelle partie !!!\n");
        		continuerPartie = 1;
        		break;
        		
        		case 2 :
        		printf("Eh bien a une prochaine fois !!!\n");
        		continuerPartie = 0;
        		break;
        	}
        	}
            return 0;
        }


        Voila ^^
        1. Ah oui c'est exact mais j ai tjs le probleme de la ligne 63
          1. Contributeur
            je n'ai pas trouvé mais il y a une erreur a la fin :

            break;
            continuerPartie = 1;
            case 2 :

            continuerPartie = 1; doit etre dans une case !
            1. /*
              
              Plus ou Moins
              -------------
              
              Réalisé par Dark Raviel
              
              
              Création le : 23/02/2008
              
              */
              
              
              #include <stdio.h>
              #include <stdlib.h>
              #include <time.h>
              
              
              int main ( int argc, char** argv )
              {
                  long nombreMystere = 0, nombreEntre = 0;
              	long compteur = 0;
              	long continuerPartie = 1;
              	long choixPartie;
              	long nombreChoisi;
              	long modeJoueur = 0;
              	long choixNiveau = 0;
              	long Max = 10000, MIN = 1;
              
                  // Génération du nombre aléatoire
              
                
              	printf("~~~~~~~~~~~~~~Mode Joueurs~~~~~~~~~~~~~\n\n\n\n");
              	printf("1- 1 Joueur\n");
              	printf("2- 2 Joueurs\n");
              	printf("\n\n");
              	scanf("%ld", &modeJoueur);
              	switch (modeJoueur)
              	{
              	case 1 :
              		printf("Vous avez choisi le mode 1 Joueur.\n\n");
              		printf("Choisissez votre niveau de difficulté\n\n");
              		pritnf("1- Facile (le nombre sera situé entre 1 et 100)\n\n");
              		printf("2- Moyen (le nombre sera situé entre 1 et 1000)\n\n");
              		printf("3- Difficile (le nombre sera situé entre 1 et 10000)\n\n");
              		scanf("%ld", &choixNiveau);
              		
              		if (choixNiveau == 1 && modeJoueur == 1)
              		{
              			const MAX = 100, MIN = 1;
              			  srand(time(NULL));
              			  nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
              		}
              		else if (choixNiveau == 2 && modeJoueur == 1)
              		{
              			const MAX = 1000, MIN = 1;
              			srand(time(NULL));
              			nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
              		}
              		else (choixNiveau == 3 && modeJoueur == 1)
              		{
              			const MAX = 10000, MIN = 1;
              			srand(time(NULL));
              			nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
              		}
              
              
              
                  
              	break;
              	case 2 :
              		printf("Vous avez choisi le mode 2 Joueurs.\n");
              		printf("Joueur 1 choisissez un nombre entre 1 et 100\n");
              		scanf("%ld", &nombreChoisi);
              		nombreMystere = nombreChoisi;
              		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\n\n");
              		
              		break;
              	}
              	
              
              
                  /* La boucle du programme. Elle se répète tant que l'utilisateur
                  n'a pas trouvé le nombre mystère */
              	while (continuerPartie)
              	{
              
                  do
                  {
                      // On demande le nombre
                      printf("Quel est le nombre ? ");
              		compteur++;
                      scanf("%ld", &nombreEntre);
              
                      // On compare le nombre entré avec le nombre mystère
              
                      if (nombreMystere > nombreEntre)
                          printf("C'est plus !\n\n");
                      else if (nombreMystere < nombreEntre)
                          printf("C'est moins !\n\n");
              	        else
              			printf ("Bravo, vous avez trouve le nombre mystere en %ld coups !!!\n\n", compteur);
              	
              		
                  } while (nombreEntre != nombreMystere);
              	printf("Voulez vous faire une autre partie ?\n");
              	printf("1-Oui\n");
              	printf("2-Non\n");
              	scanf("%ld", &choixPartie);
              	switch (choixPartie)
              	{
              	case 1 :
              		printf("Et c'est partie pour une nouvelle partie !!!\n");
              		break;
              		continuerPartie = 1;
              		case 2 :
              		printf("Eh bien a une prochaine fois !!!\n");
              		continuerPartie = 0;
              		break;
              	}
              	}
                  return 0;
              }
              


              attends t avais pas tout le code XD la l erreur est ligne 63 mais je la voit pas pour être franc
              1. Contributeur
                nombreMystere = scanf("%ld", &nombreChoisi);

                il vaudrait mieux :

                scanf("%ld", &nombreChoisi);
                nombreMystere = nombreChoisi;
                1. Contributeur
                  alors plusieurs modif a faire...

                  tu peux mettre tes variables a la suite :

                  long nombre, nombre1, nombre2;

                  je crois que c'est char* argv
                  et pas char** argv

                  apres ou est ton erreur ? ligne ?
                  1. Ouais mais je suis devant un new probleme, ca m affiche l erreur warning C4244: 'fonction' : conversion de 'time_t' en 'unsigned int', perte possible de données avec ce code
                    #include <stdio.h>
                    #include <stdlib.h>
                    #include <time.h>
                    
                    
                    int main ( int argc, char** argv )
                    {
                        long nombreMystere = 0, nombreEntre = 0;
                    	long compteur = 0;
                    	long continuerPartie = 1;
                    	long choixPartie;
                    	long nombreChoisi;
                    	long modeJoueur = 0;
                    	long choixNiveau = 0;
                    	long Max = 10000;
                    
                        // Génération du nombre aléatoire
                    
                      
                    	printf("~~~~~~~~~~~~~~Mode Joueurs~~~~~~~~~~~~~\n\n\n\n");
                    	printf("1- 1 Joueur\n");
                    	printf("2- 2 Joueurs\n");
                    	printf("\n\n");
                    	scanf("%ld", &modeJoueur);
                    	switch (modeJoueur)
                    	{
                    	case 1 :
                    		printf("Vous avez choisi le mode 1 Joueur.\n\n");
                    		printf("Choisissez votre niveau de difficulté\n\n");
                    		pritnf("1- Facile (le nombre sera situé entre 1 et 100)\n\n");
                    		printf("2- Moyen (le nombre sera situé entre 1 et 1000)\n\n");
                    		printf("3- Difficile (le nombre sera situé entre 1 et 10000)\n\n");
                    		scanf("%ld", &choixNiveau);
                    		
                    		if (choixNiveau == 1 && modeJoueur == 1)
                    		{
                    			const MAX = 100, MIN = 1;
                    			  srand(time(NULL));
                    			  nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                    		}
                    		else if (choixNiveau == 2 && modeJoueur == 1)
                    		{
                    			const MAX = 1000, MIN = 1;
                    			srand(time(NULL));
                    			nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                    		}
                    		else (choixNiveau == 3 && modeJoueur == 1)
                    		{
                    			const MAX = 10000, MIN = 1;
                    			srand(time(NULL));
                    			nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
                    		}
                    
                    
                    
                        
                    	break;
                    	case 2 :
                    		printf("Vous avez choisi le mode 2 Joueurs.\n");
                    		printf("Joueur 1 choisissez un nombre entre 1 et 100\n");
                    		nombreMystere = scanf("%ld", &nombreChoisi);
                    		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\n\n");
                    		
                    		break;
                    	}
                    	
                    
                    
                        /* La boucle du programme. Elle se répète tant que l'utilisateur
                        n'a pas trouvé le nombre mystère */
                    	while (continuerPartie)
                    	{
                    
                        do
                        {
                            // On demande le nombre
                            printf("Quel est le nombre ? ");
                    		compteur++;
                            scanf("%ld", &nombreEntre);
                    
                            // On compare le nombre entré avec le nombre mystère
                    
                            if (nombreMystere > nombreEntre)
                                printf("C'est plus !\n\n");
                            else if (nombreMystere < nombreEntre)
                                printf("C'est moins !\n\n");
                    	        else
                    			printf ("Bravo, vous avez trouve le nombre mystere en %ld coups !!!\n\n", compteur);
                    	
                    		
                        } while (nombreEntre != nombreMystere);
                    	printf("Voulez vous faire une autre partie ?\n");
                    	printf("1-Oui\n");
                    	printf("2-Non\n");
                    	scanf("%ld", &choixPartie);
                    	switch (choixPartie)
                    	{
                    	case 1 :
                    		printf("Et c'est partie pour une nouvelle partie !!!\n");
                    		break;
                    		continuerPartie = 1;
                    		case 2 :
                    		printf("Eh bien a une prochaine fois !!!\n");
                    		continuerPartie = 0;
                    		break;
                    	}
                    	}
                        return 0;
                    }


                    Pourriez vous m'indiquer mon erreur svp
                    1. Contributeur
                      non tu fais :

                      scanf ("%i", &nombre);
                      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");

                      et tu ecris le temps qu'il ne regarde pas...
                      1. Contributeur
                        sinon tu peux ecrire le nombre dans un fichier, et le programme va lire ce nombre....

                        mais c'est embetant de tout le temps ecrire le nombre dans le fichier...
                        1. Contributeur
                          tu peux faire un printf avec plein de \n qui va masquer l'ecran..; mais c'est bricolé....
                          1. Quand j'essai ca il fait un chiffre au hasard par l'ordinateur.
                            1. Contributeur
                              salut !

                              essaye :

                              system ("cls");

                              c'est le code pour masquer l'ecran en console......... !