Advertisement
Domerk

Untitled

May 6th, 2012
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.00 KB | None | 0 0
  1. //всё то же самое - попытка сделать на русском. даже с чарами сравнение идёт не правильно(
  2. //интернет сообщает, что сравнение кириллических чаров должно работать нормально, тем более что нам нужно только равенство/неравенство. значит ошибка где-то в тексте программы.
  3.  
  4. #include <iostream>
  5. #include <cstdlib>
  6. #include <string>
  7. #include <cstring>
  8. #include <ctime>
  9.  
  10. using namespace std;
  11.  
  12. void Entre ();
  13. void Game (char* *a);
  14. bool Pic1 (int n, int lenl, char* *a);
  15. void Pic2 (int n);
  16.  
  17. char* sl0 = "параллелограмм"; //слова  - заменить русский на латиницу, так как на русском стринг и чар не сравниваются - ошибка кодировок
  18. char* sl1 = "физика";
  19. char* sl2 = "косинус";
  20. char* sl3 = "гермошпангоут";
  21. char* sl4 = "существительное";
  22. char* sl5 = "синхрофазатрон";
  23. char* sl6 = "коллайдер";
  24. char* sl7 = "восстановление";
  25. char* sl8 = "гиппопотам";
  26. char* sl9 = "торрент";
  27.  
  28. char* *mass[10]; //массив указателей на слова
  29.  
  30. char pic_mass[30];
  31. int mas1[5][4] = { {1, 1, 1, 1}, {1, 256, 2, 256}, {1, 4, 3, 5}, {1, 256, 6, 256}, {1, 7, 256, 8} }; //целочисленный массив, в котором происходит сранвниене
  32. char mas2[5][4] = { {'|', '-', 'T', '-'}, {'|', ' ', 'o', ' '}, {'|', '-', '|', '-'}, {'|', ' ', '^', ' '}, {'|', '/', ' ', '\\'} }; //массив символьный, в нём храниться картинка
  33.  
  34. //==================================================
  35.  
  36. int main ()
  37. {
  38.     setlocale(LC_CTYPE,"");
  39.     mass[0] = &sl0;
  40.     mass[1] = &sl1;
  41.     mass[2] = &sl2;
  42.     mass[3] = &sl3;
  43.     mass[4] = &sl4;
  44.     mass[5] = &sl5;
  45.     mass[6] = &sl6;
  46.     mass[7] = &sl7;
  47.     mass[8] = &sl8;
  48.     mass[9] = &sl9;
  49.  
  50.     for (int i=0; i<30; i++)
  51.     { pic_mass[i]='*'; }
  52.  
  53.     Entre ();
  54.  
  55.     cin.sync();
  56.     cin.clear();
  57.     cin.get();
  58.  
  59.     return 0;
  60. }
  61.  
  62. //==================================================
  63.  
  64. void Entre ()
  65. {
  66.     system("cls");
  67.     setlocale(LC_CTYPE,"");
  68.     cout<<"Начть игру"<<endl<<"1 - ДА       "<<"2 - НЕТ"<<endl;
  69.     int i;
  70.     cin>>i;
  71.     if (i==1)
  72.     {
  73.         srand (time (NULL));
  74.         int Random = rand()%9;
  75.         Game (mass[Random]);
  76.     }
  77.     return;
  78. }
  79.  
  80. //==================================================
  81.  
  82. void Game (char* *a) //функция - игра
  83. {
  84.     system("cls");
  85.     int i=0, j=0, ochibka=0;
  86.     bool verno = false;
  87.     char bukva;
  88.  
  89.     while (i<=34) //пока в русском языке не кончились буквы
  90.     {
  91.         while ((*a)[j]!='\0')
  92.         {
  93.             cout << "*"; j++;} //первый раз выводим символ по количеству букв в слове
  94.  
  95.         setlocale(LC_CTYPE,"");
  96.         cout <<endl<<endl<<"Назовите букву:"<<endl;
  97.         setlocale(LC_CTYPE,"");
  98.         cin >> bukva;
  99.         for(int k=0; k<j; k++) //поиск
  100.         {
  101.             setlocale(LC_CTYPE,"");
  102.             if ((*a)[k]==bukva) // если совпадение есть, номер совпавшей буквы передаётся в первую рисующую функцию, которая эту букву "открывает"
  103.             {
  104.                 verno = true;
  105.                 if (Pic1 (k, j, a))
  106.                 {//проверка на то, было ли совпадение  
  107.                     cout<<endl<<"Вы выиграли!";
  108.                     Entre ();
  109.                     return;}
  110.             }
  111.         }
  112.         if (verno == false) //если совпадения не было
  113.         {
  114.             ochibka++;//число ошибок увеличивается на 1
  115.             Pic2 (ochibka); //передаётся как параметр в функцию, рисующую виселицу
  116.             if (ochibka == 8)
  117.             {
  118.                 setlocale(LC_CTYPE,"");
  119.                 cout<<endl<<"Вы проиграли!"<<endl<<"Правильный ответ: "<<(*a);
  120.                 cin.sync();
  121.                 cin.clear();
  122.                 cin.get();
  123.                 Entre ();
  124.                 return;
  125.             }
  126.         }
  127.  
  128.         i++; verno = false;
  129.     }
  130.  
  131. }
  132.  
  133. //==================================================
  134.  
  135. bool Pic1 (int n, int lenl, char* *a) //n - номер буквы
  136. {
  137.     system("cls");
  138.     setlocale(LC_CTYPE,"");
  139.     pic_mass[n] = (*a)[n];
  140.     for (int i=0; i<lenl; i++)
  141.     { cout<<pic_mass[i]; }
  142.  
  143.     for (int j=0; j<lenl; j++)
  144.     {
  145.         if (pic_mass[j] == '*') return false;
  146.     }
  147.     return true;
  148. };
  149.  
  150. //==================================================
  151.  
  152. void Pic2 (int n) //n - число ошибок
  153. {
  154.     system("cls");
  155.     for (int i = 0; i < 5; i++) //переключение по строкам
  156.     {
  157.         for (int j = 0; j < 4; j++)// переключение по столбцам
  158.             if (mas1[i][j] <= n)
  159.             {
  160.                 cout << mas2[i][j]; // вывести символ, стоящий в аналогичной ячейке второго массива
  161.             } else
  162.                 cout << " ";  // вывести проблел
  163.             cout << endl;
  164.     }
  165. }
  166.  
  167. //==================================================
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement