Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <fstream>
- #include <Windows.h>
- int main()
- {
- // подключите локализацию на ввод и на вывод (основная проблема была из-за этого)
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- srand(time(NULL));
- setlocale(LC_ALL, "ru");
- std::ofstream fout;
- fout.open("dictionary.txt");
- std::vector<std::string> dictionary;
- if (!fout.is_open())
- {
- std::cout << "Ошибка открытия файла" << std::endl;
- }
- else
- {
- fout << "лето ";
- fout << "работа ";
- fout << "звезда ";
- fout.close();
- }
- std::ifstream fin;
- std::string str;
- fin.open("dictionary.txt");
- if (!fin.is_open())
- {
- std::cout << "Ошибка открытия файла" << std::endl;
- }
- else
- {
- fin >> str;
- // здесь лучше сделать циклом чем три раза одно и то же действие выполнять
- dictionary.push_back(str);
- fin >> str;
- dictionary.push_back(str);
- fin >> str;
- dictionary.push_back(str);
- fin.close();
- }
- // здесь в векторе три элемента, их индексы 0, 1, 2 а берется остаток от деления на 4, это 0, 1, 2, 3
- std::string word = dictionary[rand() % (dictionary.size() + 1)];
- std::string word_shown(word);
- for (int i = 0; i < word.size(); i++)
- {
- word_shown[i] = '*';
- }
- int endgame = 6;
- char letter;
- int mistake = 0;
- while (endgame > mistake)
- {
- mistake++;
- std::cout << word_shown << std::endl;
- std::cin >> letter;
- for (int i = 0; i < word.size(); i++)
- {
- if (word_shown[i] == '*')
- {
- if (word[i] == letter)
- {
- word_shown[i] = letter;
- // здесь не совсем верно, если в слове например две буквы 'a' mistake уменьшится дважды, mistake лучше меняться в цикле while - увеличивать если такой буквы нет и не меняться если буква есть
- mistake--;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement