Advertisement
MeehoweCK

Untitled

Apr 27th, 2023
563
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.29 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. #include <conio.h>
  5.  
  6.  
  7. using namespace std;
  8.  
  9. const short ROZMIAR = 30;
  10. const short W = 10;
  11.  
  12. enum class Pole
  13. {
  14.     pustka, mur, poszukiwacz, wrog, skarb
  15. };
  16.  
  17. Pole tablica[ROZMIAR][ROZMIAR];
  18.  
  19. void start_informacje_programu()
  20. {
  21.     cout << "Witaj, \nw grze ''Poszukiwacz'', nizej sa zasady gry ,jesli jestes gotowy na gre nacisnij 'T'."  << endl;
  22.     cout << endl;
  23.     cout << endl;
  24.     cout << endl;
  25.     cout << "1.Gra odbywa sie na planszy o wymiarach 30x30 \n"<< "2.Na planszy znajduja się: poszukiwacz, skarb, 10 wrogow i mury. \n" <<
  26.          "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).";
  27.     char komenda;
  28.  
  29.     do
  30.     {
  31.         komenda = _getch();
  32.         komenda = toupper(komenda);
  33.     }
  34.     while(static_cast<int>(komenda) != 13);
  35. }
  36.  
  37.  
  38. void wypisz_pole(Pole pole)
  39. {
  40.     switch(pole)
  41.     {
  42.     case Pole::pustka:
  43.         cout << ' ';
  44.         break;
  45.     case Pole::mur:
  46.         cout << '#';
  47.         break;
  48.     case Pole::poszukiwacz:
  49.         cout << 'O';
  50.         break;
  51.     case Pole::wrog:
  52.         cout << '@';
  53.         break;
  54.     case Pole::skarb:
  55.         cout << '!';
  56.     }
  57. }
  58.  
  59. struct Wspolrzedne
  60. {
  61.     short x;
  62.     short y;
  63. };
  64.  
  65. Wspolrzedne poszukiwacz;
  66. Wspolrzedne skarb;
  67. Wspolrzedne wrogowie[W];
  68.  
  69. void wypelnienie_tablic()
  70. {
  71.  
  72.  
  73.     for(short i = 0; i < ROZMIAR; ++i)
  74.     {
  75.         for(short j = 0; j < ROZMIAR; ++j)
  76.         {
  77.             if(i== 0 || i==ROZMIAR-1 || j==0 || j==ROZMIAR-1)
  78.                 tablica[i][j] = Pole::mur;
  79.             else
  80.                 tablica[i][j] = Pole::pustka;
  81.  
  82.         }
  83.  
  84.     }
  85.     while(true)
  86.     {
  87.         poszukiwacz.x = (rand() % 27) + 1;
  88.         poszukiwacz.y = (rand() % 27) + 1;
  89.         if(tablica[poszukiwacz.x][poszukiwacz.y] == Pole::pustka)
  90.         {
  91.             tablica[poszukiwacz.x][poszukiwacz.y] = Pole::poszukiwacz;
  92.             break;
  93.         }
  94.     }
  95.  
  96.     while(true)
  97.     {
  98.         skarb.x = (rand() % 27) + 1;
  99.         skarb.y = (rand() % 27) + 1;
  100.         if(tablica[skarb.x][skarb.y] == Pole::pustka && (skarb.x != poszukiwacz.x || skarb.y != poszukiwacz.y))
  101.         {
  102.             tablica[skarb.x][skarb.y] = Pole::skarb;
  103.             break;
  104.         }
  105.     }
  106.  
  107.     for(short i = 0; i < W; ++i )
  108.     {
  109.         while(true)
  110.         {
  111.             wrogowie[i].x = (rand() % 27) + 1;
  112.             wrogowie[i].y = (rand() % 27) + 1;
  113.             if(tablica[wrogowie[i].x][wrogowie[i].y] == Pole::pustka)
  114.             {
  115.                 tablica[wrogowie[i].x][wrogowie[i].y] = Pole::wrog;
  116.                 break;
  117.             }
  118.         }
  119.  
  120.     }
  121.  
  122. }
  123.  
  124.  
  125. void wypisywanie_planszy_na_ekran()
  126. {
  127.     for(short i = 0; i < ROZMIAR; ++i)
  128.     {
  129.         for(short j = 0; j < ROZMIAR; ++j)
  130.         {
  131.             wypisz_pole(tablica[i][j]);
  132.         }
  133.         cout << endl;
  134.     }
  135.  
  136.  
  137. }
  138.  
  139. void poruszanie_sie_po_planszy()
  140. {
  141.     char klawisz;
  142.     do
  143.     {
  144.         klawisz = _getch();
  145.         klawisz = toupper(klawisz);
  146.         if(klawisz == 'W')
  147.         {
  148.             if(tablica[poszukiwacz.x-1][poszukiwacz.y] != Pole::mur)
  149.             {
  150.                 tablica[poszukiwacz.x][poszukiwacz.y] = Pole::pustka;
  151.                 poszukiwacz.x--;
  152.                 tablica[poszukiwacz.x][poszukiwacz.y] = Pole::poszukiwacz;
  153.             }
  154.             tablica[poszukiwacz.x+1][poszukiwacz.y] = Pole::mur;
  155.         }
  156.         if(klawisz == 'S')
  157.         {
  158.             if(tablica[poszukiwacz.x+1][poszukiwacz.y] != Pole::mur)
  159.             {
  160.                 tablica[poszukiwacz.x][poszukiwacz.y] = Pole::pustka;
  161.                 poszukiwacz.x++;
  162.                 tablica[poszukiwacz.x][poszukiwacz.y] = Pole::poszukiwacz;
  163.             }
  164.             tablica[poszukiwacz.x-1][poszukiwacz.y] = Pole::mur;
  165.         }
  166.         if(klawisz == 'D')
  167.         {
  168.             if(tablica[poszukiwacz.x][poszukiwacz.y+1] != Pole::mur)
  169.             {
  170.                 tablica[poszukiwacz.x][poszukiwacz.y] = Pole::pustka;
  171.                 poszukiwacz.y++;
  172.                 tablica[poszukiwacz.x][poszukiwacz.y] = Pole::poszukiwacz;
  173.             }
  174.             tablica[poszukiwacz.x][poszukiwacz.y-1] = Pole::mur;
  175.         }
  176.         if(klawisz == 'A')
  177.         {
  178.             if(tablica[poszukiwacz.x][poszukiwacz.y-1] != Pole::mur)
  179.             {
  180.                 tablica[poszukiwacz.x][poszukiwacz.y] = Pole::pustka;
  181.                 poszukiwacz.y--;
  182.                 tablica[poszukiwacz.x][poszukiwacz.y] = Pole::poszukiwacz;
  183.             }
  184.             tablica[poszukiwacz.x][poszukiwacz.y+1] = Pole::mur;
  185.         }
  186.  
  187.     }
  188.     while(klawisz != 'W' && klawisz != 'A' && klawisz != 'S'&& klawisz != 'D');
  189.  
  190. }
  191.  
  192.  
  193.  
  194. int main()
  195. {
  196.     srand(time(nullptr));
  197.     wypelnienie_tablic();
  198.     start_informacje_programu();
  199.     system("cls");
  200.     while((tablica[poszukiwacz.x][poszukiwacz.y] != Pole::skarb && tablica[poszukiwacz.x][poszukiwacz.y] != Pole::wrog))
  201.     {
  202.         wypisywanie_planszy_na_ekran();
  203.         poruszanie_sie_po_planszy();
  204.         system("cls");
  205.     }
  206.  
  207.  
  208.     return 0;
  209. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement