Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdlib>
- #include <ctime>
- #include <conio.h>
- using namespace std;
- const short ROZMIAR = 30;
- const short W = 10;
- enum class Pole
- {
- pustka, mur, poszukiwacz, wrog, skarb
- };
- Pole tablica[ROZMIAR][ROZMIAR];
- bool start_informacje_programu()
- {
- cout << "Witaj, \nw grze ''Poszukiwacz'', nizej sa zasady gry ,jesli jestes gotowy na gre nacisnij 'T'." << endl;
- cout << endl;
- cout << endl;
- cout << endl;
- cout << "1.Gra odbywa sie na planszy o wymiarach 30x30 \n"<< "2.Na planszy znajduja się: poszukiwacz, skarb, 10 wrogow i mury. \n" <<
- "3.Poszukiwacz moze poruszac sie o jedno pole w gore, w dol, w lewo lub w prawo. Po ruchu poszukiwacz zostawia za soba mur.\n" <<"4.Gra konczy sie jesli poszukiwacz dojdzie do skarbu (zwyciestwo), jesli wrog wejdzie na pole z poszukiwaczem (porazka) lub jesli poszukiwacz zostanie zablokowany i nie bedzie mogl wykonac prawidlowego ruchu (porazka).";
- char komenda;
- do
- {
- komenda = _getch();
- komenda = toupper(komenda);
- }
- while(komenda != 'T') ;
- if(komenda == 'T')
- return true;
- return false;
- }
- void wypisz_pole(Pole pole)
- {
- switch(pole)
- {
- case Pole::pustka:
- cout << ' ';
- break;
- case Pole::mur:
- cout << '#';
- break;
- case Pole::poszukiwacz:
- cout << 'O';
- break;
- case Pole::wrog:
- cout << '@';
- break;
- case Pole::skarb:
- cout << '!';
- }
- }
- struct Wspolrzedne
- {
- short x;
- short y;
- };
- Wspolrzedne poszukiwacz;
- Wspolrzedne skarb;
- Wspolrzedne wrogowie[W];
- void wypelnienie_tablic()
- {
- for(short i = 0; i < ROZMIAR; ++i)
- {
- for(short j = 0; j < ROZMIAR; ++j)
- {
- if(i== 0 || i==ROZMIAR-1 || j==0 || j==ROZMIAR-1)
- tablica[i][j] = Pole::mur;
- else
- tablica[i][j] = Pole::pustka;
- }
- }
- while(true)
- {
- poszukiwacz.x = (rand() % 27) + 1;
- poszukiwacz.y = (rand() % 27) + 1;
- if(tablica[poszukiwacz.x][poszukiwacz.y] == Pole::pustka)
- {
- tablica[poszukiwacz.x][poszukiwacz.y] = Pole::poszukiwacz;
- break;
- }
- }
- while(true)
- {
- skarb.x = (rand() % 27) + 1;
- skarb.y = (rand() % 27) + 1;
- if(tablica[skarb.x][skarb.y] == Pole::pustka && (skarb.x != poszukiwacz.x || skarb.y != poszukiwacz.y))
- {
- tablica[skarb.x][skarb.y] = Pole::skarb;
- break;
- }
- }
- for(short i = 0; i < W; ++i )
- {
- while(true)
- {
- wrogowie[i].x = (rand() % 27) + 1;
- wrogowie[i].y = (rand() % 27) + 1;
- if(tablica[wrogowie[i].x][wrogowie[i].y] == Pole::pustka)
- {
- tablica[wrogowie[i].x][wrogowie[i].y] = Pole::wrog;
- break;
- }
- }
- }
- }
- void wypisywanie_planszy_na_ekran()
- {
- for(short i = 0; i < ROZMIAR; ++i)
- {
- for(short j = 0; j < ROZMIAR; ++j)
- {
- wypisz_pole(tablica[i][j]);
- }
- cout << endl;
- }
- }
- void poruszanie_sie_po_planszy()
- {
- char klawisz;
- do
- {
- klawisz = _getch();
- klawisz = toupper(klawisz);
- if(klawisz == 'W')
- {
- if(tablica[poszukiwacz.x-1][poszukiwacz.y] != Pole::mur)
- {
- tablica[poszukiwacz.x][poszukiwacz.y] = Pole::pustka;
- poszukiwacz.x--;
- tablica[poszukiwacz.x][poszukiwacz.y] = Pole::poszukiwacz;
- }
- tablica[poszukiwacz.x+1][poszukiwacz.y] = Pole::mur;
- }
- if(klawisz == 'S')
- {
- if(tablica[poszukiwacz.x+1][poszukiwacz.y] != Pole::mur)
- {
- tablica[poszukiwacz.x][poszukiwacz.y] = Pole::pustka;
- poszukiwacz.x++;
- tablica[poszukiwacz.x][poszukiwacz.y] = Pole::poszukiwacz;
- }
- tablica[poszukiwacz.x-1][poszukiwacz.y] = Pole::mur;
- }
- if(klawisz == 'D')
- {
- if(tablica[poszukiwacz.x][poszukiwacz.y+1] != Pole::mur)
- {
- tablica[poszukiwacz.x][poszukiwacz.y] = Pole::pustka;
- poszukiwacz.y++;
- tablica[poszukiwacz.x][poszukiwacz.y] = Pole::poszukiwacz;
- }
- tablica[poszukiwacz.x][poszukiwacz.y-1] = Pole::mur;
- }
- if(klawisz == 'A')
- {
- if(tablica[poszukiwacz.x][poszukiwacz.y-1] != Pole::mur)
- {
- tablica[poszukiwacz.x][poszukiwacz.y] = Pole::pustka;
- poszukiwacz.y--;
- tablica[poszukiwacz.x][poszukiwacz.y] = Pole::poszukiwacz;
- }
- tablica[poszukiwacz.x][poszukiwacz.y+1] = Pole::mur;
- }
- }
- while(klawisz != 'W' && klawisz != 'A' && klawisz != 'S'&& klawisz != 'D');
- }
- int main()
- {
- srand(time(nullptr));
- wypelnienie_tablic();
- start_informacje_programu();
- system("cls");
- while((tablica[poszukiwacz.x][poszukiwacz.y] != Pole::skarb && tablica[poszukiwacz.x][poszukiwacz.y] != Pole::wrog))
- {
- wypisywanie_planszy_na_ekran();
- poruszanie_sie_po_planszy();
- system("cls");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement