Advertisement
Guest User

Untitled

a guest
Jan 19th, 2020
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.21 KB | None | 0 0
  1. #include <Windows.h>
  2. #include <iostream>
  3. #include <string>
  4. #include <cmath>
  5. #include <vector>
  6. #include <ctime>
  7. #include <unordered_map>
  8. #include <algorithm>
  9.  
  10. using namespace std;
  11.  
  12. class Point {
  13. int _x, _y;
  14.  
  15. public:
  16. Point() {
  17. _x = 0;
  18. _y = 0;
  19. }
  20.  
  21. Point(int x, int y) {
  22. _x = x;
  23. _y = y;
  24. }
  25.  
  26. int getX() { return _x; }
  27. int getY() { return _y; }
  28.  
  29. };
  30.  
  31. // Отсюда вы можете брать цвета и здесь же создавать свои
  32. class ConsoleColor {
  33. public:
  34. static COLORREF red() { return RGB(255, 0, 0); }
  35. static COLORREF blue() { return RGB(0, 0, 255); }
  36. static COLORREF gray() { return RGB(200, 200, 200); }
  37. static COLORREF white() { return RGB(255, 255, 255); }
  38. static COLORREF green() { return RGB(0, 255, 0); }
  39. static COLORREF black() { return RGB(0, 0, 0); }
  40. static COLORREF brown() { return RGB(80, 20, 25); }
  41. static COLORREF yellow() { return RGB(255, 255, 0); }
  42. };
  43.  
  44. // Это класс, который нужен для рисования. В нем все готово. Ничего менять не нужно. Нужно только пользоваться
  45. class ConsoleDrawer {
  46. HANDLE _conHandle;
  47. HWND _hwnd;
  48. HDC _hdc;
  49. PAINTSTRUCT _ps;
  50. unordered_map<COLORREF, HGDIOBJ> _bm;
  51. unordered_map<COLORREF, HGDIOBJ> _pm;
  52. HGDIOBJ _curentBrush;
  53. HGDIOBJ _curentPen;
  54.  
  55. int _width;
  56. int _height;
  57. bool _isWork = true;
  58.  
  59. void selectBrush(COLORREF color, bool filled = false) {
  60. if (!filled) {
  61. SelectObject(_hdc, CreateSolidBrush(NULL_BRUSH));
  62. return;
  63. }
  64. if (_bm.find(color) == _bm.end())
  65. _bm.insert({ color, CreateSolidBrush(color) });
  66.  
  67. if (_curentBrush != _bm[color]) {
  68. _curentBrush = _bm[color];
  69. SelectObject(_hdc, _curentBrush);
  70. }
  71. }
  72.  
  73. void selectPen(COLORREF color) {
  74. if (_pm.find(color) == _pm.end())
  75. _pm.insert({ color, CreatePen(PS_SOLID, 1, color) });
  76. if (_curentPen != _pm[color]) {
  77. _curentPen = _pm[color];
  78. SelectObject(_hdc, _curentPen);
  79. }
  80. }
  81.  
  82. public:
  83. ConsoleDrawer() {
  84. setlocale(LC_ALL, "RUS");
  85. _conHandle = GetStdHandle(STD_INPUT_HANDLE);
  86. int t = sizeof(HGDIOBJ);
  87. _hwnd = GetConsoleWindow();
  88. RECT rc;
  89. GetClientRect(_hwnd, &rc);
  90. _width = rc.right;
  91. _height = rc.bottom;
  92. _hdc = GetDC(_hwnd);
  93. }
  94.  
  95. void clearScreen() {
  96. system("cls");
  97. }
  98.  
  99. int getWidth() { return _width; }
  100. int getHeight() { return _height; }
  101.  
  102. HANDLE get_conHandle() {
  103. return _conHandle;
  104. }
  105.  
  106. bool isWork() {
  107.  
  108. return _isWork;
  109. }
  110.  
  111. void stop() {
  112. _isWork = false;
  113. }
  114.  
  115. void start() {
  116. _isWork = true;
  117. }
  118.  
  119. void drawBackground(COLORREF color = ConsoleColor::gray()) {
  120. RECT rc;
  121. GetClientRect(_hwnd, &rc);
  122. drawRect(Point(), Point(_width, _height), color, true);
  123. }
  124.  
  125. void drawPoint(Point p, COLORREF color) {
  126. SetPixel(_hdc, p.getX(), p.getY(), color);
  127. }
  128.  
  129. void drawLine(Point p1, Point p2, COLORREF color) {
  130. selectPen(color);
  131. //SelectObject(_hdc, CreatePen(PS_SOLID, 1, color));
  132. //SetDCPenColor(_hdc, color);
  133. MoveToEx(_hdc, p1.getX(), p1.getY(), NULL);
  134. LineTo(_hdc, p2.getX(), p2.getY());
  135. }
  136.  
  137. // Рисует круг или окружность по центру и радиусу
  138. // filled - нужно ли закрашивать внутренность
  139. void drawCircle(Point c, int radius, COLORREF color, bool filled = false) {
  140. selectPen(color);
  141. selectBrush(color, filled);
  142. //SetDCBrushColor(_hdc, color);
  143. Ellipse(_hdc, c.getX() - radius, c.getY() - radius, c.getX() + radius, c.getY() + radius);
  144.  
  145. }
  146.  
  147. // Рисует прямоугольник по двум точкам
  148. // p1 - нижний левый угол
  149. // p2 - верхний правый угол
  150. void drawRect(Point p1, Point p2, COLORREF color, bool filled = false) {
  151. selectPen(color);
  152. selectBrush(color, filled);
  153. Rectangle(_hdc, p1.getX(), p1.getY(), p2.getX(), p2.getY());
  154. }
  155.  
  156. // Рисует треугольник по трем точкам
  157. void drawTriangle(Point p1, Point p2, Point p3, COLORREF color, bool filled = false) {
  158. selectPen(color);
  159. selectBrush(color, filled);
  160. POINT apt[3];
  161. apt[0].x = p1.getX(); apt[0].y = p1.getY();
  162. apt[1].x = p2.getX(); apt[1].y = p2.getY();
  163. apt[2].x = p3.getX(); apt[2].y = p3.getY();
  164. Polygon(_hdc, apt, 3);
  165. }
  166. };
  167.  
  168. // Это самый базовый класс, от которого наследуются все объекты, которые появляются на поле
  169. class ParkObject {
  170. protected:
  171. int _cellX, _cellY, _cellSize;
  172.  
  173. public:
  174. ParkObject(int cellX, int cellY, int cellSize) {
  175. _cellX = cellX;
  176. _cellY = cellY;
  177. _cellSize = cellSize;
  178. }
  179.  
  180. bool isInside(int cellX, int cellY) {
  181. return (_cellX == cellX) && (_cellY == cellY);
  182. }
  183.  
  184. int getCellX() {
  185. return _cellX;
  186. }
  187.  
  188. int getCellY() {
  189. return _cellY;
  190. }
  191.  
  192. int getX() {
  193. return _cellX * _cellSize;
  194. }
  195.  
  196. int getY() {
  197. return _cellY * _cellSize;
  198. }
  199.  
  200. };
  201.  
  202. class Obsracle : public ParkObject {
  203. public:
  204. Obsracle(int cellX, int cellY, int cellSize) : ParkObject(cellX, cellY, cellSize) {}
  205. };
  206.  
  207. class Entity : public ParkObject {
  208. public:
  209. Entity(int cellX, int cellY, int cellSize) : ParkObject(cellX, cellY, cellSize) {}
  210. };
  211.  
  212.  
  213. class Lake : public Obsracle {
  214.  
  215. public:
  216. Lake(int cellX, int cellY, int cellSize) : Obsracle(cellX, cellY, cellSize) { }
  217.  
  218. void draw(ConsoleDrawer& cd) {
  219. //Переходим от ячеек к координатам пикселей
  220. int x = getX();
  221. int y = getY();
  222.  
  223. cd.drawRect(Point(x, y), Point(x + _cellSize, y + _cellSize), ConsoleColor::blue(), true);
  224. }
  225. };
  226.  
  227. class SnowMan : public Obsracle {
  228.  
  229. public:
  230. SnowMan(int cellX, int cellY, int cellSize) : Obsracle(cellX, cellY, cellSize) { }
  231.  
  232. void draw(ConsoleDrawer& cd) {
  233. //Переходим от ячеек к координатам пикселей
  234. int x = getX();
  235. int y = getY();
  236.  
  237. double d = _cellSize / 100.0;
  238. cd.drawCircle(Point(x + _cellSize / 2, y + _cellSize - 20 * d), 20 * d, ConsoleColor::white(), true);
  239. cd.drawCircle(Point(x + _cellSize / 2, y + _cellSize - 55 * d), 15 * d, ConsoleColor::white(), true);
  240. cd.drawCircle(Point(x + _cellSize / 2, y + _cellSize - 80 * d), 10 * d, ConsoleColor::white(), true);
  241. cd.drawRect(Point(x + _cellSize / 2 - 5 * d, y + 10 * d), Point(x + _cellSize / 2 + 5 * d, y + d), ConsoleColor::brown(), true);
  242. }
  243. };
  244.  
  245. class Tree : public Entity {
  246.  
  247. public:
  248. Tree(int cellX, int cellY, int cellSize) : Entity(cellX, cellY, cellSize) {}
  249.  
  250. void draw(ConsoleDrawer& cd) {
  251. //Переходим от ячеек к координатам пикселей
  252. int x = getX();
  253. int y = getY();
  254.  
  255. int d = _cellSize / 10;
  256. cd.drawRect(Point(x + 4 * d, y + _cellSize), Point(x + 6 * d, y + _cellSize - 2 * d), ConsoleColor::brown(), true);
  257. cd.drawTriangle(Point(x + 2 * d, y + _cellSize - 2 * d), Point(x + _cellSize / 2, y + d), Point(x + _cellSize - 2 * d, y + _cellSize - 2 * d), ConsoleColor::green(), true);
  258. }
  259. };
  260.  
  261. class Present : public Entity {
  262.  
  263. public:
  264. Present(int cellX, int cellY, int cellSize) : Entity(cellX, cellY, cellSize) {}
  265.  
  266. void draw(ConsoleDrawer& cd) {
  267. //Переходим от ячеек к координатам пикселей
  268. int x = getX();
  269. int y = getY();
  270.  
  271. double d = _cellSize / 100.0;
  272. cd.drawRect(Point(x + 20 * d, y + _cellSize), Point(x + 80 * d, y + 40 * d), ConsoleColor::red(), true);
  273. cd.drawRect(Point(x + 40 * d, y + _cellSize), Point(x + 60 * d, y + 40 * d), ConsoleColor::yellow(), true);
  274. cd.drawCircle(Point(x + 35 * d, y + 20 * d), 10 * d, ConsoleColor::yellow(), true);
  275. cd.drawCircle(Point(x + 65 * d, y + 20 * d), 10 * d, ConsoleColor::yellow(), true);
  276. cd.drawTriangle(Point(x + 50 * d, y + 40 * d), Point(x + 35 * d, y + 30 * d), Point(x + 45 * d, y + 20 * d), ConsoleColor::yellow(), true);
  277. cd.drawTriangle(Point(x + 50 * d, y + 40 * d), Point(x + 65 * d, y + 30 * d), Point(x + 55 * d, y + 20 * d), ConsoleColor::yellow(), true);
  278. }
  279. };
  280.  
  281. class HappyDino : public ParkObject {
  282.  
  283.  
  284. public:
  285. int stepsWithoutTree = 0;
  286. int stepsCount = 0;
  287. int treeCount = 0;
  288. int presentsCount = 0;
  289. HappyDino(int cellX, int cellY, int cellSize) : ParkObject(cellX, cellY, cellSize) {}
  290.  
  291. void draw(ConsoleDrawer& cd) {
  292.  
  293. //Переходим от ячеек к координатам пикселей
  294. int x = getX();
  295. int y = getY();
  296. COLORREF color = ConsoleColor::green();
  297.  
  298. double d = _cellSize / 125.0;
  299. cd.drawRect(Point(x + d, y + 63 * d), Point(x + 24 * d, y + 53 * d), color, true);
  300. cd.drawRect(Point(x + 75 * d, y + 63 * d), Point(x + 98 * d, y + 53 * d), color, true);
  301. cd.drawRect(Point(x + 27 * d, y + 93 * d), Point(x + 72 * d, y + 35 * d), color, true);//body
  302. cd.drawRect(Point(x + 27 * d, y + 124 * d), Point(x + 42 * d, y + 94 * d), color, true);
  303. cd.drawRect(Point(x + 57 * d, y + 124 * d), Point(x + 72 * d, y + 94 * d), color, true);
  304. cd.drawRect(Point(x + 27 * d, y + 32 * d), Point(x + 88 * d, y + 2 * d), color, true);//head
  305. cd.drawCircle(Point(x + 42 * d, y + 12 * d), 8 * d, ConsoleColor::gray(), true);
  306. cd.drawTriangle(Point(x + 27 * d, y), Point(x + 49 * d, y - 45 * d), Point(x + 72 * d, y), ConsoleColor::red(), true);
  307. cd.drawCircle(Point(x + 49 * d, y - 50 * d), 10 * d, ConsoleColor::white(), true);
  308.  
  309. }
  310.  
  311. void step(int direction) {
  312. stepsWithoutTree++;
  313. stepsCount++;
  314.  
  315. if (direction == 0)
  316. _cellX -= 1;
  317. if (direction == 1)
  318. _cellY -= 1;
  319. if (direction == 2)
  320. _cellX += 1;
  321. if (direction == 3)
  322. _cellY += 1;
  323.  
  324. if (stepsWithoutTree >= 6) {
  325. stepsCount += 15;
  326. stepsWithoutTree = 0;
  327. }
  328. }
  329. };
  330.  
  331. class DinoPark {
  332. int _cellsXCount;
  333. int _cellsYCount;
  334. int _cellSize;
  335. vector<SnowMan> _snowmen;
  336. vector<Tree> _trees;
  337. vector<Lake> _lakes;
  338. vector<HappyDino> _hDino;
  339. vector<Present> _presents;
  340.  
  341. public:
  342. int DinoScore() {
  343. return -_hDino[0].stepsCount + _hDino[0].treeCount * 5 + 15 * _hDino[0].presentsCount;
  344. }
  345. DinoPark(int width, int height, int cellSize) {
  346. _cellsXCount = width;
  347. _cellsYCount = height;
  348. _cellSize = cellSize;
  349. }
  350.  
  351. // Этот метод проверяет, что находится в клетке:
  352. // -3 - подарок
  353. // -2 - озеро
  354. // -1 - снеговик
  355. // 0 - пусто
  356. // 1 - дерево
  357. // 2 - динозавр
  358. int find(int x, int y) {
  359. for (int i = 0; i < _presents.size(); i++) {
  360. if (_presents[i].isInside(x, y))
  361. return -3;
  362. }
  363. for (int i = 0; i < _lakes.size(); i++) {
  364. if (_lakes[i].isInside(x, y))
  365. return -2;
  366. }
  367. for (int i = 0; i < _snowmen.size(); i++) {
  368. if (_snowmen[i].isInside(x, y))
  369. return -1;
  370. }
  371. for (int i = 0; i < _trees.size(); i++) {
  372. if (_trees[i].isInside(x, y))
  373. return 1;
  374. }
  375. for (int i = 0; i < _hDino.size(); i++) {
  376. if (_hDino[i].isInside(x, y))
  377. return 2;
  378. }
  379. return 0;
  380. }
  381.  
  382. // Метод для отрисовки всего поля
  383. void draw(ConsoleDrawer& cd) {
  384.  
  385. // Рисуем сетку
  386. for (int i = 0; i <= _cellsXCount; i++) {
  387. int x = i * _cellSize;
  388. int y = _cellsYCount * _cellSize;
  389. cd.drawLine(Point(x, 0), Point(x, y), ConsoleColor::black());
  390. }
  391. for (int i = 0; i <= _cellsYCount; i++) {
  392. int x = _cellsXCount * _cellSize;
  393. int y = i * _cellSize;
  394. cd.drawLine(Point(0, y), Point(x, y), ConsoleColor::black());
  395. }
  396.  
  397. // Рисуем подарки
  398. for (int i = 0; i < _presents.size(); i++) {
  399. _presents[i].draw(cd);
  400. }
  401.  
  402. // Рисуем озера
  403. for (int i = 0; i < _lakes.size(); i++) {
  404. _lakes[i].draw(cd);
  405. }
  406.  
  407. // Рисуем снеговиков
  408. for (int i = 0; i < _snowmen.size(); i++) {
  409. _snowmen[i].draw(cd);
  410. }
  411.  
  412. // Рисуем деревья
  413. for (int i = 0; i < _trees.size(); i++) {
  414. _trees[i].draw(cd);
  415. }
  416.  
  417. // Рисуем динозавра
  418. for (int i = 0; i < _hDino.size(); i++) {
  419. _hDino[i].draw(cd);
  420. }
  421. }
  422.  
  423. // Метод обработки вашего хода
  424. void step(ConsoleDrawer& cd) {
  425. // Пока ходит только счастливый динозавр
  426.  
  427. // Ловим нажатие на клавиатуру
  428. KEY_EVENT_RECORD key;
  429. INPUT_RECORD irec[100];
  430. DWORD cc;
  431.  
  432. ReadConsoleInput(cd.get_conHandle(), irec, 100, &cc);
  433. for (DWORD j = 0; j < cc; ++j) {
  434. if (irec[j].EventType == KEY_EVENT && irec[j].Event.KeyEvent.bKeyDown) {
  435.  
  436. for (int i = 0; i < _hDino.size(); i++) {
  437. // Смотрим по сторонам
  438. // -1 - снеговик
  439. // 0 - пусто
  440. // 1 - дерево
  441. // 2 - динозавр
  442. vector<int> res = {
  443. lookLeft(_hDino[i].getCellX(), _hDino[i].getCellY()),
  444. lookUp(_hDino[i].getCellX(), _hDino[i].getCellY()),
  445. lookRight(_hDino[i].getCellX(), _hDino[i].getCellY()),
  446. lookDown(_hDino[i].getCellX(), _hDino[i].getCellY())
  447. };
  448. // Проверяем, какая именно кнопка была нажата
  449. switch (irec[j].Event.KeyEvent.wVirtualKeyCode) {
  450. case VK_LEFT:
  451. // если путь свободен, идем
  452. if (res[0] != -1 && res[0] != -2) {
  453. _hDino[i].step(0);
  454.  
  455. // если мы на что-то наступили (пока что только дерево), обновляем картину
  456. if (res[0] == 1 || res[0] == -3) {
  457. refresh(cd);
  458.  
  459. }
  460. }
  461. break;
  462. case VK_UP:
  463. if (res[1] != -1 && res[1] != -2) {
  464. _hDino[i].step(1);
  465. if (res[1] != 0) {
  466. refresh(cd);
  467. }
  468. }
  469. break;
  470. case VK_RIGHT:
  471. if (res[2] != -1 && res[2] != -2) {
  472. _hDino[i].step(2);
  473. if (res[2] != 0) {
  474. refresh(cd);
  475.  
  476. }
  477. }
  478. break;
  479. case VK_DOWN:
  480. if (res[3] != -1 && res[3] != -2) {
  481. _hDino[i].step(3);
  482. if (res[3] != 0) {
  483. refresh(cd);
  484.  
  485. }
  486. }
  487. break;
  488. case VK_ESCAPE:
  489. cd.stop();
  490. break;
  491. }
  492.  
  493. }
  494.  
  495. }
  496. }
  497. }
  498.  
  499. void addPresent(int x, int y) {
  500. _presents.push_back(Present(x, y, _cellSize));
  501. }
  502.  
  503. void addLake(int x, int y) {
  504. _lakes.push_back(Lake(x, y, _cellSize));
  505. }
  506.  
  507. void addSnowMan(int x, int y) {
  508. _snowmen.push_back(SnowMan(x, y, _cellSize));
  509. }
  510.  
  511. void addTree(int x, int y) {
  512. _trees.push_back(Tree(x, y, _cellSize));
  513. }
  514.  
  515. void addHappyDino(int x, int y) {
  516. _hDino.push_back(HappyDino(x, y, _cellSize));
  517. }
  518.  
  519. // Взгляд на клетку вверх
  520. int lookUp(int cellX, int cellY) {
  521. if (cellY == 0)
  522. return -1;
  523. return find(cellX, cellY - 1);
  524. }
  525.  
  526. // Взгляд на клетку вниз
  527. int lookDown(int cellX, int cellY) {
  528. if (cellY == _cellsYCount - 1)
  529. return -1;
  530. return find(cellX, cellY + 1);
  531. }
  532.  
  533. // Взгляд на клетку вправо
  534. int lookRight(int cellX, int cellY) {
  535. if (cellX == _cellsXCount - 1)
  536. return -1;
  537. return find(cellX + 1, cellY);
  538. }
  539.  
  540. // Взгляд на клетку влево
  541. int lookLeft(int cellX, int cellY) {
  542. if (cellX == 0)
  543. return -1;
  544. return find(cellX - 1, cellY);
  545. }
  546.  
  547. // Обновляем картину
  548. void refresh(ConsoleDrawer& cd) {
  549. for (int i = 0; i < _hDino.size(); i++) {
  550. // Смотрим, где стоит динозавр
  551. int x = _hDino[i].getCellX();
  552. int y = _hDino[i].getCellY();
  553. // Находим то дерево, на котором он стоит
  554. for (int j = 0; j < _trees.size(); j++) {
  555. if (_trees[j].isInside(x, y)) {
  556. _hDino[i].treeCount++;
  557. if (_hDino[0].stepsWithoutTree >= 5) {
  558. _hDino[0].stepsCount += 15;
  559. }
  560. _hDino[0].stepsWithoutTree = 0;
  561. // Переносим дерево в другое место
  562. // Цикл нужен, чтобы не попасть в место, которое уже занято
  563. for (int k = 0; k < 100; k++) {
  564. int _x = rand() % _cellsXCount;
  565. int _y = rand() % _cellsYCount;
  566. if (find(_x, _y) == 0) {
  567. _trees[j] = Tree(_x, _y, _cellSize);
  568. break;
  569. }
  570. }
  571.  
  572. }
  573.  
  574. for (int j = 0; j < _presents.size(); j++) {
  575. if (_presents[j].isInside(x, y)) {
  576. _hDino[i].presentsCount++;
  577. // Переносим дерево в другое место
  578. // Цикл нужен, чтобы не попасть в место, которое уже занято
  579. for (int k = 0; k < 100; k++) {
  580. int _x = rand() % _cellsXCount;
  581. int _y = rand() % _cellsYCount;
  582. if (find(_x, _y) == 0) {
  583. _presents[j] = Present(_x, _y, _cellSize);
  584. break;
  585. }
  586. }
  587.  
  588. }
  589. }
  590. }
  591. }
  592. }
  593. };
  594.  
  595. DinoPark CreateDino(ConsoleDrawer& cd) {
  596. const int CellSize = 80;
  597. int width = cd.getWidth() / CellSize;
  598. int height = cd.getHeight() / CellSize;
  599. DinoPark dinoPark(width, height, CellSize);
  600.  
  601. dinoPark.addSnowMan(0, 1);
  602. dinoPark.addSnowMan(0, 2);
  603. dinoPark.addSnowMan(0, 3);
  604.  
  605. dinoPark.addSnowMan(9, 3);
  606. dinoPark.addSnowMan(9, 5);
  607. dinoPark.addSnowMan(7, 3);
  608. dinoPark.addSnowMan(7, 5);
  609. dinoPark.addTree(8, 3);
  610. dinoPark.addTree(9, 4);
  611. dinoPark.addTree(8, 5);
  612. dinoPark.addTree(7, 4);
  613.  
  614. dinoPark.addTree(1, 0);
  615. dinoPark.addTree(2, 0);
  616. dinoPark.addTree(3, 0);
  617. dinoPark.addTree(4, 0);
  618.  
  619. dinoPark.addLake(3, 4);
  620. dinoPark.addPresent(2, 5);
  621.  
  622. dinoPark.addHappyDino(8, 4);
  623.  
  624. return dinoPark;
  625. }
  626.  
  627. int main() {
  628. system("mode con cols=800 lines=600");
  629. ConsoleDrawer cd;
  630. srand(time(0));
  631. vector<int> record;
  632. int cnt = 0;
  633.  
  634. const int CellSize = 80;
  635. int width = cd.getWidth() / CellSize;
  636. int height = cd.getHeight() / CellSize;
  637. DinoPark dinoPark(width, height, CellSize);
  638.  
  639. dinoPark.addSnowMan(0, 1);
  640. dinoPark.addSnowMan(0, 2);
  641. dinoPark.addSnowMan(0, 3);
  642.  
  643. dinoPark.addSnowMan(9, 3);
  644. dinoPark.addSnowMan(9, 5);
  645. dinoPark.addSnowMan(7, 3);
  646. dinoPark.addSnowMan(7, 5);
  647. dinoPark.addTree(8, 3);
  648. dinoPark.addTree(9, 4);
  649. dinoPark.addTree(8, 5);
  650. dinoPark.addTree(7, 4);
  651.  
  652. dinoPark.addTree(1, 0);
  653. dinoPark.addTree(2, 0);
  654. dinoPark.addTree(3, 0);
  655. dinoPark.addTree(4, 0);
  656.  
  657. dinoPark.addLake(3, 4);
  658. dinoPark.addPresent(2, 5);
  659.  
  660. dinoPark.addHappyDino(8, 4);
  661.  
  662. cd.clearScreen();
  663.  
  664. string f;
  665. while (cd.isWork()) {
  666. cd.drawBackground();
  667. dinoPark.draw(cd);
  668. dinoPark.step(cd);
  669. cnt--;
  670. }
  671. cnt = dinoPark.DinoScore();
  672. record.push_back(cnt);
  673. cd.clearScreen();
  674. cout << "Счет игры: " << cnt << endl;
  675. if (cnt > 0) {
  676. cout << "You win" << endl;
  677. }
  678. else {
  679. cout << "You lost" << endl;
  680.  
  681. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement