IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Petit problème de boucle


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 24
    Par défaut Petit problème de boucle
    Bonjour à tous,

    Comment faire en sorte que mon menu MODE DE JEU réapparaisse systématiquement en début du jeu. En gros comment l'intégrer dans la boucle.

    Je vous remercie d'avance de votre aide.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    #include<stdlib.h>
    #include<stdio.h>
    #include<time.h>
     
    int main(int argc, char *argv[])
    {
    	const int MAX = 100, MIN = 1;
    	long nombreMystere = 0, nombreTaper = 0, rejouer = 0, modeJeu = 0, nombreX = 0, xMAX = 0, xMIN = 0;
     
    	srand(time(NULL));
     
     
    	printf("\n\nJEU DU PLUS OU MOINS\n\n");
     
    	printf("Mode de jeu\n\n");
    	printf("1 : 1 joueur\n");
    	printf("2 : 2 joueurs\n");
    	scanf("%ld", &modeJeu);
     
     
    		if (modeJeu == 1)
    		{
    			while (rejouer == 0)
    			{
    				long compteur = 0;
    				nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
     
    				printf("Le nombre X est compris entre 1 et 100\n\n");
     
    			 while(nombreMystere != nombreTaper)
    			 {
    				 compteur ++;
    				 printf("Tapez un nombre : \n");
    				 scanf("%ld", &nombreTaper);
     
    				 if(nombreMystere < nombreTaper)
    				 {
    					 printf("C'est moins...\n\n");
    				 }
    				 else if (nombreMystere > nombreTaper)
    				 {
    					 printf("C'est plus...\n\n");
    				 }
    				 else
    				 {
    					 printf("Bravo, tu as trouve le bon resultat qui est : %ld\n", nombreMystere);
    				 }
    			 }
     
    			 printf("Tu as mis %ld coups pour le trouver\n", compteur);
    			 printf("0 : Rejouer \n1 : Quitter");
    			 scanf("%ld",&rejouer);
    			}
    		}
     
    		else if (modeJeu == 2)
    		{
    			while (rejouer = 1)
    			{
    				long compteur = 0;
     
    				printf("JOUEUR 1 : Tapez un nombre X sans que votre adversaire le voit\n\n");
    				scanf("%ld", &nombreX);
    				printf("JOUEUR 1 : Pour aider votre adversaire, donner une fourchette dans lequelle se trouve ce nombre\n");
    				printf("JOUEUR 1 : Tapez un nombre inferieur au nombre X\n");
    				scanf("%ld", &xMIN);
    				printf("JOUEUR 1 : Tapez un nombre superieur au nombre X\n\n");
    				scanf("%ld", &xMAX);
     
    				printf("JOUEUR 2 : Le nombre X est compris entre %ld et %ld\n", xMIN, xMAX);
     
    				while (nombreTaper != nombreX)
    				{
    					compteur ++;
    					printf("Devinez le nombre de votre adversaire\n");
    					scanf("%ld", &nombreTaper);
     
    					if (nombreTaper < nombreX)
    					{
    						printf("C'est plus...\n\n");
    					}
    					else if (nombreTaper > nombreX)
    					{
    						printf("C'est moins...\n\n");
    					}
    					else
    					{
    						printf("Bravo, vous avez trouve le bon nombre : %ld\n", nombreX);
    					}
    				}
     
    				printf("Vous avez mis %ld coups pour trouver le resultat\n", compteur);
    				printf("0 : Rejouer \n1 : Quitter");
    				scanf("%ld",&rejouer);
    			}
    		}
     
     
     
    		else
    		{
    			printf("Ce jeu ne peut se jouer qu'a 1 ou 2 joueurs\n");
    		}
     
     
    		return 0;
     
    }

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 104
    Par défaut
    Comment faire en sorte que mon menu MODE DE JEU réapparaisse systématiquement en début du jeu. En gros comment l'intégrer dans la boucle.
    euh... do/while ?

    Par contre, ton code peut être optimisé. J'ai lu ton code vite fait, en diagonale, mais dans les deux modes du jeu, on retrouve les mêmes bouts de code. Ce qu'il faudrait, je pense, c'est écrire un seul bout de code, qui peut gérer les deux modes (1 joueurs ou 2) ; ça allégerait le code et il serait plus lisible également.
    Je te conseillerais également, pour mieux structurer le code, de mettre la boucle qui permet de rejouer dans la fonction principale et de créer une fonction à part pour le jeu en lui-même.
    Enfin, c'est juste mon opinion perso.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 54
    Par défaut
    Je n'ai pas vraiment lu ton code, mais j'ai lu le message de jeroman, si il y a 2 joueurs differents, avec le meme code je te conseil une variable, j'avais fais la meme chose avec un morpion (2 joueurs differents, mais la meme façon de jouer) il faut simplement rajouter une variable qui s'incremente à chaque tour, si la variable est impaire c'est donc le joueur 1 qui joue, si elle est paire c'est le joueur 2.

    Pour savoir si elle est paire ou impaire, je te conseil un modulo2 (%2 si je me souviens bien)

  4. #4
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Une petite remarque : sauf erreur, en lançant le programme et en choisissant d'emblée 2 (pour 2 joueurs), j'ai bien peur que le jeu ne se termine immédiatement (la boucle pour 2 joueur est un while ($rejouer == 1) ).

    Bug qui aurait pu être éviter en suivant les conseils de factorisation donnés plus haut.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 54
    Par défaut
    Sauf erreur de ma part, le programme fonctionnera à 2 joueurs mais pas correctement :
    cela va mettre à 1 la variable rejouer, tu auras une boucle infinie, il faut "=="deja.

    Et une fois que tu auras "==" ta condition ne sera plus bonne car au debut tu initialise ta variable rejouer à 0

  6. #6
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Ah oui, tiens, j'avais pas vu !

    Pour éviter les confusions entre = et == dans les if, je peux recommander de placer les constantes à gauche de l'opérande, de sorte que
    est illégal et génère une erreur de compilation, là où on aurait du écrire
    alors qu'en plaçant la variable à gauche, le compilateur ne peut pas alerter (sauf peut-être en activant certaines warnings).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Petit problème avec boucle DO
    Par mathilde13870 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 24/04/2014, 16h39
  2. [AC-2003] Petit problème de boucle !
    Par Plume27 dans le forum VBA Access
    Réponses: 6
    Dernier message: 07/01/2013, 15h51
  3. Petit problème de boucle
    Par valx76 dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 29/11/2009, 18h13
  4. Petit problème de boucle
    Par [root@127.0.0.1]~# dans le forum Langage
    Réponses: 4
    Dernier message: 03/05/2009, 22h28
  5. ASP petit problème à propos sur une boucle if
    Par nicodu59 dans le forum ASP
    Réponses: 2
    Dernier message: 02/08/2007, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo