Advertisement
35657

Untitled

Jun 15th, 2024
479
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.48 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <fstream>
  4. #include <Windows.h>
  5.  
  6.  
  7.  
  8.  
  9. int main()
  10. {
  11.     // подключите локализацию на ввод и на вывод (основная проблема была из-за этого)
  12.     SetConsoleCP(1251);
  13.     SetConsoleOutputCP(1251);
  14.  
  15.     srand(time(NULL));
  16.     setlocale(LC_ALL, "ru");
  17.     std::ofstream fout;
  18.     fout.open("dictionary.txt");
  19.  
  20.     std::vector<std::string> dictionary;
  21.  
  22.     if (!fout.is_open())
  23.     {
  24.         std::cout << "Ошибка открытия файла" << std::endl;
  25.     }
  26.     else
  27.     {
  28.         fout << "лето ";
  29.         fout << "работа ";
  30.         fout << "звезда ";
  31.         fout.close();
  32.     }
  33.  
  34.  
  35.     std::ifstream fin;
  36.  
  37.     std::string str;
  38.  
  39.     fin.open("dictionary.txt");
  40.  
  41.     if (!fin.is_open())
  42.     {
  43.         std::cout << "Ошибка открытия файла" << std::endl;
  44.     }
  45.     else
  46.     {
  47.         fin >> str;
  48.  
  49.         // здесь лучше сделать циклом чем три раза одно и то же действие выполнять
  50.         dictionary.push_back(str);
  51.         fin >> str;
  52.         dictionary.push_back(str);
  53.         fin >> str;
  54.         dictionary.push_back(str);
  55.         fin.close();
  56.     }
  57.  
  58.  
  59.  
  60.  
  61.     // здесь в векторе три элемента, их индексы 0, 1, 2 а берется остаток от деления на 4, это 0, 1, 2, 3
  62.     std::string word = dictionary[rand() % (dictionary.size() + 1)];
  63.  
  64.  
  65.     std::string word_shown(word);
  66.  
  67.     for (int i = 0; i < word.size(); i++)
  68.     {
  69.         word_shown[i] = '*';
  70.     }
  71.  
  72.     int endgame = 6;
  73.  
  74.     char letter;
  75.  
  76.  
  77.  
  78.     int mistake = 0;
  79.  
  80.     while (endgame > mistake)
  81.     {
  82.         mistake++;
  83.         std::cout << word_shown << std::endl;
  84.         std::cin >> letter;
  85.         for (int i = 0; i < word.size(); i++)
  86.         {
  87.  
  88.             if (word_shown[i] == '*')
  89.             {
  90.                 if (word[i] == letter)
  91.                 {
  92.                     word_shown[i] = letter;
  93.                     // здесь не совсем верно, если в слове например две буквы 'a' mistake уменьшится дважды, mistake лучше меняться в цикле while - увеличивать если такой буквы нет и не меняться если буква есть
  94.                     mistake--;
  95.                 }
  96.             }
  97.  
  98.         }
  99.  
  100.     }
  101.  
  102.  
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement