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 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
| #include <iostream>
#include <limits>
#include <string>
#include <fstream>
#include <ctime>
#include <vector>
#include <cstdlib>
using namespace std;
#include"jeu.h"
void regles()
{
cout<<"Un nombre compris entre 0 et 100 va etre genere aleatoirement. Vous devez le"<<endl<<"trouver."<<endl;
cout<<"Moins il vous faut d'essais pour le trouver, mieux c'est."<<endl;
cout<<"Ne vous inquietez pas, a chaque coup manque, il vous sera dit si le nombre a"<<endl;
cout<<"trouver est plus grand ou plus petit que celui que vous avez donne."<<endl;
cout<<"En mode Facile, le nombre n'est compris qu'entre 0 et 50, mais votre score ne"<<endl<<"sera pas enregistre."<<endl;
cout<<"Vous avez une limite de 10 essais. Au dela, si vous n'avez pas trouve le"<<endl<<"nombre, vous avez perdu."<<endl;
}
void afficherRecords()
{
ifstream Records("scoresJeuDuNombre.glan");
vector<string> champions(5);
vector<int> records(5);
cout<<endl;
for (int i=0;i<(int)champions.size();i++)//cette boucle enregistre au fur et a mesure les champions...
{
getline(Records,champions[i]);
}
for (int i=0; i<(int)records.size(); i++)//...et celle-ci, leurs scores respectifs...
{
Records>>records[i];
cout<<champions[i]<<" : "<<records[i]<<endl;//...pour afficher tout le bazard.
//j'aurais bien tout mis dans la meme boucle en alternant champions et records, mais ça ne marche pas et j'ignore pourquoi...
}
}
int jeu(int const& diff)
{
srand(time(0));
int nbEssais(1);
int nbSecret;
if (diff==1)//si on est en facile...
{
nbSecret=rand()%51;//...on fait un nombre compris entre 0 et 50. le score n'est pas enregistre en facile.
}
else
{
nbSecret=rand()%101;//entre 0 et 100 en mode normal. le jeu est en mode normal s'il n'est pas en mode facile.
}
/* la seule difference entre le mode normal et le mode facile est l'intervelle a laquelle appartient le nombre a trouver, qui est entier */
int nbDonne(110);
cout<<endl<<"Quel est le nombre ? ";
while(nbDonne!=nbSecret && nbEssais<10)//ici, on compare le nombre donne par le joueur et on compte son nomre d'essais. max d'essais : 127. pourquoi ? parce que.
{
while(!(cin>>nbDonne))//on verifie que le joueur n'a pas mis n'importe quoi
{
if(cin.fail())
{
cout<<"Erreur ; entrez un nombre (le programme va peut-etre planter par votre faute !) ";
cin.clear();
cin.ignore( numeric_limits<streamsize>::max(), '\n' );
}
}
if (nbDonne<nbSecret)
{
cout<<endl<<"Plus grand. ";
}
else
{
cout<<endl<<"Plus petit. ";
}
nbEssais++;
}
if(nbEssais==10 && nbDonne!=nbSecret)
{
cout<<"Vous avez atteint la limite d'essais. Vous avez perdu ! Le nombre etait "<<nbSecret<<"."<<endl;
nbEssais++;//pour ne pas lancer la fonction newScore
}
return nbEssais;
}
void newscore(int const& score)
{
//cette fonction sert a verifier si le joueur a battu un des 5 records enregistres. si oui il sera enregistre a son tour
int nouvellePlace(6);
ifstream Records("scoresJeuDuNombre.glan");
vector<string> champions(5);
vector<int> records(5);
cout<<endl;
for (int i=0;i<(int)champions.size();i++)//cette boucle enregistre au fur et a mesure les champions...
{
getline(Records,champions[i]);
}
for (int i=0; i<(int)records.size(); i++)//...et celle-ci, leurs scores respectifs, en affichant tout le bazar
{
Records>>records[i];
}
for(int i(0);i<5;i++){if(score<records[i]){nouvellePlace--;}}//on compte le nombre de records plus petits que le score, et en détermine la nouvelle place du joueur
if(nouvellePlace<6)
{
for(int i(nouvellePlace);i!=0;i--)
{
champions[i]=champions[i-1];
records[i]=records[i-1];
}
records[nouvellePlace-1]=score;//-1 car c'est un tableau, donc numerote de 0 a 4 et non de 1 a 5 !
}
else if (nouvellePlace>=6){cout<<"Vous n'avez battu aucun record...Desole !"<<endl;}//...tant pis !
if(nouvellePlace<6)
{
if(nouvellePlace==1){cout<<"Felicitation, vous venez de decrocher la 1re place !"<<endl;}//GG !
else{cout<<"Felicitation, vous venez de decrocher la "<<nouvellePlace<<"e place !"<<endl;}//bien aussi !
cout<<"Sous quel nom enregistrer votre score ? (pas d'espaces !) ";//et enfin on lui demande son p'tit nom !
cin>>champions[nouvellePlace-1];
}
ofstream flx_env("scoresJeuDuNombre.glan");//et on reecrit le fichier des scores avec tout ce bazar.
for(int i(0);i<(int)champions.size();i++)
{
flx_env<<champions[i]<<endl;
}
for(int i(0);i<(int)records.size();i++)
{
flx_env<<records[i]<<endl;
}
} |
Partager