dllbridge

Untitled

Sep 11th, 2025
516
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.22 KB | None | 0 0
  1.  
  2.  
  3. #include     <iostream>                                                 // ЗМЕЙКА САМОДЕЛЬНАЯ
  4. #include    <windows.h>
  5. #include      <stdio.h>
  6. #include      <conio.h>
  7. #include     <locale.h>      
  8. using   namespace  std;
  9.  
  10.  
  11.  
  12.  
  13.  
  14. void ConsolePrint(int Y, int X, const char* str, int Colour);             //
  15. void way(int c);                                                          // функция для определения нажатой клавиши
  16.  
  17. int      nX = 1;                                         // запоминает позицию в строке для перемещения влево вправо
  18. int      nY = 2;                                                             // переменная для движения вверх и вниз
  19.  
  20.  
  21.  
  22. //////////////////////////////////////////////////
  23. int main()                                      //  
  24. {
  25.    
  26.     setlocale(LC_ALL, "rus");
  27.    
  28.     int nkey;                                          // переменная для хранения нажатие клавиши в настоящий момент
  29.     int noldkey = 0;                                   //          переменная для хранения предидущей нажатой кнопки
  30.    
  31.     while(true)                                                                 // цикл для проверки нажатия клавиши
  32.     {
  33.         nkey =_getch();                                                // функция возвращающая номер нажатой клавиши
  34.  
  35.         if(nkey!= noldkey)                                                                    //условие для проверки
  36.         {
  37.                                                            //noldkey = nkey;// для хранения последней нажатой кнопки
  38.            if(nkey == 224)                                // условие для отбрасывания числа 225 на клавишах стрелках
  39.            {
  40.            
  41.                 nkey =_getch();                                                                     //noldkey = nkey;
  42.                 way(nkey);
  43.            }
  44.         }
  45.    
  46.         if(nkey == 27) break;                                     //если нажата клавиша esc(27) выходим из программы
  47.  
  48.  
  49.     }
  50.    
  51.     cout<< "nkey = " << nkey  << endl;
  52.    
  53.     ConsolePrint(3, nX++,"x", 7);                                                // функция для цвета по координатам
  54. }
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61. ///////////////////////////////////////////////////                           //cout << "Нажата клавиша ВВЕРХ"<< endl;
  62. void way(int c)                                  //  
  63. {
  64.      
  65.      char sz[17];
  66.      
  67.      switch(c)
  68.      {
  69.         case  72:  ConsolePrint(1, 1,"Нажата клавиша ВВЕРХ ", 7);   // функция для цвета по координатам
  70.                    
  71.                    if(nY<=1)
  72.                    {    
  73.                       ConsolePrint(14, 35,"YOU LOSE", 14);
  74.                       break;
  75.                    }
  76.                    ConsolePrint(nY, nX,"x",0);
  77.                    nY--; ConsolePrint(nY, nX,"x",14);
  78.                    break;
  79.                    
  80.                    
  81.         case  80:  sprintf(sz,"Нажата клавиша ВНИЗ %d", nX);                 //cout << "Нажата клавиша ВНИЗ" << endl;
  82.                                                                     //ConsolePrint(1, 1,"Нажата клавиша ВНИЗ  ", 13);
  83.                    if(nY>=27)
  84.                    {    
  85.                       ConsolePrint(14, 35,"YOU LOSE", 14);
  86.                       break;
  87.                    }
  88.                
  89.                    ConsolePrint(1, 1,sz, 13);
  90.                    ConsolePrint(nY, nX,"x",0);
  91.                    nY++; ConsolePrint(nY, nX,"x",12);
  92.                    break;
  93.                    
  94.                        
  95.         case  77:  ConsolePrint(1, 1,"Нажата клавиша ВПРАВО", 11);        //cout << "Нажата клавиша ВПРАВО" << endl;
  96.                
  97.                    if(nX>=119)
  98.                    {    
  99.                       ConsolePrint(14, 35,"YOU LOSE", 14);
  100.                       break;
  101.                    }
  102.                    
  103.                    ConsolePrint(nY, nX,"x",0);
  104.                    nX++;    ConsolePrint(nY, nX,"x",13);                        // функция для цвета по координатам
  105.                    break;      
  106.                    
  107.                    
  108.         case  75:  ConsolePrint(1, 1,"Нажата клавиша ВЛЕВО  ", 6);          //cout << "Нажата клавиша ВЛЕВО" << endl;
  109.                
  110.                    ConsolePrint(nY, nX,"x",0);
  111.                    nX--;    ConsolePrint(nY, nX,"x", 11);                        // функция для цвета по координатам
  112.                    break;
  113.                    
  114.                        
  115.        default:    cout<< "неизвестный код" << endl; 
  116.     }                                                                            
  117. }
  118.  
  119.  
  120.  
  121. /*                какой цвет как обозначается:
  122.    (HEX)  
  123. 0   0 = черный
  124. 1   1 = синий
  125. 2   2 = зеленый
  126. 3   3 = голубой
  127. 4   4 = красный
  128. 5   5 = лиловый
  129. 6   6 = желтый
  130. 7   7 = белый
  131. 8   8 = серый
  132. 9   9 = светло-синий
  133. 10  a = светло-зеленый
  134. 11  b = светло-голубой
  135. 12  c = светло-красный
  136. 13  d = светло-лиловый
  137. 14  e = светло-желтый
  138. 15  f = ярко-белый
  139.  
  140.  
  141.  
  142. */
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151. //////////////////////////////////////////////////////////////////////////////////////////////////////////
  152. LPCSTR Rus(LPCTSTR pszIn)
  153. {
  154.     static char szBuffer[MAX_PATH];
  155.     CharToOemBuff(pszIn, szBuffer, MAX_PATH);
  156.     return szBuffer;
  157. }
  158.  
  159.  
  160.  
  161.  
  162. //   Y  - это строка, X - это позиция в строке
  163. //  ============================================
  164. void ConsolePrint(int Y, int X, const char* str, int Colour)
  165. {
  166.      DWORD   result;
  167.      COORD    coord;
  168.      HANDLE  hStdout = GetStdHandle(STD_OUTPUT_HANDLE);  
  169.      SetConsoleTextAttribute(hStdout, Colour);                    
  170.      coord.X = X;                                                    //  Выбираем позицию
  171.      coord.Y = Y;                           //  Выбираем строку
  172.      SetConsoleCursorPosition(hStdout, coord);    
  173.    
  174.      WriteConsole(hStdout, Rus(str), strlen(str), &result, 0);
  175. }
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
Advertisement
Add Comment
Please, Sign In to add comment