Advertisement
Guest User

pvtqrf

a guest
Mar 26th, 2020
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.65 KB | None | 0 0
  1. #define _WIN32_WINNT 0x0500
  2. #include <iostream>
  3. #include <Windows.h>
  4. #include <string>
  5. #include <vector>
  6. #include <conio.h>
  7. #include <stdio.h>
  8. #include <ctime>
  9. using namespace std;
  10. HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE);
  11. void ToPutWindow(short X = -5 - 1, short Y = -27 - 1)
  12. {
  13.     SetWindowPos(GetConsoleWindow(), 0, X, Y, 0, 0, SWP_NOSIZE);
  14. }
  15. void UnwrapScreen()
  16. {
  17.     COORD NewSBSize;
  18.     SMALL_RECT DisplayArea = { 0, 0, 0, 0 };
  19.     NewSBSize = GetLargestConsoleWindowSize(hCon);
  20.     SetConsoleScreenBufferSize(hCon, NewSBSize);
  21.     DisplayArea.Right = NewSBSize.X - 1;
  22.     DisplayArea.Bottom = NewSBSize.Y - 1;
  23.     SetConsoleWindowInfo(hCon, TRUE, &DisplayArea);
  24. }
  25. int main(){
  26.     SetConsoleCP(1251);
  27.     SetConsoleOutputCP(1251);
  28.     ToPutWindow(0, 0);
  29.     UnwrapScreen();
  30.     ToPutWindow();
  31.     CONSOLE_CURSOR_INFO curs = { 0 };
  32.     curs.dwSize = sizeof(curs);
  33.     curs.bVisible = FALSE;
  34.     ::SetConsoleCursorInfo(::GetStdHandle(STD_OUTPUT_HANDLE), &curs);
  35.     int z, l = 0, n = 2, u;
  36.     vector <vector <int>> d(2);
  37.     for (int i = 0; i < 10; i++){
  38.         d[1].push_back(0);
  39.         d[0].push_back(0);
  40.     }
  41.     int h = 30, g = 40, xa = 2, ya = 2;
  42.     cout << "ВВедите размеры поля через пробел числа от 10 до 62:";
  43.     cin >> h >> g;
  44.     int x = h / 2, y = g / 2;
  45.     system("cls");
  46.     cout << "ВВедите скорость от 1 до 200:";
  47.     cin >> u;
  48.     system("cls");
  49.     //system("mode con cols=32 lines=21"); //размер окна, вывод нужного количества строк в консоль
  50.     //HANDLE  hout = GetStdHandle(STD_OUTPUT_HANDLE);
  51.     //COORD  size{ 100, 100 };//символов строки, строк
  52.     //SetConsoleScreenBufferSize(hout, size);//размер буфера
  53.     vector <vector <char>> a(h);
  54.     vector <char> af(2);
  55.     for (int i = 0; i < h; i++){
  56.         for (int j = 0; j < g; j++){
  57.             if (i == 9){
  58.                 i = i;
  59.             }
  60.             if (i == 0 || i == h - 1){
  61.                  a[i].push_back('-');
  62.             }
  63.             else if (j == 0 || j == g - 1){
  64.                 a[i].push_back('|');
  65.             }
  66.             else {
  67.                 a[i].push_back(' ');
  68.             }
  69.         }
  70.     }
  71.     a[h/2][g/2] = '0';
  72.     a[2][2] = '*';
  73.     for (int i = 0; i < h; i++){
  74.         for (int j = 0; j < g; j++){
  75.             printf("%c", a[i][j]);
  76.         }
  77.         cout << endl;
  78.     }
  79.     z = char(_getch());
  80.     if (z == 'w'){
  81.         n = 4;
  82.     }
  83.     else if (z == 'd'){
  84.         n = 3;
  85.     }
  86.     else if (z == 's'){
  87.         n = 2;
  88.     }
  89.     else if (z == 'a'){
  90.         n = 1;
  91.     }
  92.     while (x != 0 || x != h - 1 || y != 0 || y != g - 1){
  93.         if (x == 0 || x == h - 1 || y == 0 || y == g - 1) break;
  94.         Sleep(200-u);
  95.         if (_kbhit()){
  96.             z = char(_getch());
  97.             if (z == 'w'){
  98.                 n = 4;
  99.             }
  100.             else if (z == 'd'){
  101.                 n = 3;
  102.             }
  103.             else if (z == 's'){
  104.                 n = 2;
  105.             }
  106.             else if (z == 'a'){
  107.                 n = 1;
  108.             }
  109.         }
  110.         if (n == 1){
  111.             if (l != d[0].size()){
  112.                 d[1][l] = x;
  113.                 d[0][l] = y;
  114.                 l++;
  115.             }
  116.             else{
  117.                 l = 0;
  118.                 d[1][l] = x;
  119.                 d[0][l] = y;
  120.                 l++;
  121.             }
  122.             if (a[x][y - 1] == '1'){
  123.                 break;
  124.             }
  125.             else{
  126.                 a[x][y - 1] = '0';
  127.                 y--;
  128.             }
  129.         }
  130.         else if (n == 2){
  131.             if (l != d[0].size()){
  132.                 d[1][l] = x;
  133.                 d[0][l] = y;
  134.                 l++;
  135.             }
  136.             else{
  137.                 l = 0;
  138.                 d[1][l] = x;
  139.                 d[0][l] = y;
  140.                 l++;
  141.             }
  142.             if (a[x + 1][y] == '1'){
  143.                 break;
  144.             }
  145.             else{
  146.                 a[x + 1][y] = '0';
  147.                 x++;
  148.             }
  149.         }
  150.         else if (n == 3){
  151.             if (l != d[0].size()){
  152.                 d[1][l] = x;
  153.                 d[0][l] = y;
  154.                 l++;
  155.             }
  156.             else{
  157.                 l = 0;
  158.                 d[1][l] = x;
  159.                 d[0][l] = y;
  160.                 l++;
  161.             }
  162.             if (a[x][y + 1] == '1'){
  163.                 break;
  164.             }
  165.             else{
  166.                 a[x][y + 1] = '0';
  167.                 y++;
  168.             }
  169.         }
  170.         else if (n == 4){
  171.             if (l != d[0].size()){
  172.                 d[1][l] = x;
  173.                 d[0][l] = y;
  174.                 l++;
  175.             }
  176.             else{
  177.                 l = 0;
  178.                 d[1][l] = x;
  179.                 d[0][l] = y;
  180.                 l++;
  181.             }
  182.             if (a[x - 1][y] == '1'){
  183.                 break;
  184.             }
  185.             else{
  186.                 a[x - 1][y] = '0';
  187.                 x--;
  188.             }
  189.         }
  190.         if (x == xa && y == ya){
  191.             d[0].push_back(0);
  192.             d[1].push_back(0);
  193.             xa = rand() % (h-2) + 1;
  194.             ya = rand() % (g-2) + 1;
  195.             for (int f = 0; f < d[0].size(); f++){
  196.                 if (a[xa][ya] == '1' || a[xa][ya] == '0'){
  197.                     xa = rand() % (h-2) + 1;
  198.                     ya = rand() % (g-2) + 1;
  199.                     f = 0;
  200.                 }
  201.             }
  202.  
  203.         }
  204.         for (int i = 0; i < h; i++){
  205.             for (int j = 0; j < g; j++){
  206.                 for (int t = 0; t < d[0].size(); t++){
  207.                     if (i == d[1][t] && j == d[0][t]){
  208.                         a[i][j] = '1';
  209.                         break;
  210.                     }
  211.                     else if (i != 0 && i != h - 1 && j != 0 && j != g - 1 && a[i][j] != '0' && (i != xa || j != ya)){
  212.                         a[i][j] = ' ';
  213.                     }
  214.                     else if (i == xa && j == ya){
  215.                         a[i][j] = '*';
  216.                         break;
  217.                     }
  218.                 }
  219.             }
  220.         }
  221.         system("cls");
  222.         for (int i = 0; i < h; i++){
  223.             for (int j = 0; j < g; j++){
  224.                 printf("%c", a[i][j]);
  225.             }
  226.             cout << endl;
  227.         }
  228.  
  229.     }
  230.     system("cls");
  231.     cout << "game over";
  232.     return 0;
  233. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement