Advertisement
MeehoweCK

Untitled

Apr 27th, 2023
572
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.34 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. bool 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(komenda != 'T') ;
  35.     if(komenda == 'T')
  36.         return true;
  37.     return false;
  38.  
  39. }
  40.  
  41.  
  42. void wypisz_pole(Pole pole)
  43. {
  44.     switch(pole)
  45.     {
  46.     case Pole::pustka:
  47.         cout << ' ';
  48.         break;
  49.     case Pole::mur:
  50.         cout << '#';
  51.         break;
  52.     case Pole::poszukiwacz:
  53.         cout << 'O';
  54.         break;
  55.     case Pole::wrog:
  56.         cout << '@';
  57.         break;
  58.     case Pole::skarb:
  59.         cout << '!';
  60.     }
  61. }
  62.  
  63. struct Wspolrzedne
  64. {
  65.     short x;
  66.     short y;
  67. };
  68.  
  69. Wspolrzedne poszukiwacz;
  70. Wspolrzedne skarb;
  71. Wspolrzedne wrogowie[W];
  72.  
  73. void wypelnienie_tablic()
  74. {
  75.  
  76.  
  77.     for(short i = 0; i < ROZMIAR; ++i)
  78.     {
  79.         for(short j = 0; j < ROZMIAR; ++j)
  80.         {
  81.             if(i== 0 || i==ROZMIAR-1 || j==0 || j==ROZMIAR-1)
  82.                 tablica[i][j] = Pole::mur;
  83.             else
  84.                 tablica[i][j] = Pole::pustka;
  85.  
  86.         }
  87.  
  88.     }
  89.     while(true)
  90.     {
  91.         poszukiwacz.x = (rand() % 27) + 1;
  92.         poszukiwacz.y = (rand() % 27) + 1;
  93.         if(tablica[poszukiwacz.x][poszukiwacz.y] == Pole::pustka)
  94.         {
  95.             tablica[poszukiwacz.x][poszukiwacz.y] = Pole::poszukiwacz;
  96.             break;
  97.         }
  98.     }
  99.  
  100.     while(true)
  101.     {
  102.         skarb.x = (rand() % 27) + 1;
  103.         skarb.y = (rand() % 27) + 1;
  104.         if(tablica[skarb.x][skarb.y] == Pole::pustka && (skarb.x != poszukiwacz.x || skarb.y != poszukiwacz.y))
  105.         {
  106.             tablica[skarb.x][skarb.y] = Pole::skarb;
  107.             break;
  108.         }
  109.     }
  110.  
  111.     for(short i = 0; i < W; ++i )
  112.     {
  113.         while(true)
  114.         {
  115.             wrogowie[i].x = (rand() % 27) + 1;
  116.             wrogowie[i].y = (rand() % 27) + 1;
  117.             if(tablica[wrogowie[i].x][wrogowie[i].y] == Pole::pustka)
  118.             {
  119.                 tablica[wrogowie[i].x][wrogowie[i].y] = Pole::wrog;
  120.                 break;
  121.             }
  122.         }
  123.  
  124.     }
  125.  
  126. }
  127.  
  128.  
  129. void wypisywanie_planszy_na_ekran()
  130. {
  131.     for(short i = 0; i < ROZMIAR; ++i)
  132.     {
  133.         for(short j = 0; j < ROZMIAR; ++j)
  134.         {
  135.             wypisz_pole(tablica[i][j]);
  136.         }
  137.         cout << endl;
  138.     }
  139.  
  140.  
  141. }
  142.  
  143. void poruszanie_sie_po_planszy()
  144. {
  145.     char klawisz;
  146.     do
  147.     {
  148.         klawisz = _getch();
  149.         klawisz = toupper(klawisz);
  150.         if(klawisz == 'W')
  151.         {
  152.             if(tablica[poszukiwacz.x-1][poszukiwacz.y] != Pole::mur)
  153.             {
  154.                 tablica[poszukiwacz.x][poszukiwacz.y] = Pole::pustka;
  155.                 poszukiwacz.x--;
  156.                 tablica[poszukiwacz.x][poszukiwacz.y] = Pole::poszukiwacz;
  157.             }
  158.             tablica[poszukiwacz.x+1][poszukiwacz.y] = Pole::mur;
  159.         }
  160.         if(klawisz == 'S')
  161.         {
  162.             if(tablica[poszukiwacz.x+1][poszukiwacz.y] != Pole::mur)
  163.             {
  164.                 tablica[poszukiwacz.x][poszukiwacz.y] = Pole::pustka;
  165.                 poszukiwacz.x++;
  166.                 tablica[poszukiwacz.x][poszukiwacz.y] = Pole::poszukiwacz;
  167.             }
  168.             tablica[poszukiwacz.x-1][poszukiwacz.y] = Pole::mur;
  169.         }
  170.         if(klawisz == 'D')
  171.         {
  172.             if(tablica[poszukiwacz.x][poszukiwacz.y+1] != Pole::mur)
  173.             {
  174.                 tablica[poszukiwacz.x][poszukiwacz.y] = Pole::pustka;
  175.                 poszukiwacz.y++;
  176.                 tablica[poszukiwacz.x][poszukiwacz.y] = Pole::poszukiwacz;
  177.             }
  178.             tablica[poszukiwacz.x][poszukiwacz.y-1] = Pole::mur;
  179.         }
  180.         if(klawisz == 'A')
  181.         {
  182.             if(tablica[poszukiwacz.x][poszukiwacz.y-1] != Pole::mur)
  183.             {
  184.                 tablica[poszukiwacz.x][poszukiwacz.y] = Pole::pustka;
  185.                 poszukiwacz.y--;
  186.                 tablica[poszukiwacz.x][poszukiwacz.y] = Pole::poszukiwacz;
  187.             }
  188.             tablica[poszukiwacz.x][poszukiwacz.y+1] = Pole::mur;
  189.         }
  190.  
  191.     }
  192.     while(klawisz != 'W' && klawisz != 'A' && klawisz != 'S'&& klawisz != 'D');
  193.  
  194. }
  195.  
  196.  
  197.  
  198. int main()
  199. {
  200.     srand(time(nullptr));
  201.     wypelnienie_tablic();
  202.     start_informacje_programu();
  203.     system("cls");
  204.     while((tablica[poszukiwacz.x][poszukiwacz.y] != Pole::skarb && tablica[poszukiwacz.x][poszukiwacz.y] != Pole::wrog))
  205.     {
  206.         wypisywanie_planszy_na_ekran();
  207.         poruszanie_sie_po_planszy();
  208.         system("cls");
  209.     }
  210.  
  211.  
  212.     return 0;
  213. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement