#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <ctime>
#include <cstdlib>
#include <algorithm>
using namespace std;
// Функція для завантаження списку слів з файлу
vector<string> loadWords(const string& filename) {
vector<string> words = {"ніч", "істина", "город", "екран", "радість"}; // Попередньо заданий список слів
return words;
}
// Функція вибору випадкового слова
string chooseWord(const vector<string>& words) {
srand(time(0));
return words[rand() % words.size()];
}
// Функція відображення поточного стану слова
void displayWord(const string& word, const vector<bool>& guessed) {
for (size_t i = 0; i < word.size(); ++i) {
if (guessed[i]) cout << word[i] << " ";
else cout << "_ ";
}
cout << endl;
}
int main() {
vector<string> words = loadWords("words.txt"); // Завантаження списку слів
if (words.empty()) {
cout << "Помилка: файл зі словами порожній або не знайдено!" << endl;
return 1;
}
string word = chooseWord(words); // Вибираємо слово
vector<bool> guessed(word.size(), false);
vector<char> wrongGuesses;
int maxMistakes = 6, mistakes = 0;
cout << "Ласкаво просимо до гри 'Шибениця'!" << endl;
while (mistakes < maxMistakes) {
displayWord(word, guessed);
cout << "Помилки (" << mistakes << "/" << maxMistakes << "): ";
for (char c : wrongGuesses) cout << c << " ";
cout << endl;
cout << "Введіть букву: ";
char letter;
cin >> letter;
if (find(word.begin(), word.end(), letter) != word.end()) {
for (size_t i = 0; i < word.size(); ++i) {
if (word[i] == letter) guessed[i] = true;
}
} else {
wrongGuesses.push_back(letter);
mistakes++;
}
if (all_of(guessed.begin(), guessed.end(), [](bool b) { return b; })) {
cout << "Вітаємо! Ви відгадали слово: " << word << endl;
return 0;
}
}
cout << "Ви програли! Загадане слово: " << word << endl;
return 0;
}