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 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
| #include <iostream>
#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 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 trouver"<<endl;
cout<<"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 sera pas enregistré."<<endl;
cout<<"Notez que le jeu s'arrete quand vous atteignez 127 essais, mais c'est plus qu'il n'en faut."<<endl;
}
void afficherRecords(std::vector<std::string> &champions,std::vector<int> &records)
{
ifstream Records("scoresJeuDuNombre.glan");
cout<<endl<<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];
cout<<champions[i]<<" : "<<records[i]<<endl;
//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 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 ? ";
cin>>nbDonne;
while(nbDonne!=nbSecret && nbEssais<127)//ici, on compare le nombre donne par le joueur et on compte son nomre d'essais. max d'essais : 127. pourquoi ? parce que.
{
if (nbDonne<nbSecret)
{
cout<<endl<<endl<<"Plus grand. ";
}
else
{
cout<<endl<<endl<<"Plus petit. ";
}
cin>>nbDonne;
nbEssais++;
}
return nbEssais;
}
void newscore(std::vector<std::string> &champions,std::vector<int> &records,int 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(0);
if (score<records[0])//si le joueur a fait un score plus petit que le meilleur, donc moins d'essais...
{
nouvellePlace=1;//...on indique que le joueur a battu le record...
champions[4]=champions[3];//...on decale tout, ici les noms...
champions[3]=champions[2];
champions[2]=champions[1];
champions[1]=champions[0];
records[4]=records[3];//...puis les scores eux-memes...
records[3]=records[2];
records[2]=records[1];
records[1]=records[0];
records[0]=score;//pour enfin mettre le score du joueur comme meilleur score ! pour son nom on verra plus tard.
}
else if(score<records[1])
{
nouvellePlace=2;//ça fonctionne de la meme facon a chaque fois.
champions[4]=champions[3];
champions[3]=champions[2];
champions[2]=champions[1];
records[4]=records[3];
records[3]=records[2];
records[2]=records[1];
records[1]=score;
}
else if(score<records[2])
{
nouvellePlace=3;
champions[4]=champions[3];
champions[3]=champions[2];
records[4]=records[3];
records[3]=records[2];
records[2]=score;
}
else if(score<records[3])
{
champions[4]=champions[3];
records[4]=records[3];
records[3]=score;
}
else if(score<records[4])
{
nouvellePlace=5;
records[4]=score;
}
else
{
cout<<"Vous n'avez battu aucun record...Desole !"<<endl;//...tant pis !
}
if(nouvellePlace!=0)
{
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 !
switch(nouvellePlace)//et en fonction de sa place, enregistree precedemment, on remplace le nom de l'ancien champion par celui du joueur.
{
case 1:
cin>>champions[0];
break;
case 2:
cin>>champions[1];
break;
case 3:
cin>>champions[2];
break;
case 4:
cin>>champions[3];
break;
case 5:
cin>>champions[4];
break;
}
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