daily pastebin goal
22%
SHARE
TWEET

Untitled

a guest Apr 21st, 2017 48 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <conio.h>
  2. #include <windows.h>
  3. #include <time.h>
  4. #include <fstream>
  5. #include <string>
  6. #include <iostream>
  7. #include <vector>
  8. #include <cstdlib>
  9. #include <ctime>
  10. #include <unistd.h>
  11.  
  12. using namespace std;
  13.  
  14. class Pole
  15. {
  16. public:
  17.  
  18.   Pole(int _value, bool _isOdkryte, bool _isMina, bool _isFlaga);
  19.   ~Pole() { }
  20.  
  21.   bool getOdkryte()  const { return odkryte;  }
  22.   bool getMina()  const { return mina;  }
  23.   bool getFlaga() const { return flaga; }
  24.  
  25.   void setIsOdkryte(bool _isOdkryte)   { odkryte = _isOdkryte;   }
  26.   void setIsMina(bool _isMina)   { mina = _isMina;   }
  27.   void setIsFlaga(bool _isFlaga) { flaga = _isFlaga; }
  28.  
  29.   int info();
  30.   int  value; //wartosc pola
  31.   bool odkryte; //jest odkryte ?
  32.   bool mina; //posiadamine?
  33.   bool flaga; //jest oznaczone flaga ?
  34.   int  getValue()    const { return value; }
  35. void setValue(int _value)        { value = _value; }
  36.  
  37. };
  38.  
  39.  Pole::Pole(int _value, bool _isOdkryte, bool _isMina, bool _isFlaga)
  40.  {
  41.     _value=0;
  42.     _isOdkryte=false;
  43.     _isMina=false;
  44.     _isFlaga=false;
  45.  }
  46.  
  47. class Plansza
  48. {
  49.     public:
  50.     Plansza(size_t M, size_t N);
  51.     ~Plansza() { }
  52.  
  53.  void setPole(size_t M, size_t N, Pole& _p) { board[M][N] = _p; };
  54.    Pole& getPole(size_t M, size_t N) { return board[M][N]; }
  55.    void debug_display(); // wyswietla plansze
  56.   bool hasMine(int x, int y); //czy ma miny
  57.   int countMines(int x, int y); //liczenie w okolicy
  58.   void deployMines(size_t M, size_t N); //ustawia miny
  59. void display();
  60. void reveal(int x, int y);
  61.     private:
  62.     vector<vector<Pole> > board;
  63.  
  64. };
  65.  
  66.  
  67.  
  68. /*int Pole::info()
  69. {
  70.     Pole p;
  71.     int a,b,c;
  72.         cout<<"[";
  73.     if(p.odkryte=false){a=1; cout<<a;}
  74.     else {a=0; cout<<a;}
  75.     if(p.mina=false){b=1; cout<<b;}
  76.     else {b=0; cout<<b;}
  77.     if(p.flaga=false){c=1; cout<<c;}
  78.     else {c=0; cout<<c;}
  79.     cout<<"]";
  80. }*/
  81. /*void Plansza::debug_display()
  82. {
  83.     int i,j=0;
  84.     Pole tab[i][j];
  85.     while(j<10){
  86.     for(i=0;i<10;i++){tab[i][j].info();}
  87.     cout<<endl;
  88.     j++;}
  89.  }
  90. */
  91. Plansza::Plansza(size_t M, size_t N)
  92. {
  93.     M=10;
  94.     N=10;
  95.   //tworzenie tablicy pól o wymiarach M, N
  96.   board.resize(N); //ustaw N kolumn
  97.   for(size_t i = 0; i < N; i++) //dla ka?dej kolumny...
  98.   {
  99.     board[i].resize(M);  //ustaw M wierszy
  100.  }
  101.  
  102.    deployMines(M, N);
  103. }
  104.  
  105. void Plansza::deployMines(size_t M, size_t N)
  106. { int losownik;
  107.     losownik= time(NULL);
  108.     srand(losownik);
  109.   //25 bomb
  110.   for(size_t k = 0; k < 25; k++)
  111.   {
  112.     size_t M = rand() % M; //wylosuj liczbe dla wsporzdnej X
  113.     size_t N = rand() % N; //wylosuj liczbe dla wspolrzednej Y
  114.  
  115.     if(board[M][N].getMina() == false) //jeoli wylosowane pole NIE jest uzbrojone
  116.     {
  117.       board[M][N].setIsMina(true); //ustaw na uzbrojone
  118.  
  119. for(size_t i = (M > 0 ? M-1 : M); i < (M < 9 ? M+2 : M+1); i++)
  120. {
  121.   for(size_t j = (N > 0 ? N-1 : N); j < (N < 9 ? N+2 : N+1); j++)
  122.   {
  123.     board[i][j].setValue(board[i][j].getValue() + 1);
  124.   }
  125.  
  126. }
  127.     }
  128.   }
  129. }
  130.  
  131. bool Plansza::hasMine(int i, int j)
  132. {
  133.     if (board[i][j].mina=true)
  134.     {
  135.         return true;
  136.     }
  137.     else {return false;}
  138. }
  139.  
  140. int Plansza::countMines(int x, int y)
  141. {
  142.     x=0;
  143.     int j;
  144.     int i;
  145.     for(int u=0; u<3; u++)
  146.     {
  147.         if(board[i-1][j-1].mina=true){x++;}
  148.         i++;
  149.     }
  150.     if(board[i-1][j].mina=true){x++;}
  151.     if(board[i+1][j].mina=true){x++;}
  152.         for(int z=0; z<3; z++)
  153.     {
  154.         if(board[i-1][j+1].mina=true){x++;}
  155.         i++;
  156.     }
  157.     return x;
  158. }
  159. void Plansza::display()
  160. {
  161.     int i=0;
  162.     int j=0;
  163.     for(j; j<10; j++)
  164.     {
  165.             for(i; i<10; i++)
  166.                 {
  167.             if(board[i][j].odkryte=false){cout<<"[]";}
  168.             else if(board[i][j].flaga=true){cout<<"[?]";}
  169.             else if(board[i][j].mina=true){cout<<"[x]";}
  170.             else
  171.                 {cout<<"[";
  172.                 countMines(i, j);
  173.                 cout<<"]";}
  174.                 }
  175.     }
  176. }
  177.  
  178. void Plansza::reveal(int x, int y)
  179. {
  180. cout <<"wprowadz wspolrzedna x: ";
  181. cin >> x;
  182. cout <<"/n wprowadz wspolrzedna y: ";
  183. cin >> y;
  184. if(board[x][y].mina=true){cout<<"Koniec gry";}
  185. else {board[x][y].setIsOdkryte(true);}
  186. }
  187.  
  188. int main()
  189. {
  190.     int z; int f;
  191.     Plansza p(z,f);
  192.     p.display();
  193.     p.reveal(z, f);
  194.     return 0;
  195. }
RAW Paste Data
Top