Advertisement
Domerk

Виселица

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