Advertisement
Guest User

Untitled

a guest
Nov 19th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4.  
  5.  
  6.  
  7. class Entity;
  8.  
  9. class FieldObject
  10. {
  11.  
  12. public:
  13. bool isDangerous() const
  14. {
  15. return false;
  16. }
  17. };
  18.  
  19.  
  20. struct Cell
  21. {
  22. FieldObject *field;
  23. Entity *enity;
  24. Cell()
  25. {
  26. field = nullptr;
  27. enity = nullptr;
  28. }
  29. };
  30.  
  31.  
  32.  
  33. struct GameField
  34. {
  35. std::vector<std::vector<Cell>> playingField_;
  36. size_t size_;
  37.  
  38. GameField(size_t size) :size_(size)
  39. {
  40. playingField_.resize(size);
  41. for (size_t i=0;i<size_;i++)
  42. {
  43. playingField_[i].resize(size);
  44. }
  45.  
  46. }
  47. };
  48.  
  49.  
  50.  
  51. class Entity
  52. {
  53. size_t x_;
  54. size_t y_;
  55.  
  56. public:
  57. Entity(size_t x,size_t y):x_(x),y_(y)
  58. {}
  59.  
  60. virtual bool isDangerous() const
  61. {
  62. return false;
  63. }
  64.  
  65. size_t getX()
  66. {
  67. x_;
  68. }
  69.  
  70. size_t getY()
  71. {
  72. y_;
  73. }
  74.  
  75. void move(GameField &gameField, size_t x, size_t y)
  76. {
  77. Entity *ptrEnity=this;
  78. gameField.playingField_[y_][x_].enity=nullptr;
  79. x_ = x;
  80. y_ = y;
  81. gameField.playingField_[y_][x_].enity = ptrEnity;
  82. }
  83. };
  84.  
  85.  
  86. class Hunter:public Entity
  87. {
  88.  
  89.  
  90. public:
  91. Hunter(size_t x, size_t y):Entity(x,y)
  92. {}
  93.  
  94. bool isDangerous() const
  95. {
  96. return true;
  97. }
  98.  
  99. size_t getX()
  100. {
  101. return Entity::getX();
  102. }
  103.  
  104. size_t getY()
  105. {
  106. return Entity::getY();
  107. }
  108.  
  109. void move(GameField &gameField, size_t x, size_t y)
  110. {
  111. Entity::move(gameField, x, y);
  112. }
  113.  
  114.  
  115. };
  116.  
  117.  
  118. class Beast :public Entity
  119. {
  120.  
  121. public:
  122. Beast(size_t x, size_t y) :Entity(x, y)
  123. {}
  124.  
  125. bool isDangerous() const
  126. {
  127. return true;
  128. }
  129.  
  130. size_t getX()
  131. {
  132. return Entity::getX();
  133. }
  134.  
  135. size_t getY()
  136. {
  137. return Entity::getY();
  138. }
  139.  
  140. void move(GameField &gameField, size_t x, size_t y)
  141. {
  142. Entity::move(gameField, x, y);
  143. }
  144. };
  145.  
  146.  
  147.  
  148. int main()
  149. {
  150. size_t gameFieldSize = 5;
  151. GameField gameField(gameFieldSize);
  152.  
  153. for (size_t i = 0; i < gameFieldSize; i++)
  154. {
  155. for (size_t j = 0; j < gameFieldSize; j++)
  156. {
  157. if (gameField.playingField_[i][j].enity != nullptr)
  158. {
  159. std::cout << 1 << " ";
  160. }
  161. else
  162. {
  163. std::cout << 0 << " ";
  164. }
  165. }
  166. std::cout << "\n";
  167. }
  168. std::cout << "\n";
  169. Beast beast(1, 3);
  170. beast.move(gameField, 1, 3);
  171.  
  172.  
  173.  
  174. for (size_t i = 0; i < gameFieldSize; i++)
  175. {
  176. for (size_t j = 0; j < gameFieldSize; j++)
  177. {
  178. if (gameField.playingField_[i][j].enity != nullptr)
  179. {
  180. std::cout << 1 << " ";
  181. }
  182. else
  183. {
  184. std::cout << 0 << " ";
  185. }
  186. }
  187. std::cout << "\n";
  188. }
  189.  
  190.  
  191. system("pause");
  192. return 0;
  193. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement