fork download
  1. //TODO
  2. //Sprawdzanie, czy dana litera była już wcześniej podawana
  3. //Wczytywanie tylko pierwszej litery, a wyrazu tylko w przypadku, gdy ma on długość hasła
  4.  
  5. #include <iostream>
  6. #include <cstdlib>
  7. #include <ctime>
  8. #include <string>
  9. #include <fstream>
  10. #include <vector>
  11. //#include <locale.h> - biblioteka niezbędna do wprowadzenia języka polskiego
  12. //szubienice
  13. void szubienica(int bledy)
  14. {
  15. switch(bledy)
  16. {
  17. case 0:
  18. std::cout<<"";
  19. break;
  20. case 1:
  21. std::cout<<"\n\n\n\n========="<<std::endl;
  22. break;
  23. case 2:
  24. std::cout<<"|\n|\n|\n|\n|\n========="<<std::endl;
  25. break;
  26. case 3:
  27. std::cout<<"======\n|\n|\n|\n|\n|\n========="<<std::endl;
  28. break;
  29. case 4:
  30. std::cout<<"=====\n| |\n|\n|\n|\n|\n========="<<std::endl;
  31. break;
  32. case 5:
  33. std::cout<<"=====\n| |\n| O\n|\n|\n|\n========="<<std::endl;
  34. break;
  35. case 6:
  36. std::cout<<"=====\n| |\n| O\n| |\n| |\n|\n========="<<std::endl;
  37. break;
  38. case 7:
  39. std::cout<<"=====\n| |\n| O\n| \\|\n| |\n|\n========="<<std::endl;
  40. break;
  41. case 8:
  42. std::cout<<"=====\n| |\n| O\n| \\|/\n| |\n|\n========="<<std::endl;
  43. break;
  44. case 9:
  45. std::cout<<"=====\n| |\n| O\n| \\|/\n| |\n| /\n========="<<std::endl;
  46. break;
  47. case 10:
  48. std::cout<<"=====\n| |\n| O\n| \\|/\n| |\n| / \\\n========="<<std::endl;
  49. break;
  50. }
  51. }
  52.  
  53. int main()
  54. {
  55. //zmienne
  56. std::string litery[28]; //alfabet
  57. size_t test; //długość hasła
  58. int bledy=0; //ilość błędów
  59. int proby=0; //ilość prób
  60. std::string litera; //wpisywana litera
  61. std::string wynik; //stan odgadywanego hasła
  62. size_t gruby; //długość podawanej litery - można wprowadzić od razu całe hasło
  63.  
  64. //hasła
  65. std::string wyraz;
  66. std::vector<std::string> hasla;
  67. std::ifstream plik;
  68. plik.open("hasla.txt");
  69. if(!plik.good())
  70. {
  71. std::cout<<"Blad otwierania pliku!"<<std::endl;
  72. return 0;
  73. }
  74. else
  75. std::cout<<"Pomyslnie otwarto plik!"<<std::endl;
  76. int place;
  77. while(!plik.eof())
  78. {
  79. plik>>wyraz;
  80. hasla.push_back(wyraz);
  81. place++;
  82. }
  83. plik.close();
  84.  
  85. //losowanie hasła
  86. srand(time(NULL));
  87. int i=rand()%place;
  88. std::string haslo=hasla[i];
  89.  
  90. //drukowanie długości hasła
  91. size_t dlugosc=haslo.size();
  92. std::cout<<"Haslo do odgadniecia: ";
  93. for(int a=0; a<dlugosc; a++)
  94. {
  95. wynik+="_";
  96. std::cout<<"_ ";
  97. }
  98. std::cout<<std::endl;
  99. std::cout<<std::endl;
  100.  
  101. //podawanie litery
  102. do
  103. {
  104. std::cout<<"Podane litery: ";
  105. for(int j=0; j<proby; j++)
  106. std::cout<<litery[j]<<", ";
  107. std::cout<<std::endl;
  108. std::cout<<"Podaj kolejna litere: ";
  109. std::cin>>litera;
  110. litery[proby]=litera;
  111. gruby=litery[proby].size();
  112.  
  113. //sprawdzanie litery
  114. test=haslo.find(litery[proby]);
  115. if(test==std::string::npos)
  116. bledy++;
  117. else
  118. {
  119. do
  120. {
  121. wynik.erase(test, gruby);
  122. wynik.insert(test, litery[proby]);
  123. test=haslo.find(litery[proby], test+1);
  124. }while(test!=std::string::npos);
  125. }
  126. proby++;
  127. std::cout<<"Wynik: "<<wynik<<std::endl;
  128. std::cout<<"Stan szubienicy: "<<std::endl;
  129. szubienica(bledy);
  130. std::cout<<std::endl;
  131. std::cout<<std::endl;
  132. }while((bledy<10)&&(wynik!=haslo));
  133.  
  134. //Ekran końcowy
  135. if(bledy!=10)
  136. {
  137. std::cout<<std::endl;
  138. std::cout<<std::endl;
  139. std::cout<<"Gratulacje! Udalo ci sie odgadnac haslo!"<<std::endl;
  140. std::cout<<"Haslo brzmialo: "<<haslo<<". Udalo ci sie je odgadnac po "<<proby<<" probach."<<std::endl;
  141. std::cout<<"Stan szubienicy: "<<std::endl;
  142. szubienica(bledy);
  143. std::cout<<std::endl;
  144. std::cout<<std::endl;
  145. std::cout<<"Dziekujemy za gre."<<std::endl;
  146. }
  147. else
  148. {
  149. std::cout<<"Przegrales! Dziesieciokrotnie sie pomyliles i zawisnales na szubienicy."<<std::endl;
  150. szubienica(bledy);
  151. std::cout<<std::endl;
  152. std::cout<<"Twoj wynik: "<<wynik<<std::endl;
  153. std::cout<<"Haslo brzmialo: "<<haslo<<std::endl;
  154. std::cout<<std::endl;
  155. std::cout<<std::endl;
  156. std::cout<<"Dziekujemy za gre."<<std::endl;
  157. }
  158. return 1;
  159. }
Success #stdin #stdout 0.01s 5328KB
stdin
Standard input is empty
stdout
Blad otwierania pliku!