fork download
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <string>
  5. #include <ctime>
  6. #include <cstdlib>
  7. #include <algorithm>
  8.  
  9. using namespace std;
  10.  
  11. // Функція для завантаження списку слів з файлу
  12. vector<string> loadWords(const string& filename) {
  13. vector<string> words = {"ніч", "істина", "город", "екран", "радість"}; // Попередньо заданий список слів
  14. return words;
  15. }
  16.  
  17. // Функція вибору випадкового слова
  18. string chooseWord(const vector<string>& words) {
  19. srand(time(0));
  20. return words[rand() % words.size()];
  21. }
  22.  
  23. // Функція відображення поточного стану слова
  24. void displayWord(const string& word, const vector<bool>& guessed) {
  25. for (size_t i = 0; i < word.size(); ++i) {
  26. if (guessed[i]) cout << word[i] << " ";
  27. else cout << "_ ";
  28. }
  29. cout << endl;
  30. }
  31.  
  32. int main() {
  33. vector<string> words = loadWords("words.txt"); // Завантаження списку слів
  34. if (words.empty()) {
  35. cout << "Помилка: файл зі словами порожній або не знайдено!" << endl;
  36. return 1;
  37. }
  38.  
  39. string word = chooseWord(words); // Вибираємо слово
  40. vector<bool> guessed(word.size(), false);
  41. vector<char> wrongGuesses;
  42. int maxMistakes = 6, mistakes = 0;
  43.  
  44. cout << "Ласкаво просимо до гри 'Шибениця'!" << endl;
  45.  
  46. while (mistakes < maxMistakes) {
  47. displayWord(word, guessed);
  48. cout << "Помилки (" << mistakes << "/" << maxMistakes << "): ";
  49. for (char c : wrongGuesses) cout << c << " ";
  50. cout << endl;
  51.  
  52. cout << "Введіть букву: ";
  53. char letter;
  54. cin >> letter;
  55.  
  56. if (find(word.begin(), word.end(), letter) != word.end()) {
  57. for (size_t i = 0; i < word.size(); ++i) {
  58. if (word[i] == letter) guessed[i] = true;
  59. }
  60. } else {
  61. wrongGuesses.push_back(letter);
  62. mistakes++;
  63. }
  64.  
  65. if (all_of(guessed.begin(), guessed.end(), [](bool b) { return b; })) {
  66. cout << "Вітаємо! Ви відгадали слово: " << word << endl;
  67. return 0;
  68. }
  69. }
  70.  
  71. cout << "Ви програли! Загадане слово: " << word << endl;
  72. return 0;
  73. }
  74.  
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
Ласкаво просимо до гри 'Шибениця'!
_ _ _ _ _ _ _ _ _ _ 
Помилки (0/6): 
Введіть букву: _ _ _ _ _ _ _ _ _ _ 
Помилки (1/6):   
Введіть букву: _ _ _ _ _ _ _ _ _ _ 
Помилки (2/6):     
Введіть букву: _ _ _ _ _ _ _ _ _ _ 
Помилки (3/6):       
Введіть букву: _ _ _ _ _ _ _ _ _ _ 
Помилки (4/6):         
Введіть букву: _ _ _ _ _ _ _ _ _ _ 
Помилки (5/6):           
Введіть букву: Ви програли! Загадане слово: екран