Jeux plus ou moins en C++

Résolu/Fermé
HCKRZ51 Messages postés 618 Date d'inscription samedi 12 décembre 2009 Statut Membre Dernière intervention 27 février 2011 - Modifié par HCKRZ51 le 26/12/2010 à 17:41
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 26 déc. 2010 à 19:12
Hellow',
J'ai créer mon petit jeux, le programme génère un nombre au hasard entre 0 et 1000, le but est de trouver le bon nombre avec le guidage du programme qui vous dit plus ou moins. Faites part de vos impressions, je suis débutant :D:

#include <iostream>
#include<cstdlib>
#include<time.h>

using namespace std;

int main()
{
/***********************************DEBUT VARIABLES************************************/
int nbJoueur;
int nbRand;
string reponse1;
/************************************FIN VARIABLES************************************/

do
{
system("cls");
reponse1 = "N";
srand(time(NULL));
nbRand = rand()%1000;

cout << "Entrez un nombre compris entre 0 et 1000:" << endl;

do
{
cin >> nbJoueur;
if (nbRand == nbJoueur)
{
cout << "Reussi!" << endl << endl;
}
if (nbRand < nbJoueur)
{
cout << "Moins" << endl << endl;
}
else if (nbRand > nbJoueur)
{
cout << "Plus" << endl << endl;
}
}
while(nbJoueur != nbRand);

do
{
cout << "Voulez-vous continuer ? O/N" << endl;
cin >> reponse1;
}
while(((reponse1!="Non")||(reponse1!="non"))&&((reponse1!="Oui")||(reponse1 != "oui")));
}
while((reponse1!="Non")||(reponse1 !="non"));
printf("Fin du programme");
}




A voir également:

2 réponses

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
Modifié par KX le 26/12/2010 à 19:14
Pêle-mêle :

* Tu ne peux pas faire reponse1!="Non", l'opérateur != n'est pas défini.
De plus tu demandes "O/N" mais tu attends "oui", "Oui", "non", ou "Non", il faut être cohérent : aucun utilisateur ne te dira "confiture" si tu lui demandes la météo !
Utilises plutôt reponse1[0]!='N', mais sinon c'est bien de prévoir le cas où il répond en minuscule ou en majuscule.

* Toujours lié à l'utilisation de std::string, tu ne peux pas faire cin >> reponse1;, utilises getline(cin,reponse1); (avec un #include <string>)

* Il est plus logique de déclarer tes variables là où elles sont utilisées et non tout au début du programme.

* Il est plus compréhensible d'utiliser des boucles while(...){...} que des boucles do{...}while(...); et surtout d'utiliser des booléens plutôt que des conditions liées à ta string reponse1.

Exemple :

bool continuer=true; 
string reponse; 

while (continuer) 
{  
 cout << "Voulez-vous continuer ? O/N" << endl; 
 getline(cin,reponse); 

 continuer = reponse[0]!='N' && reponse[0]!='n' && reponse[0]!='O' && reponse[0]!='o'; 
}

* L'idée de vérifier que la réponse est bien l'une de celle attendue est bien, tu pourrais faire de même pour t'assurer que cin >> nbJoueur te donne bien un entier, et t'éviter ainsi des erreurs (regarde ce qui se passe si tu mets une lettre)

* Tu n'as pas besoin de doubler ta condition nbJoueur!=nbRand dans le while et nbJoueur==nbRand dans le if : met l'instruction du if juste après le while

* srand(time(NULL)) n'a pas besoin d'être appelé plusieurs fois, une fois suffit.

* Essaye de te passer de system(...) et n'oublie pas le return 0; à la fin.
La confiance n'exclut pas le contrôle
0
ben parfois c + ârfois c -. c cool non ?
-1