asmodeus94

odgadnijSlowo

Oct 17th, 2013
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.40 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <windows.h>
  5. #include <ctime>
  6. using namespace std;
  7. string nazwaZag="slowa.txt";
  8. string nazwaWyn="wyniki.txt";
  9. struct slowa{
  10.     string slowoPrawidlowe;
  11.     string znakUzyty;
  12.     string slowoZmienione;
  13.     string tabBledneSlowa[5];
  14.     int iloscBledow;  
  15. };
  16. slowa tab[5];
  17. int liczbaPunktow; // im wiecej tym gorzej
  18. void menu(){
  19.     cout<<"1 - Graj\n";
  20.     cout<<"2 - wyswietl wyniki\n";
  21.     cout<<"3 - Wylacz\nWybor: ";
  22. }
  23. void z(){getchar();getchar();}
  24. void wyswietlWyniki(){
  25.     system("cls");
  26.     ifstream uchw(nazwaWyn.c_str());
  27.     string linia;
  28.     int byl=0,nrLini=0;
  29.     string liniaD;
  30.     cout<<"Lista wynikow:"<<endl;
  31.     while(!uchw.eof()){
  32.         getline(uchw,linia);
  33.         if((linia=="")&&(byl==0)){
  34.             if(nrLini==0){
  35.                 cout<<"Brak wpisow";
  36.                 z();
  37.             }
  38.             break;
  39.         }else byl=1;
  40.         if(linia[0]=='*'){
  41.             getline(uchw,liniaD);  
  42.             cout<<"Nacisnij dowolny klawisz >>>";
  43.             byl=0;
  44.             z();
  45.             system("cls");
  46.         }else cout<<linia<<endl;
  47.         nrLini++;
  48.     }  
  49.     uchw.close();
  50. }
  51. string rob0lub1(byte opcja, byte dl){
  52.     string zw="";
  53.     for(int z=0;z<dl;z++){
  54.         if(opcja==0) zw+="0";else zw+="1";
  55.     }
  56.     return zw;
  57. }
  58. void skopiujDoTablicy(){
  59.     ifstream uchw(nazwaZag.c_str());
  60.     int d=0;
  61.     while(!uchw.eof()){
  62.         string *linia=&tab[d].slowoPrawidlowe;
  63.         getline(uchw,*linia);
  64.         d++;
  65.     }
  66.     srand(time(NULL));
  67.     int dlWyr,ktEle;
  68.     for(int i=0;i<5;i++){
  69.         dlWyr=tab[i].slowoPrawidlowe.length();
  70.         tab[i].znakUzyty=rob0lub1(0,dlWyr);
  71.         while(tab[i].znakUzyty!=rob0lub1(1,dlWyr)){
  72.             ktEle=rand()%dlWyr;
  73.             if(tab[i].znakUzyty[ktEle]!='1'){
  74.                 tab[i].znakUzyty[ktEle]='1';
  75.                 tab[i].slowoZmienione+=tab[i].slowoPrawidlowe[ktEle];
  76.             }  
  77.         }
  78.     }
  79. }
  80. string wypiszBledy(int ktE,int ileB){
  81.     string zw="";
  82.     for(int d=0;d<ileB;d++){
  83.         zw+=tab[ktE].tabBledneSlowa[d];
  84.         if(d!=ileB-1) zw+=", ";
  85.     }
  86.     return zw;
  87. }
  88. void gra(string &nick){
  89.     liczbaPunktow=0;
  90.     string podaneSlowo;
  91.     for(int i=0;i<5;i++){
  92.         tab[i].iloscBledow=0;
  93.         int *liBl=&tab[i].iloscBledow;
  94.         do{
  95.             if(*liBl>0) cout<<"Zle ("<<tab[i].slowoZmienione<<")[bledow: "<<*liBl<<"]\n";else
  96.             cout<<"Odgadnij co to za slowo: "<<tab[i].slowoZmienione<<"\n";
  97.             cin>>podaneSlowo;
  98.             if(podaneSlowo==tab[i].slowoPrawidlowe){
  99.                 liczbaPunktow+=tab[i].iloscBledow;
  100.                 cout<<"Dobrze\n";
  101.                 break;
  102.             }else{
  103.                 tab[i].iloscBledow++;
  104.                 tab[i].tabBledneSlowa[*liBl-1]=podaneSlowo;
  105.                 if(*liBl==5){
  106.                     liczbaPunktow+=tab[i].iloscBledow;
  107.                 }
  108.             }
  109.         }while(*liBl!=5);
  110.     }
  111.     ofstream uchw(nazwaWyn.c_str());
  112.     cout<<nick<<"\n";
  113.     uchw<<nick<<"\n";
  114.     for(int i=0;i<5;i++){
  115.         if(tab[i].iloscBledow>0){
  116.             cout<<"Bledy dla slowa "<<tab[i].slowoPrawidlowe<<" to: "<<wypiszBledy(i,tab[i].iloscBledow)<<"\n";
  117.             uchw<<"Bledy dla slowa "<<tab[i].slowoPrawidlowe<<" to: "<<wypiszBledy(i,tab[i].iloscBledow)<<"\n";
  118.         }
  119.     }
  120.     cout<<"Ogolna liczba bledow: "<<liczbaPunktow;
  121.     uchw<<"Ogolna liczba bledow: "<<liczbaPunktow<<"\n*\n";
  122.     uchw.close();
  123. }
  124. int main(){
  125.     string nick;
  126.     int wybor=0;
  127.     do{
  128.         system("cls");
  129.         menu();
  130.         cin>>wybor;
  131.         switch(wybor){
  132.             case 1:{
  133.                 skopiujDoTablicy();
  134.                 cout<<"Podaj swoj nick: ";cin>>nick;
  135.                 gra(nick);
  136.                 z();
  137.                 break;
  138.             }
  139.             case 2:{
  140.                 wyswietlWyniki();
  141.                 break;
  142.             }                        
  143.         }
  144.     }while(wybor!=3);
  145.     return 0;
  146. }
Advertisement
Add Comment
Please, Sign In to add comment