Advertisement
Guest User

zhopa

a guest
Oct 21st, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.39 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void turnLeft(char *p) { //ПОВОРОТ (РЕГУЛИРУЕТ НАПРАВЛЕНИЕ ВЗГЛЯДА
  5.     if (*p =='u') {
  6.         *p = 'l';
  7.     } else if (*p == 'l') {
  8.         *p = 'd';
  9.     } else if (*p == 'd') {
  10.         *p = 'r';
  11.     } else if (*p == 'r') {
  12.         *p = 'u';
  13.     }
  14. }
  15.  
  16. void turnRight(char *p) { //ПОВОРОТ (РЕГУЛИРУЕТ НАПРАВЛЕНИЕ ВЗГЛЯДА
  17.     if (*p =='u') {
  18.         *p = 'r';
  19.     } else if (*p == 'r') {
  20.         *p = 'd';
  21.     } else if (*p == 'd') {
  22.         *p = 'l';
  23.     } else if (*p == 'l') {
  24.         *p = 'u';
  25.     }
  26. }
  27.  
  28. void go(int *x, int *y, char *d) { //ФУНКЦИЯ ШАГА ПО НАПРАВЛЕНИЮ ВЗГЛЯДА
  29.     if (*d=='u') {
  30.         *y--;
  31.     } else if (*d=='r') {
  32.         *x++;
  33.     } else if (*d=='l') {
  34.         *x--;
  35.     } else if (*d=='d') {
  36.         *y++;
  37.     }
  38. }
  39.  
  40.  
  41. int main() {
  42.     char a[13][13] = {
  43.             '*','*','*','*','*','*','*','*','*','*','*','*','*',
  44.             '*','*','*','*','*','*','*','!','*','*','*','0','*',
  45.             '*','*','*','*','*','*','*','0','*','*','*','0','*',
  46.             '*','*','*','*','*','0','0','0','*','0','*','0','*',
  47.             '*','0','0','0','0','0','*','*','*','0','0','0','*',
  48.             '*','0','*','*','*','0','*','*','*','0','*','*','*',
  49.             '*','0','*','*','*','0','0','0','0','0','*','*','*',        //КАРТА ЛАБИРИНТА!!!
  50.             '*','0','*','0','0','0','*','*','*','*','*','*','*',
  51.             '*','0','*','0','*','*','*','0','0','0','*','*','*',
  52.             '*','*','*','0','*','*','*','0','*','0','*','*','*',
  53.             '*','0','0','0','*','0','0','0','*','0','*','*','*',
  54.             '*','0','*','0','0','0','*','*','*','0','*','*','*',
  55.             '*','*','*','*','*','*','*','*','*','*','*','*','*'};
  56.  
  57.     int x = 9; int *ptrx = &x;
  58.     int y = 11; int *ptry = &y;    //ДАННЫЕ РОБОТА!!!
  59.     char d ='u'; char *ptrd = &d;
  60.  
  61.     a[y][x]='1'; //НАЧАЛЬНОЕ ПОЛОЖЕНИЕ РОБОТА (ТИПА РОБОТ ЭТО ЕДИНИЧКА)
  62.  
  63.     while (a[y][x] != '!') {
  64.             while (d == 'u' && a[y-1][x] == '0' && a[y][x+1] == '*') {        //ТУТ ПРОВЕРЯЕТСЯ УСЛОВИЯ ПРАВОЙ РУКИ В ЗАВИСИМОСТИ ОТ
  65.                 go(&x, &y, &d);                                               //НАПРАВЛЕНИЯ ВЗГЛЯДА РОБОТА, И КАК ТОЛЬКО ВСТРЕЧАЕТСЯ
  66.                 a[x][y]='1';                                                  //ПРЕПЯДСТВИЕ (НАПРИМЕР), ТО В ГЛАВНОМ ЦИКЛЕ СКИПАЮТСЯ
  67.                 a[x][y+1]='0';                                                //ВСЕ ВЛОЖНЫЕ ЦИКЛЫ, А РОБОТ ПОВОРАЧИВАЕТСЯ, А ПРИ
  68.             }                                                                 //СЛЕДУЮЩЕЙ ЭТАРАЦИИ ГЛАВНОГО ЦИКЛА ПОД НОВОЕ НАПРАВЛЕ
  69.             while (d == 'l' && a[y][x-1] == '0' && a[y-1][x] == '*') {        //НИЕ ВЗГЛЯДА ПОДБИРАЕТСЯ НОВЫЙ ВЛОЖНЫЙ ЦИКЛ, И ТАК, ПОКА
  70.                 go(&x, &y, &d);                                               //НЕ НАЙДЕТСЯ ВЫХОД, т.е ГЛАВНОЕ УСЛОВИЕ ГЛАВНОГО ЦИКЛА
  71.                 a[x][y]='1';
  72.                 a[x+1][y]='0';
  73.             }
  74.             while (d == 'r' && a[y][x+1] == '0' && a[y+1][x] == '*') {
  75.                 go(&x, &y, &d);
  76.                 a[x][y]='1';
  77.                 a[x-1][y]='0';
  78.             }
  79.             while (d == 'd' && a[y+1][x] == '0' && a[y][x-1] == '*') {
  80.                 go(&x, &y, &d);
  81.                 a[x][y]='1';
  82.                 a[x][y-1]='0';
  83.             }
  84.             turnRight(&d);
  85.         }
  86.  
  87.     for (int i = 0; i < 13; i++) {
  88.                         for (int j = 0; j < 13; j++) {    //ОБРИСОВКА МАССИВА!!!
  89.                             cout << a[i][j];
  90.                         }
  91.                         cout <<""<<endl;
  92.                     }
  93.  
  94. }//КОНЕЦ ПРОГРАММЫ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement