[LANGAGE C]Plus ou moins (v: 1.4_01)
4 participants
Forum UVSQ :: DUT :: Informatique :: Programmation :: Programmes
Page 1 sur 1
[LANGAGE C]Plus ou moins (v: 1.4_01)
Hello world !
Ouais, c'était mauvais, je sais...
Je vous propose ici un petit jeu très connu: le jeu du nombre aléatoire.
Il consiste a faire générer un nombre par l'ordinateur et a deviner ce nombre.
Le concept de ce topic et de développer un programme "amusant" (bah quoi ? ) et de l'améliorer au fur et a mesure de l'année et de nos nouvelles connaissances en langage C.
Trêve de blabla, voici le code: (attention c'est assez long )
Si vous voulez juste essayer de le programme: Plus ou moins
Changelog:
Si vous avez des questions: vous voulez plus de détail sur comment marche le programme ou vous ne comprenez pas comment marche telle ou telle instruction; ou bien me signaler un bug, n'hésitez pas !
Ouais, c'était mauvais, je sais...
Je vous propose ici un petit jeu très connu: le jeu du nombre aléatoire.
Il consiste a faire générer un nombre par l'ordinateur et a deviner ce nombre.
Le concept de ce topic et de développer un programme "amusant" (bah quoi ? ) et de l'améliorer au fur et a mesure de l'année et de nos nouvelles connaissances en langage C.
Trêve de blabla, voici le code: (attention c'est assez long )
- Spoiler:
- Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MIN 1
#define MAX_FACILE 100
#define MAX_NORMAL 1000
#define MAX_DIFFICILE 10000
int main()
{
int nombre_aleatoire, proposition;
int joueurs;
int difficulte;
int compteur;
int rejouer, choix_rejouer;
// Partie présentation du jeu
printf(" ================== \n");
printf("|| JEU DU ||\n");
printf("|| NOMBRE ALEATOIRE ||\n");
printf("|| code par MeMule ||\n");
printf(" ================== \n");
printf("\n");
printf("Bonjour !\n");
printf("Dans ce jeu vous devez deviner la valeur d'un nombre choisi aleatoirement.\n\n");
printf("Vous pouvez choisir de jouer contre l'IA ou avec un ami.\n\n");
printf("Que decidez-vous ?\n");
printf("1 -> Contre l'IA\n");
printf("2 -> Avec un ami\n");
printf("Choix: "); scanf("%d", &joueurs);
while(joueurs < 1 || joueurs > 2)
{
printf("\n\nLe choix demande n'existe pas...\n");
printf("Veuillez selectionner un mode de jeu: \n");
printf("1 -> Contre l'IA\n");
printf("2 -> Avec un ami\n");
printf("Choix: "); scanf("%d", &joueurs);
}
system("cls");
//Mode solo
if(joueurs == 1)
{
printf("========================[ MODE SOLO ]========================\n");
printf("\nVous avez choisi de jouer contre l'IA\n");
printf("L'ordinateur va generer un nombre aleatoirement, devinez lequel\n");
printf("Il y a trois modes de difficulte: \n");
printf("- Facile: nombre compris entre 1 et 100\n");
printf("- Normal: nombre compris entre 1 et 1.000\n");
printf("- Difficile: nombre compris entre 1 et 10.000\n\n");
rejouer = 1;
while(rejouer == 1)
{
//Choix du mode de difficulté
printf("Veuillez choisir votre mode de difficulte: \n");
printf("1 -> Facile\n");
printf("2 -> Normal\n");
printf("3 -> Difficile\n");
printf("Choix: "); scanf("%d", &difficulte);
//On verifie que le nombre entré par l'utilisateur est bien compris entre 1 et 3
while(difficulte < 1 || difficulte > 3)
{
printf("\n\nLe choix demande n'existe pas...\n");
printf("Veuillez choisir votre mode de difficulte: \n");
printf("1 -> Facile\n");
printf("2 -> Normal\n");
printf("3 -> Difficile\n\n");
printf("Choix: "); scanf("%d", &difficulte);
}
//On génère le nombre aléatoire en fonction de la difficulté selectionnée
//Mode facile
if(difficulte == 1)
{
srand(time(NULL));
nombre_aleatoire = (rand() % (MAX_FACILE - MIN + 1)) + MIN;
printf("\n\n-- MODE FACILE --\n");
printf("Essayez de trouver le nombre aleatoire compris entre %d et %d\n", MIN, MAX_FACILE);
printf("Proposition: "); scanf("%d", &proposition);
compteur = 1;
while(proposition != nombre_aleatoire)
{
if(proposition < MIN || proposition > MAX_FACILE)
{
printf("\nValeur incorrecte: ");
printf("Le nombre est compris entre %d et %d\n", MIN, MAX_FACILE);
}
else if(nombre_aleatoire < proposition)
{
printf("C'est moins...\n");
}
else
{
printf("C'est plus...\n");
}
printf("Proposition: "); scanf("%d", &proposition);
compteur++;
}
printf("\n\nBravo, tu as trouve le bon nombre !\n");
printf("Il s'agissait de %d, tu as trouve en %d tentatives.\n", nombre_aleatoire, compteur);
if(compteur == 1)
{
printf("Un coup de chance ?\n\n");
}
else if(compteur < 10)
{
printf("Joli, essaye de faire mieux\n\n");
}
else
{
printf("Tu manques encore d'entrainement...\n");
printf("Ne t'en fais pas, ca viendra !\n\n");
}
}
//Mode normal
else if(difficulte == 2)
{
nombre_aleatoire = (rand() % (MAX_NORMAL - MIN + 1)) + MIN;
printf("\n\n-- MODE NORMAL --\n");
printf("Essayez de trouver le nombre aleatoire compris entre %d et %d\n", MIN, MAX_NORMAL);
printf("Proposition: "); scanf("%d", &proposition);
compteur = 1;
while(proposition != nombre_aleatoire)
{
if(proposition < MIN || proposition > MAX_NORMAL)
{
printf("\nValeur incorrecte: ");
printf("Le nombre est compris entre %d et %d\n", MIN, MAX_NORMAL);
}
else if(nombre_aleatoire < proposition)
{
printf("C'est moins...\n");
}
else
{
printf("C'est plus...\n");
}
printf("Proposition: "); scanf("%d", &proposition);
compteur++;
}
printf("Bravo, tu as trouve le bon nombre !\n");
printf("Il s'agissait de %d, tu as trouvé en %d tentatives !\n", nombre_aleatoire, compteur);
if(compteur == 1)
{
printf("Un coup de chance ?\n\n");
}
else if(compteur < 25)
{
printf("Joli, essaye de faire mieux\n\n");
}
else
{
printf("Tu manques encore d'entrainement...\n");
printf("Ne t'en fais pas, ca viendra !\n\n");
}
}
//Mode difficile
else
{
nombre_aleatoire = (rand() % (MAX_DIFFICILE - MIN + 1)) + MIN;
printf("\n\n-- MODE DIFFICILE --\n");
printf("Essayez de trouver le nombre aleatoire compris entre %d et %d\n", MIN, MAX_DIFFICILE);
printf("Proposition: "); scanf("%d", &proposition);
compteur = 1;
while(proposition != nombre_aleatoire)
{
if(proposition < MIN || proposition > MAX_DIFFICILE)
{
printf("\nValeur incorrecte: ");
printf("Le nombre est compris entre %d et %d\n", MIN, MAX_DIFFICILE);
}
else if(nombre_aleatoire < proposition)
{
printf("C'est moins...\n");
}
else
{
printf("C'est plus...\n");
}
printf("Proposition: "); scanf("%d", &proposition);
compteur++;
}
printf("Bravo, tu as trouve le bon nombre !\n");
printf("Il s'agissait de %d, tu as trouvé en %d tentatives !\n", nombre_aleatoire, compteur);
if(compteur == 1)
{
printf("Un coup de chance ?\n\n");
}
else if(compteur < 50)
{
printf("Joli, essaye de faire mieux\n\n");
}
else
{
printf("Tu manques encore d'entrainement...\n");
printf("Ne t'en fais pas, ca viendra !\n\n");
}
}
printf("\n\n\n");
printf("Voulez-vous rejouer ?\n");
printf("1 -> Oui\n");
printf("2 -> Non\n");
printf("Choix: "); scanf("%d", &choix_rejouer);
while(choix_rejouer < 1 || choix_rejouer > 2)
{
printf("\n\nLe choix demande n'existe pas...\n");
printf("Vvoulez-vous rejouer ?\n");
printf("1 -> Oui\n");
printf("2 -> Non\n");
printf("Choix: "); scanf("%d", &choix_rejouer);
}
if(choix_rejouer == 2)
{
rejouer = 2;
}
else
{
system("cls");
}
}
printf("\n");
printf("Merci et a bientot !\n\n\n");
}
//Mode 2 joueurs
else
{
rejouer = 1;
while(rejouer == 1)
{
printf("====================[ MODE DEUX JOUEURS ]====================\n");
printf("\nVous avez choisi de jouer avec un ami.\n");
printf("Celui-ci va entrer un nombre et vous devrez deviner lequel...\n\n");
printf("Joueur 2, veuillez entrer un nombre.\n");
printf("Nombre: "); scanf("%d", &nombre_aleatoire);
system("cls");
printf("Le joueur 2 a choisi un nombre\n");
printf("Essayez de deviner de quel nombre il s'agit...\n");
printf("Choix:"); scanf("%d", &proposition);
compteur = 1;
while(proposition != nombre_aleatoire)
{
if(nombre_aleatoire < proposition)
{
printf("C'est moins...\n");
}
else
{
printf("C'est plus...\n");
}
printf("Proposition: "); scanf("%d", &proposition);
compteur++;
}
printf("\nBravo, tu as trouve le bon nombre !\n");
printf("Il s'agissait de %d, tu as trouve en %d tentatives !\n", nombre_aleatoire, compteur);
if(compteur == 1)
{
printf("Un coup de chance ?\n\n");
}
printf("\n\n\n");
printf("Voulez-vous rejouer ?\n");
printf("1 -> Oui\n");
printf("2 -> Non\n");
printf("Choix: "); scanf("%d", &choix_rejouer);
while(choix_rejouer < 1 || choix_rejouer > 2)
{
printf("\n\nLe choix demande n'existe pas...\n");
printf("Vvoulez-vous rejouer ?\n");
printf("1 -> Oui\n");
printf("2 -> Non\n");
printf("Choix: "); scanf("%d", &choix_rejouer);
}
if(choix_rejouer == 2)
{
rejouer = 2;
}
else
{
system("cls");
}
}
printf("\n");
printf("Merci et a bientot !\n\n\n");
}
return 0;
}
Si vous voulez juste essayer de le programme: Plus ou moins
Changelog:
- 1.4_01 Correction d'un bug concernant le compteur de tentatives.
- 1.4 Ajout d'un effacement de l'écran lorsque que l'on choisi le mode de jeu, rejoue et (dans le mode deux joueurs) lorsque J2 entre un nombre.
Ajout des indications "c'est plus" et "c'est moins" suivant la proposition entrée par le joueur. - 1.3 Debug et ajout d'un .exe
- 1.2 Ajout du "multijoueur"
- 1.1 Ajout des niveaux de difficultés
- 1.0 Programme de base
Si vous avez des questions: vous voulez plus de détail sur comment marche le programme ou vous ne comprenez pas comment marche telle ou telle instruction; ou bien me signaler un bug, n'hésitez pas !
Dernière édition par Thomas le Mar 18 Oct - 23:30, édité 8 fois
Re: [LANGAGE C]Plus ou moins (v: 1.4_01)
Premièrement : respect !
Ensuite, j'ai parcouru ton programme, et j'ai une question :
À quoi sert la ligne qui se trouve vers la toute fin 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"); ?
À effacer l'écran ?
D'autre part, et là je trouve ça plus dérangeant : lorsqu'on soumet un nombre au programme, celui-ci se contente de nous dire que nous n'avons pas la bonne réponse : ne devrait-t-il pas dire que nous sommes en deçà du résultat ou au delà plutôt (d'où le nom plus ou moins)? Parce que comme ça, c'est juste pas très jouable ...
D'autre d'autre part, lorsqu'on joue "avec un ami", celui-ci entre la valeur du nombre à deviner puis de nombreuses lignes sont sautées : le problème, c'est que le "devineur" peut tricher en scrollant vers le haut, et là il lit la valeur rentrée par son camarade ...
un system('cls'); avec la stdlib.h, certes moins portable, serait quand même plus approprié pour empêcher la triche, non ?
Encore bien joué !
Ensuite, j'ai parcouru ton programme, et j'ai une question :
À quoi sert la ligne qui se trouve vers la toute fin 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"); ?
À effacer l'écran ?
D'autre part, et là je trouve ça plus dérangeant : lorsqu'on soumet un nombre au programme, celui-ci se contente de nous dire que nous n'avons pas la bonne réponse : ne devrait-t-il pas dire que nous sommes en deçà du résultat ou au delà plutôt (d'où le nom plus ou moins)? Parce que comme ça, c'est juste pas très jouable ...
D'autre d'autre part, lorsqu'on joue "avec un ami", celui-ci entre la valeur du nombre à deviner puis de nombreuses lignes sont sautées : le problème, c'est que le "devineur" peut tricher en scrollant vers le haut, et là il lit la valeur rentrée par son camarade ...
un system('cls'); avec la stdlib.h, certes moins portable, serait quand même plus approprié pour empêcher la triche, non ?
Encore bien joué !
Thibaut J- Mini Développeur
- Messages : 39
Date d'inscription : 28/09/2011
Age : 111
Re: [LANGAGE C]Plus ou moins (v: 1.4_01)
Merci pour les suggestions (surtout le system("cls"); ) je cherchais comment faire et j'ai fait avec les moyens du bord ^^
Bon... grosse flemme de faire une recherche aussi, faut dire :p
A la base je voulais mettre le "c'est plus" ou "c'est moins" mais j'me suis dit ca serait trop bidon pour des roxxor comme nous X)
Mais bon, c'est ajouté ^^
Bon... grosse flemme de faire une recherche aussi, faut dire :p
A la base je voulais mettre le "c'est plus" ou "c'est moins" mais j'me suis dit ca serait trop bidon pour des roxxor comme nous X)
Mais bon, c'est ajouté ^^
Dernière édition par Thomas le Dim 16 Oct - 23:10, édité 1 fois
Re: [LANGAGE C]Plus ou moins (v: 1.4_01)
Je suggèrerais d'avoir plusieurs modes :
___________________________________________________________
Normal :
Choix du Niveau de difficulté :
* Facile (1 à 100)
* Normal (1 à 1,000)
* Difficile (1 à 10,000)
Apparition d'un "C'est plus !" et d'un "C'est moins !" suivant la valeur entrée et la valeur a trouver.
Apparition d'un "C'est la bonne valeur." ou d'un "Ce n'est pas la bonne valeur" suivant la valeur entrée et la valeur a trouver.
Moyen :
Choix du Niveau de difficulté :
* Facile (1 à 100)
* Normal (1 à 1,000)
* Difficile (1 à 10,000)
Apparition d'un "C'est la bonne valeur." ou d'un "Ce n'est pas la bonne valeur" suivant la valeur entrée et la valeur a trouver.
Cauchemardesque :
Choix du Niveau de difficulté :
* Facile (1 à 100)
* Normal (1 à 1,000)
* Difficile (1 à 10,000)
Apparition d'un "C'est la bonne valeur." ou d'un "Ce n'est pas la bonne valeur" suivant la valeur entrée et la valeur a trouver.
Changement de la valeur a trouver toutes les 5 tentatives en facile, 10 tentatives en normal et 20 tentatives en difficile.
(Ty Corentin pour l'idée)
Essaie un peu pour voir : (ou gros coup de moule)
Choix du Niveau de difficulté :
* Difficile (1 à 10,000) (UNIQUEMENT)
Apparition d'un "C'est la bonne valeur." ou d'un "Ce n'est pas la bonne valeur" suivant la valeur entrée et la valeur a trouver.
Changement de la valeur a trouver toutes les 5 tentatives
___________________________________________________________
Ces modes nous permettraient de garder la difficulté du jeu initial et d'autre part d'avoir un petit switch permettant d'adoucir la difficulté du jeu le rendant plus ludique !
Dites moi ce que vous en pensez, s'il y a des incohérences dans ce que je dit ou pas, si c'est une bonne idée ou pas... Merci ^^
___________________________________________________________
Normal :
Choix du Niveau de difficulté :
* Facile (1 à 100)
* Normal (1 à 1,000)
* Difficile (1 à 10,000)
Apparition d'un "C'est plus !" et d'un "C'est moins !" suivant la valeur entrée et la valeur a trouver.
Apparition d'un "C'est la bonne valeur." ou d'un "Ce n'est pas la bonne valeur" suivant la valeur entrée et la valeur a trouver.
Moyen :
Choix du Niveau de difficulté :
* Facile (1 à 100)
* Normal (1 à 1,000)
* Difficile (1 à 10,000)
Apparition d'un "C'est la bonne valeur." ou d'un "Ce n'est pas la bonne valeur" suivant la valeur entrée et la valeur a trouver.
Cauchemardesque :
Choix du Niveau de difficulté :
* Facile (1 à 100)
* Normal (1 à 1,000)
* Difficile (1 à 10,000)
Apparition d'un "C'est la bonne valeur." ou d'un "Ce n'est pas la bonne valeur" suivant la valeur entrée et la valeur a trouver.
Changement de la valeur a trouver toutes les 5 tentatives en facile, 10 tentatives en normal et 20 tentatives en difficile.
(Ty Corentin pour l'idée)
Essaie un peu pour voir : (ou gros coup de moule)
Choix du Niveau de difficulté :
* Difficile (1 à 10,000) (UNIQUEMENT)
Apparition d'un "C'est la bonne valeur." ou d'un "Ce n'est pas la bonne valeur" suivant la valeur entrée et la valeur a trouver.
Changement de la valeur a trouver toutes les 5 tentatives
___________________________________________________________
Ces modes nous permettraient de garder la difficulté du jeu initial et d'autre part d'avoir un petit switch permettant d'adoucir la difficulté du jeu le rendant plus ludique !
Dites moi ce que vous en pensez, s'il y a des incohérences dans ce que je dit ou pas, si c'est une bonne idée ou pas... Merci ^^
Dernière édition par Arthur - TitrOu le Lun 17 Oct - 22:51, édité 12 fois
Re: [LANGAGE C]Plus ou moins (v: 1.4_01)
Coucou
Bon commençons je suis désolé pour mes dernières absence j'ai pas de justifications à donner ( je bade un peu en ce moment ) ( bon trève de flood & 3615 Mylife OSEF )
Je viens tester ton programme et pour commencer je te dis un bon GG
Ceci dit je viens d’apercevoir un bug,
Je joue une fois contre l'IA en mode facile ( pour commencer ) je joue une fois en 5 tentatives je trouve jusque là ok rien d'anormal , je rejoue une deuxième fois toujours trouvé en 5 tentatives sauf que là il y a mince : le programme me dit que j'ai réussis en 10 tentatives ( en gros il cumule avec l'ancienne manche ) , je réessaie encore avec 7 tentatives cette fois-ci sa me dit 17 tentatives ... bon c'est pas très grave ceci , je tenais juste à le signaler sinon ton programme est tout simplement génial !
Bon commençons je suis désolé pour mes dernières absence j'ai pas de justifications à donner ( je bade un peu en ce moment ) ( bon trève de flood & 3615 Mylife OSEF )
Je viens tester ton programme et pour commencer je te dis un bon GG
Ceci dit je viens d’apercevoir un bug,
Je joue une fois contre l'IA en mode facile ( pour commencer ) je joue une fois en 5 tentatives je trouve jusque là ok rien d'anormal , je rejoue une deuxième fois toujours trouvé en 5 tentatives sauf que là il y a mince : le programme me dit que j'ai réussis en 10 tentatives ( en gros il cumule avec l'ancienne manche ) , je réessaie encore avec 7 tentatives cette fois-ci sa me dit 17 tentatives ... bon c'est pas très grave ceci , je tenais juste à le signaler sinon ton programme est tout simplement génial !
Teddy - 3zi0- Futur Développer
- Messages : 15
Date d'inscription : 27/09/2011
Age : 33
Localisation : Vélizy-Villacoublay
Sujets similaires
» [LANGAGE C] Le GPS du champ !
» [LANGAGE C] Morpion
» [LANGAGE C] GrpB - Marées
» [LANGAGE C]Salaire Net[V1.1]
» [LANGAGE C] La Calculatrice basique
» [LANGAGE C] Morpion
» [LANGAGE C] GrpB - Marées
» [LANGAGE C]Salaire Net[V1.1]
» [LANGAGE C] La Calculatrice basique
Forum UVSQ :: DUT :: Informatique :: Programmation :: Programmes
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|