MeehoweCK

Untitled

Nov 18th, 2020
537
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.60 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. const int N = 10;
  6.  
  7. void wyswietl_plansze(bool tablica[][N], int x, int y)
  8. {
  9.     for(int i = 0; i < N; ++i)
  10.     {
  11.         for(int j = 0; j < N; ++j)
  12.         {
  13.             if(i == x && j == y)
  14.             {
  15.                 cout << 'X';
  16.                 continue;
  17.             }
  18.             if(tablica[i][j])
  19.                 cout << '#';
  20.             else
  21.                 cout << ' ';
  22.         }
  23.  
  24.         cout << endl;
  25.     }
  26.     cout << endl;
  27. }
  28.  
  29. bool idz_w_dol(bool tablica[][N], int& x, int& y, int& przeszkody)
  30. {
  31.     bool flaga = false;
  32.     while((x+1) < N && !tablica[x+1][y])
  33.     {
  34.         tablica[x][y] = true;
  35.         ++x;
  36.         ++przeszkody;
  37.         flaga = true;
  38.     }
  39.     return flaga;
  40. }
  41.  
  42. bool idz_w_lewo(bool tablica[][N], int& x, int& y, int& przeszkody)
  43. {
  44.     bool flaga = false;
  45.     while(y > 0 && !tablica[x][y-1])
  46.     {
  47.         tablica[x][y] = true;
  48.         --y;
  49.         ++przeszkody;
  50.         flaga = true;
  51.     }
  52.     return flaga;
  53. }
  54.  
  55. bool idz_w_gore(bool tablica[][N], int& x, int& y, int& przeszkody)
  56. {
  57.     bool flaga = false;
  58.     while(x > 0 && !tablica[x-1][y])
  59.     {
  60.         tablica[x][y] = true;
  61.         --x;
  62.         ++przeszkody;
  63.         flaga = true;
  64.     }
  65.     return flaga;
  66. }
  67.  
  68. bool idz_w_prawo(bool tablica[][N], int& x, int& y, int& przeszkody)
  69. {
  70.     bool flaga = false;
  71.     while((y + 1) < N && !tablica[x][y+1])
  72.     {
  73.         tablica[x][y] = true;
  74.         ++y;
  75.         ++przeszkody;
  76.         flaga = true;
  77.     }
  78.     return flaga;
  79. }
  80.  
  81. int main()
  82. {
  83.     bool tablica[N][N];
  84.     for(int i = 0; i < N; ++i)
  85.         for(int j = 0; j < N; ++j)
  86.             tablica[i][j] = false;
  87.  
  88.     // wstawianie przeszkód:
  89.     int ile_przeszkod;
  90.     cout << "Podaj liczbe przeszkod na planszy: ";
  91.     cin >> ile_przeszkod;
  92.  
  93.     int x, y;
  94.     for(int i = 0; i < ile_przeszkod; ++i)
  95.     {
  96.         cout << "Podaj wspolrzedne (x,y) przeszkody nr " << i + 1 << ": ";
  97.         cin >> x >> y;
  98.         while(tablica[x][y] || x < 0 || y < 0 || x >= N || y >= N)
  99.         {
  100.             cout << "Podane pole jest juz zajete lub wspolrzedne sa nieprawidlowe. Podaj nowe wspolrzedne: ";
  101.             cin >> x >> y;
  102.         }
  103.         tablica[x][y] = true;
  104.     }
  105.  
  106.     int pozycja_x;
  107.     int pozycja_y;
  108.     cout << "Podaj poczatkowa pozycje budowniczego (x,y): ";
  109.     cin >> pozycja_x >> pozycja_y;
  110.     while(tablica[pozycja_x][pozycja_y] || pozycja_x < 0 || pozycja_y <0 || pozycja_x >= N || pozycja_y >= N)
  111.     {
  112.         cout << "Podana pozycja jest juz zajeta lub wspolrzedne sa nieprawidlowe. Podaj nowe wspolrzedne: ";
  113.         cin >> pozycja_x >> pozycja_y;
  114.     }
  115.  
  116.     int postawione_przeszkody = 0;
  117.     // poruszanie się budowniczego
  118.     wyswietl_plansze(tablica, pozycja_x, pozycja_y);
  119.  
  120.     while(true)
  121.     {
  122.         if(!idz_w_prawo(tablica, pozycja_x, pozycja_y, postawione_przeszkody))
  123.             break;
  124.         wyswietl_plansze(tablica, pozycja_x, pozycja_y);
  125.         if(!idz_w_gore(tablica, pozycja_x, pozycja_y, postawione_przeszkody))
  126.             break;
  127.         wyswietl_plansze(tablica, pozycja_x, pozycja_y);
  128.         if(!idz_w_lewo(tablica, pozycja_x, pozycja_y, postawione_przeszkody))
  129.             break;
  130.         wyswietl_plansze(tablica, pozycja_x, pozycja_y);
  131.         if(!idz_w_dol(tablica, pozycja_x, pozycja_y, postawione_przeszkody))
  132.             break;
  133.         wyswietl_plansze(tablica, pozycja_x, pozycja_y);
  134.     }
  135.  
  136.     cout << "Ilosc postawionych przeszkod: " << postawione_przeszkody << endl;
  137.     cout << "Aktualna pozycja budowniczego: [" << pozycja_x << ',' << pozycja_y << "]\n";
  138.  
  139.     return 0;
  140. }
Advertisement
Add Comment
Please, Sign In to add comment