Je pense avoir (enfin !!) finis le TP du plus ou moins en C.
J'ai eu beaucoup de difficulté pour le réaliser (quasiment 3jours... ) et je trouve mon code très long, je voulais savoir si il est "bon" ou si effectivement il est beaucoup trop long.
J'ai fait un compteur de coups, un mode solo et un mode 2 joueurs, et 3 niveau de difficultés et la possibilité de rejouer.
Voici mon code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
int nombreEntre = 0, nombreJoueur = 0, difficulte = 0, nombreChoixJoueur = 0, nombreMystere = 0, compteur = 0, rejouer = 0;
int MAX = 100;
const MIN = 1;
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
do//Boucle pour rejouer
{
system("cls");
printf("\t\t*****Bienvenue au Jeu du PLUS ou MOINS*****\n\n");
printf("A vous de trouver le nombre choisis par l'ordinateur ou par votre adversaire.\n\n");
printf("1.Joueur vs Ordinateur.\n2.Joueur vs Joueur.\n", nombreJoueur);
scanf("%d", &nombreJoueur);
system("cls");
if(nombreJoueur == 1)//Debut Partie SOLO
{
printf("Niveau de difficulte\n1.Facil : 1-10\n2.Normal : 1-100\n3.Extreme : 1-1000\n", difficulte);
scanf("%d", &difficulte);
switch(difficulte)
{
case 1:
MAX = 10;
break;
case 2:
MAX = 100;
break;
case 3:
MAX = 1000;
break;
default:
printf("Cette difficulte n'existe pas , difficulte normal active");
MAX = 100;
break;
}
system("cls");
printf("\t\t*****Joueur VS Ordinateur*****\n\n");
srand(time(NULL));
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
do
{
printf("\nQuel est le nombre\n", nombreEntre);
scanf("%d", &nombreEntre);
if(nombreEntre < nombreMystere)
printf("C'est plus !\n");
else if(nombreEntre > nombreMystere)
printf("C'est moins !\n");
else
printf("\n*****Bravo, vous avez trouve le nombre mystere en %d coups !!!*****\n\n", compteur);
scanf("d", &compteur);
compteur++;
}while(nombreMystere != nombreEntre);
}
if(nombreJoueur == 2)//Début Partie DUO
{
printf("Niveau de difficulte\n1.Facil : 1-10\n2.Normal : 1-100\n3.Extreme : 1-1000\n", difficulte);
scanf("%d", &difficulte);
system("cls");
switch(difficulte)
{
case 1:
printf("Entrer un nombre entre 1 et 10\n\n", nombreChoixJoueur);
scanf("%d", &nombreChoixJoueur);
break;
case 2:
printf("Entrer un nombre entre 1 et 100\n\n", nombreChoixJoueur);
scanf("%d", &nombreChoixJoueur);
break;
case 3:
printf("Entrer un nombre entre 1 et 1000\n\n", nombreChoixJoueur);
scanf("%d", &nombreChoixJoueur);
break;
default:
printf("Cette difficulte n'existe pas , entrer un nombre entre 1 et 100", nombreChoixJoueur);
break;
}
system("cls");
printf("\t\t*****Joueur VS Joueur*****\n\n");
do
{
printf("\nQuel est le nombre\n", nombreEntre);
scanf("%d", &nombreEntre);
if(nombreEntre < nombreChoixJoueur)
printf("C'est plus !\n");
else if(nombreEntre > nombreChoixJoueur)
printf("C'est moins !\n");
else
printf("\n*****Bravo, vous avez trouve le nombre mystere en %d coups !!!*****\n\n", compteur);
scanf("d", &compteur);
compteur++;
}while(nombreChoixJoueur != nombreEntre);
}
printf("Une autre partie ?\n1. Oui.\n2. Non\n", rejouer);
scanf("%d", &rejouer);
}while(rejouer == 1);
system("cls");
printf("\n\t\t*****A Bientot !*****\n\n");
return 0;
}
As-tu appris les tableaux et les fonctions à ce niveau du cours?
Tu ne devrais avoir besoin de calculer le nombre mystère qqu'une fois juste après la difficulté.
Tu n'as besoin d'appeler cls qu'une fois dans le mode 2 joueurs juste après la saisie. Tu devrais pouvoir t'arranger pour n'avoir qu'une copie du jeu lui-même.
- Edité par PierrotLeFou 24 septembre 2021 à 15:24:16
Le Tout est souvent plus grand que la somme de ses parties.
Comme l'écrit Pierrot, il y a moyen de ne faire qu'une seule boucle pour la recherche du nombre mystère:
si mode_1_joueur
nombre_mystère ← nombre généré par le programme
sinon
nombre_mystère ← nombre donné par le joueur 2
faire
nombre_entré ← nombre donné par le joueur 1
....
tant que nombre_entré <> de nombre_mystère
- Edité par edgarjacobs 24 septembre 2021 à 15:58:54
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main ()
{
int nombreEntre = 0, nombreJoueur = 0, difficulte = 0, nombreChoixJoueur = 0, nombreMystere = 0, compteur = 1, rejouer = 0, MAX = 100;
const int MIN = 1;
srand(time(NULL));
do//Boucle pour rejouer
{
system("cls");
compteur = 1;
printf("\t\t*****Bienvenue au Jeu du PLUS ou MOINS*****\n\n");
printf("A vous de trouver le nombre choisis par l'ordinateur ou par votre adversaire.\n\n");
printf("1.Joueur vs Ordinateur.\n2.Joueur vs Joueur.\n");
scanf("%d", &nombreJoueur);
system("cls");
printf("Niveau de difficulte\n1.Facil : 1-10\n2.Normal : 1-100\n3.Extreme : 1-1000\n");
scanf("%d", &difficulte);
system("cls");
if(nombreJoueur == 1)//Difficulte Partie SOLO
{
switch(difficulte)
{
case 1:
MAX = 10;
break;
case 2:
MAX = 100;
break;
case 3:
MAX = 1000;
break;
default:
printf("Cette difficulte n'existe pas , difficulte normal active");
MAX = 100;
break;
}
system("cls");
printf("\t\t*****Joueur VS Ordinateur*****\n\n");
}
if(nombreJoueur == 2)//Difficulte Partie DUO
{
switch(difficulte)
{
case 1:
printf("Entrer un nombre entre 1 et 10\n\n");
scanf("%d", &nombreChoixJoueur);
break;
case 2:
printf("Entrer un nombre entre 1 et 100\n\n");
scanf("%d", &nombreChoixJoueur);
break;
case 3:
printf("Entrer un nombre entre 1 et 1000\n\n");
scanf("%d", &nombreChoixJoueur);
break;
default:
printf("Cette difficulte n'existe pas , entrer un nombre entre 1 et 100");
break;
}
system("cls");
printf("\t\t*****Joueur VS Joueur*****\n\n");
}
if (nombreJoueur == 1)
nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
else
nombreMystere = nombreChoixJoueur;
do
{
printf("\nQuel est le nombre\n");
scanf("%d", &nombreEntre);
if(nombreEntre < nombreMystere)
printf("C'est plus !\n");
else if(nombreEntre > nombreMystere)
printf("C'est moins !\n");
else
printf("\n*****Bravo, vous avez trouve le nombre mystere en %d coups !!!*****\n\n", compteur);
compteur++;
}while(nombreEntre != nombreMystere);
printf("Une autre partie ?\n1. Oui.\n2. Non.\n");
scanf("%d", &rejouer);
}while(rejouer == 1);
system("cls");
printf("\n\t\t*****A Bientot !*****\n\n");
return 0;
}
Si tu tiens à tes "cls" ... C'est essentiel seulement après la saisie en mode deux joueurs. Tu n'as pas besoin de tester si le nombre de joueurs est 2 si ce n'est pas 1, mets un else à la place. Mets le compteur à 0 plutôt que 1 et fais le juste avant le début du jeu. Augmentes le une seule fois après le scanf du nombre à essayer. Tu peux calculer le nombre mystère tout de suite après le switch en mode un joueur Et tu le lis directement en mode deux joueurs. Tu sauves une variable et un test juste avant le jeu.
Le Tout est souvent plus grand que la somme de ses parties.
TP plus ou moins 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.
Le Tout est souvent plus grand que la somme de ses parties.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent
Le Tout est souvent plus grand que la somme de ses parties.