Advertisement
Guest User

Untitled

a guest
Apr 21st, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.19 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement