Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- const int N = 10;
- void wyswietl_plansze(bool tablica[][N], int x, int y)
- {
- for(int i = 0; i < N; ++i)
- {
- for(int j = 0; j < N; ++j)
- {
- if(i == x && j == y)
- {
- cout << 'X';
- continue;
- }
- if(tablica[i][j])
- cout << '#';
- else
- cout << ' ';
- }
- cout << endl;
- }
- cout << endl;
- }
- bool idz_w_dol(bool tablica[][N], int& x, int& y, int& przeszkody)
- {
- bool flaga = false;
- while((x+1) < N && !tablica[x+1][y])
- {
- tablica[x][y] = true;
- ++x;
- ++przeszkody;
- flaga = true;
- }
- return flaga;
- }
- bool idz_w_lewo(bool tablica[][N], int& x, int& y, int& przeszkody)
- {
- bool flaga = false;
- while(y > 0 && !tablica[x][y-1])
- {
- tablica[x][y] = true;
- --y;
- ++przeszkody;
- flaga = true;
- }
- return flaga;
- }
- bool idz_w_gore(bool tablica[][N], int& x, int& y, int& przeszkody)
- {
- bool flaga = false;
- while(x > 0 && !tablica[x-1][y])
- {
- tablica[x][y] = true;
- --x;
- ++przeszkody;
- flaga = true;
- }
- return flaga;
- }
- bool idz_w_prawo(bool tablica[][N], int& x, int& y, int& przeszkody)
- {
- bool flaga = false;
- while((y + 1) < N && !tablica[x][y+1])
- {
- tablica[x][y] = true;
- ++y;
- ++przeszkody;
- flaga = true;
- }
- return flaga;
- }
- int main()
- {
- bool tablica[N][N];
- for(int i = 0; i < N; ++i)
- for(int j = 0; j < N; ++j)
- tablica[i][j] = false;
- // wstawianie przeszkód:
- int ile_przeszkod;
- cout << "Podaj liczbe przeszkod na planszy: ";
- cin >> ile_przeszkod;
- int x, y;
- for(int i = 0; i < ile_przeszkod; ++i)
- {
- cout << "Podaj wspolrzedne (x,y) przeszkody nr " << i + 1 << ": ";
- cin >> x >> y;
- while(tablica[x][y] || x < 0 || y < 0 || x >= N || y >= N)
- {
- cout << "Podane pole jest juz zajete lub wspolrzedne sa nieprawidlowe. Podaj nowe wspolrzedne: ";
- cin >> x >> y;
- }
- tablica[x][y] = true;
- }
- int pozycja_x;
- int pozycja_y;
- cout << "Podaj poczatkowa pozycje budowniczego (x,y): ";
- cin >> pozycja_x >> pozycja_y;
- while(tablica[pozycja_x][pozycja_y] || pozycja_x < 0 || pozycja_y <0 || pozycja_x >= N || pozycja_y >= N)
- {
- cout << "Podana pozycja jest juz zajeta lub wspolrzedne sa nieprawidlowe. Podaj nowe wspolrzedne: ";
- cin >> pozycja_x >> pozycja_y;
- }
- int postawione_przeszkody = 0;
- // poruszanie się budowniczego
- wyswietl_plansze(tablica, pozycja_x, pozycja_y);
- while(true)
- {
- if(!idz_w_prawo(tablica, pozycja_x, pozycja_y, postawione_przeszkody))
- break;
- wyswietl_plansze(tablica, pozycja_x, pozycja_y);
- if(!idz_w_gore(tablica, pozycja_x, pozycja_y, postawione_przeszkody))
- break;
- wyswietl_plansze(tablica, pozycja_x, pozycja_y);
- if(!idz_w_lewo(tablica, pozycja_x, pozycja_y, postawione_przeszkody))
- break;
- wyswietl_plansze(tablica, pozycja_x, pozycja_y);
- if(!idz_w_dol(tablica, pozycja_x, pozycja_y, postawione_przeszkody))
- break;
- wyswietl_plansze(tablica, pozycja_x, pozycja_y);
- }
- cout << "Ilosc postawionych przeszkod: " << postawione_przeszkody << endl;
- cout << "Aktualna pozycja budowniczego: [" << pozycja_x << ',' << pozycja_y << "]\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment