Advertisement
baadgeorge

classes cpp

Jun 4th, 2021
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.24 KB | None | 0 0
  1. #include <windows.h>
  2. #include "Classes.h"
  3. #include <math.h>
  4.  
  5. #define KEY_DOWN(vk_code)((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
  6. #define PI 3.1415926535
  7.  
  8. extern HDC hdc;
  9.  
  10. //
  11. //методы класса Location
  12. //
  13. Location::Location(int _X, int _Y) //конструктор
  14. {
  15. X = _X;
  16. Y = _Y;
  17. }
  18.  
  19. Location::~Location() {} //деструктор
  20.  
  21. int Location::GetX() //функция получения значения Х
  22. {
  23. return X;
  24. }
  25.  
  26. int Location::GetY() //функция получения значения Y
  27. {
  28. return Y;
  29. }
  30.  
  31. void Location::SetX(int _X) //функция задания значения Х
  32. {
  33. X = _X;
  34. }
  35. void Location::SetY(int _Y) //функция задания значения Y
  36. {
  37. Y = _Y;
  38. }
  39.  
  40. //
  41. //методы класса Location
  42. //
  43.  
  44. Point::Point(int _X, int _Y) : Location(_X, _Y) //конструктор
  45. {
  46. isVisible = false;
  47. }
  48.  
  49. Point::~Point() {} //деструктор
  50.  
  51. void Point::Show() //функция отображения точки
  52. {
  53. isVisible = true;
  54. SetPixel(hdc, X, Y, RGB(0, 0, 255));
  55. }
  56.  
  57. void Point::Hide() //функция скрытия точки
  58. {
  59. isVisible = false;
  60. SetPixel(hdc, X, Y, RGB(255, 0, 0));
  61. }
  62.  
  63. void Point::MoveTo(int NewX, int NewY) //функция перемещения точки по новым координатам
  64. {
  65. Hide();
  66. X = NewX;
  67. Y = NewY;
  68. Show();
  69. }
  70.  
  71. void Point::Drag(int Step) //функция движения точки
  72. {
  73. int FigX, FigY;
  74. FigX = GetX();
  75. FigY = GetY();
  76.  
  77. if (KEY_DOWN(VK_LEFT))
  78. {
  79. FigX -= Step;
  80. MoveTo(FigX, FigY);
  81. }
  82. if (KEY_DOWN(VK_RIGHT))
  83. {
  84. FigX += Step;
  85. MoveTo(FigX, FigY);
  86. }
  87. if (KEY_DOWN(VK_DOWN))
  88. {
  89. FigY += Step;
  90. MoveTo(FigX, FigY);
  91. }
  92. if (KEY_DOWN(VK_UP))
  93. {
  94. FigY -= Step;
  95. MoveTo(FigX, FigY);
  96. }
  97. }
  98.  
  99. //
  100. //методы класса Wheel
  101. //
  102.  
  103. Wheel::Wheel(int _X, int _Y, int _Radius) : Point(_X, _Y) //конструктор
  104. {
  105. Radius = _Radius;
  106. Angle = 0.0;
  107. }
  108.  
  109. Wheel::~Wheel() {} //деструктор
  110.  
  111. void Wheel::Show() //функция отображения колеса
  112. {
  113. HPEN pen;
  114. HBRUSH brush;
  115.  
  116. SelectObject(hdc, GetStockObject(HOLLOW_BRUSH));
  117. pen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
  118. SelectObject(hdc, pen);
  119. Ellipse(hdc, X - 50 * Radius, Y + 50 * Radius, X + 50 * Radius, Y - 50 * Radius);
  120.  
  121. brush = CreateSolidBrush(RGB(0, 0, 0));
  122. SelectObject(hdc, brush);
  123. Ellipse(hdc, X - 5 * Radius, Y + 5 * Radius, X + 5 * Radius, Y - 5 * Radius);
  124.  
  125. SelectObject(hdc, GetStockObject(HOLLOW_BRUSH));
  126. pen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
  127. int line = 115 * Radius;
  128. int lineRadius = line / 2;
  129.  
  130. MoveToEx(hdc, X + lineRadius * cos(Angle * PI / 180), Y + lineRadius * sin(Angle * PI / 180), NULL);
  131. LineTo(hdc, X - lineRadius * cos(Angle * PI / 180), Y - lineRadius * sin(Angle * PI / 180));
  132.  
  133. MoveToEx(hdc, X + lineRadius * cos((Angle + 90) * PI / 180), Y + lineRadius * sin((Angle + 90) * PI / 180), NULL);
  134. LineTo(hdc, X - lineRadius * cos((Angle + 90) * PI / 180), Y - lineRadius * sin((Angle + 90) * PI / 180));
  135.  
  136. DeleteObject(pen);
  137. DeleteObject(brush);
  138. }
  139.  
  140. void Wheel::Hide() //функция скрытия колеса
  141. {
  142. HBRUSH rubber = CreateSolidBrush(RGB(243, 243, 243));
  143. HPEN pen = CreatePen(PS_SOLID, 3, RGB(243, 243, 243));
  144. SelectObject(hdc, pen);
  145. SelectObject(hdc, rubber);
  146. MoveToEx(hdc, X, Y, NULL);
  147. int line = 115 * Radius;
  148. int lineRadius = line / 2;
  149.  
  150. MoveToEx(hdc, X + lineRadius * cos(Angle * PI / 180), Y + lineRadius * sin(Angle * PI / 180), NULL);
  151. LineTo(hdc, X - lineRadius * cos(Angle * PI / 180), Y - lineRadius * sin(Angle * PI / 180));
  152.  
  153. MoveToEx(hdc, X + lineRadius * cos((Angle + 90) * PI / 180), Y + lineRadius * sin((Angle + 90) * PI / 180), NULL);
  154. LineTo(hdc, X - lineRadius * cos((Angle + 90) * PI / 180), Y - lineRadius * sin((Angle + 90) * PI / 180));
  155.  
  156. DeleteObject(pen);
  157. DeleteObject(rubber);
  158. }
  159.  
  160. void Wheel::SetAngle(double _Angle) //функция задания угла
  161. {
  162. Angle = _Angle;
  163. }
  164.  
  165. double Wheel::GetAngle() //функция получения угла
  166. {
  167. return Angle;
  168. }
  169.  
  170. //
  171. //методы класса Grinder
  172. //
  173.  
  174. Grinder::Grinder(int _X, int _Y, int _Scale, double _Angle) : Point(_X, _Y), wheel(_X, _Y, _Scale) //конструктор
  175. {
  176. Scale = _Scale;
  177. wheel.SetAngle(_Angle);
  178. isRotating = true;
  179. }
  180.  
  181. Grinder::~Grinder() {} //деструктор
  182.  
  183. void Grinder::Vent(HPEN penVent, HBRUSH brushVent) //функция отображения трубы мельницы
  184. {
  185. //vent
  186. SelectObject(hdc, penVent);
  187. SelectObject(hdc, brushVent);
  188. Rectangle(hdc, X + 440 * Scale, Y + 200 * Scale, X + 460 * Scale, Y + 100 * Scale);
  189. }
  190.  
  191. void Grinder::Top(HBRUSH brushTop) //функция отображения крыши мельницы
  192. {
  193. //top
  194. SelectObject(hdc, brushTop);
  195. POINT vertices[] = { {X + 400 * Scale, Y + 100 * Scale}, {X + 500 * Scale, Y + 200 * Scale}, {X + 300 * Scale, Y + 200 * Scale} };
  196. Polygon(hdc, vertices, sizeof(vertices) / sizeof(vertices[0]));
  197. }
  198.  
  199. void Grinder::Bottom(HBRUSH brushBottom) //функция отображения основания мельницы
  200. {
  201. //bottom
  202. SelectObject(hdc, brushBottom);
  203. Rectangle(hdc, X + 305 * Scale, Y + 200 * Scale, X + 495 * Scale, Y + 320 * Scale);
  204. }
  205.  
  206.  
  207. void Grinder::Window(HPEN penWindow, HBRUSH brushWindow) //функция отображения окна мельницы
  208. {
  209. //window
  210. SelectObject(hdc, brushWindow);
  211. Rectangle(hdc, X + 365 * Scale, Y + 230 * Scale, X + 435 * Scale, Y + 290 * Scale);
  212. SelectObject(hdc, GetStockObject(HOLLOW_BRUSH));
  213. SelectObject(hdc, penWindow);
  214. MoveToEx(hdc, X + 400 * Scale, Y + 230 * Scale, NULL);
  215. LineTo(hdc, X + 400 * Scale, Y + 290 * Scale);
  216. MoveToEx(hdc, X + 365 * Scale, Y + 260 * Scale, NULL);
  217. LineTo(hdc, X + 435 * Scale, Y + 260 * Scale);
  218. MoveToEx(hdc, X, Y, NULL);
  219. }
  220.  
  221. void Grinder::Outbuilding(HPEN penOutbuilding, HBRUSH brushOutbuilding ) //функция отображения пристройки мельницы
  222. {
  223. //outbilding
  224. SelectObject(hdc, brushOutbuilding);
  225. SelectObject(hdc, penOutbuilding);
  226. Rectangle(hdc, X + 495 * Scale, Y + 320 * Scale, X + 550 * Scale, Y + 250 * Scale);
  227. }
  228.  
  229. void Grinder::WheelShow() //функция отображения колеса мельницы
  230. {
  231. //wheel
  232. wheel.SetX(X + 525 * Scale);
  233. wheel.SetY(Y + 300 * Scale);
  234. wheel.Show();
  235. }
  236.  
  237. bool Grinder::GetRotation() //функция получения информации о вращении колеса
  238. {
  239. return isRotating;
  240. }
  241.  
  242. void Grinder::SetRotation(bool _flag) //функция установки состояния колеса(вращается или нет)
  243. {
  244. isRotating = _flag;
  245. }
  246.  
  247. void Grinder::Show() //функция отображения мельницы
  248. {
  249. isVisible = true;
  250. HPEN penVent = CreatePen(PS_SOLID, 1, RGB(0, 255, 255));
  251. HBRUSH brushVent = CreateSolidBrush(RGB(255, 0, 0));
  252. HBRUSH brushTop = CreateSolidBrush(RGB(0, 0, 255));
  253. HBRUSH brushBottom = CreateSolidBrush(RGB(255, 155, 0));
  254. HBRUSH brushWindow = CreateSolidBrush(RGB(155, 0, 255));
  255. HPEN penWindow = CreatePen(PS_SOLID, 2, RGB(0, 255, 255));
  256. HBRUSH brushOutbuilding = CreateSolidBrush(RGB(60, 155, 30));
  257. HPEN penOutbuilding = CreatePen(PS_SOLID, 1, RGB(0, 255, 255));
  258.  
  259. Vent(penVent, brushVent);
  260. Top(brushTop);
  261. Bottom(brushBottom);
  262. Window(penWindow, brushWindow);
  263. Outbuilding(penOutbuilding, brushOutbuilding);
  264. WheelShow();
  265.  
  266. DeleteObject(penVent);
  267. DeleteObject(brushVent);
  268. DeleteObject(brushTop);
  269. DeleteObject(brushBottom);
  270. DeleteObject(brushWindow);
  271. DeleteObject(penWindow);
  272. DeleteObject(brushOutbuilding);
  273. DeleteObject(penOutbuilding);
  274. }
  275.  
  276. void Grinder::Hide() //функция скрытия мельниц
  277. {
  278. HBRUSH rubber = CreateSolidBrush(RGB(243, 243, 243));
  279. HPEN pen = CreatePen(PS_SOLID, 1, RGB(243, 243, 243));
  280.  
  281. SelectObject(hdc, pen);
  282. SelectObject(hdc, rubber);
  283. MoveToEx(hdc, X, Y, NULL);
  284. Rectangle(hdc, X + 300, Y + 100 * Scale, X + 600 * Scale, Y + 360 * Scale);
  285.  
  286. DeleteObject(pen);
  287. DeleteObject(rubber);
  288. }
  289.  
  290. double Grinder::GetAngleWH() //функция получения информации о текущем угле колеса
  291. {
  292. return wheel.GetAngle();
  293. }
  294.  
  295. void Grinder::SetAngleWH(double _Angle) //функция задания текущего угла колеса
  296. {
  297. wheel.SetAngle(_Angle);
  298. }
  299.  
  300. //
  301. //методы класса GrinderDamage
  302. //
  303.  
  304. GrinderDamage::GrinderDamage(int _X, int _Y, int _Scale, double _Angle) : Grinder(_X, _Y, _Scale, _Angle)
  305. {
  306.  
  307. }
  308.  
  309. GrinderDamage::~GrinderDamage() {}
  310.  
  311. void GrinderDamage::Vent(HPEN penVent, HBRUSH brushVen)
  312. {
  313. return;
  314. }
  315.  
  316. //
  317. //методы класса Rock
  318. //
  319.  
  320. Rock::Rock(int _X, int _Y, int _Scale) : Point(_X, _Y) //конструктор
  321. {
  322. X = _X;
  323. Y = _Y;
  324. Scale = _Scale;
  325. }
  326.  
  327. Rock::~Rock() {} //деструктор
  328.  
  329. void Rock::Show() //функция отображения камня
  330. {
  331. HPEN pen;
  332. pen = CreatePen(PS_SOLID, 1, RGB(0, 255, 155));
  333. SelectObject(hdc, pen);
  334. HBRUSH brush;
  335. brush = CreateSolidBrush(RGB(155, 0, 0));
  336. SelectObject(hdc, brush);
  337.  
  338. Ellipse(hdc, X - 150 * Scale, Y + 340 * Scale, X - 100 * Scale, Y + 380 * Scale);
  339.  
  340. DeleteObject(pen);
  341. DeleteObject(brush);
  342. }
  343.  
  344. void Rock::Hide() //функция скрытия камня
  345. {
  346. isVisible = false;
  347. HBRUSH rubber = CreateSolidBrush(RGB(0, 125, 255));
  348. HPEN pen = CreatePen(PS_SOLID, 1, RGB(0, 125, 255));
  349. SelectObject(hdc, pen);
  350. SelectObject(hdc, rubber);
  351. MoveToEx(hdc, X, Y, NULL);
  352.  
  353. Ellipse(hdc, X - 150 * Scale, Y + 340 * Scale, X - 100 * Scale, Y + 380 * Scale);
  354.  
  355. DeleteObject(pen);
  356. DeleteObject(rubber);
  357. }
  358.  
  359. double Rock::GetScale() //функция получения масштаба
  360. {
  361. return Scale;
  362. }
  363.  
  364. void Rock::SetScale(double _Scale) //функция получения масштаба
  365. {
  366. SetScale(_Scale);
  367. }
  368.  
  369. //
  370. //методы класса Wave
  371. //
  372.  
  373. Wave::Wave(int _X, int _Y, int _Scale) : Point(_X, _Y) //конструктор
  374. {
  375. X = _X;
  376. Y = _Y;
  377. Scale = _Scale;
  378. }
  379.  
  380. Wave::~Wave() {} //деструктор
  381.  
  382. void Wave::Show() //функция отображения волны
  383. {
  384. HPEN pen;
  385. pen = CreatePen(PS_SOLID, 1, RGB(0, 255, 255));
  386. SelectObject(hdc, pen);
  387. HBRUSH brush;
  388. MoveToEx(hdc, X, Y, NULL);
  389. brush = CreateSolidBrush(RGB(0, 0, 255));
  390. SelectObject(hdc, brush);
  391. Ellipse(hdc, X - 150 * Scale, Y + 340 * Scale, X - 100 * Scale, Y + 380 * Scale);
  392.  
  393. DeleteObject(pen);
  394. DeleteObject(brush);
  395. }
  396.  
  397. void Wave::Hide() //функция скрытия волны
  398. {
  399. isVisible = false;
  400. HBRUSH rubber = CreateSolidBrush(RGB(0, 125, 255));
  401. HPEN pen = CreatePen(PS_SOLID, 1, RGB(0, 125, 255));
  402. SelectObject(hdc, pen);
  403. SelectObject(hdc, rubber);
  404. MoveToEx(hdc, X, Y, NULL);
  405. Ellipse(hdc, X - 150 * Scale, Y + 340 * Scale, X - 100 * Scale, Y + 380 * Scale);
  406. DeleteObject(pen);
  407. DeleteObject(rubber);
  408. }
  409.  
  410. double Wave::GetScale() //функция получения масштаба
  411. {
  412. return Scale;
  413. }
  414.  
  415. void Wave::SetScale(double _Scale) //функция задания масштаба
  416. {
  417. SetScale(_Scale);
  418. }
  419.  
  420. //
  421. //методы класса Health_mode
  422. //
  423.  
  424. Health_mode::Health_mode(int _X, int _Y, int _Scale) : Point(_X, _Y) //конструктор
  425. {
  426. X = _X;
  427. Y = _Y;
  428. Scale = _Scale;
  429. }
  430.  
  431. Health_mode::~Health_mode() {} //деструктор
  432.  
  433. void Health_mode::Show() //функция отображения модуля здоровья
  434. {
  435. HPEN pen;
  436. pen = CreatePen(PS_SOLID, 1, RGB(255, 0, 0));
  437. SelectObject(hdc, pen);
  438. HBRUSH brush;
  439. MoveToEx(hdc, X, Y, NULL);
  440. brush = CreateSolidBrush(RGB(0, 255, 0));
  441. SelectObject(hdc, brush);
  442. Ellipse(hdc, X - 150 * Scale, Y + 340 * Scale, X - 100 * Scale, Y + 380 * Scale);
  443. DeleteObject(pen);
  444. DeleteObject(brush);
  445. }
  446.  
  447. void Health_mode::Hide() //функция скрытия модуля здоровья
  448. {
  449. isVisible = false;
  450. HBRUSH rubber = CreateSolidBrush(RGB(0, 125, 255));
  451. HPEN pen = CreatePen(PS_SOLID, 1, RGB(0, 125, 255));
  452. SelectObject(hdc, pen);
  453. SelectObject(hdc, rubber);
  454. MoveToEx(hdc, X, Y, NULL);
  455. Ellipse(hdc, X - 150 * Scale, Y + 340 * Scale, X - 100 * Scale, Y + 380 * Scale);
  456. DeleteObject(pen);
  457. DeleteObject(rubber);
  458.  
  459. }
  460.  
  461. double Health_mode::GetScale() //функция получения масштаба
  462. {
  463. return Scale;
  464. }
  465.  
  466. void Health_mode::SetScale(double _Scale) //функция задания масштаба
  467. {
  468. SetScale(_Scale);
  469. }
  470.  
  471. //
  472. //методы класса Health_mode
  473. //
  474.  
  475. River::River(int _X, int _Y, int _Scale) : Point(_X, _Y) //конструктор
  476. {
  477. X = _X;
  478. Y = _Y;
  479. Scale = _Scale;
  480. }
  481.  
  482. River::~River() {} //деструктор
  483.  
  484. void River::Show() //функция отображения реки
  485. {
  486. HBRUSH brush = CreateSolidBrush(RGB(0, 125, 255));
  487. SelectObject(hdc, brush);
  488. Rectangle(hdc, X - 290 * Scale, Y + 320 * Scale, X + 680 * Scale, Y + 470 * Scale);
  489. DeleteObject(brush);
  490. }
  491.  
  492. void River::Hide() //функция скрытия реки
  493. {
  494. HBRUSH brush = CreateSolidBrush(RGB(243, 243, 243));
  495. HPEN pen = CreatePen(PS_SOLID, 3, RGB(243, 243, 243));
  496. SelectObject(hdc, pen);
  497. SelectObject(hdc, brush);
  498. Rectangle(hdc, X - 290 * Scale, Y + 320 * Scale, X + 660 * Scale, Y + 450 * Scale);
  499. DeleteObject(pen);
  500. DeleteObject(brush);
  501. }
  502.  
  503. //
  504. //методы класса Catcher
  505. //
  506.  
  507. Catcher::Catcher(int _X, int _Y, int _Scale) : Point(_X, _Y)
  508. {
  509. X = _X;
  510. Y = _Y;
  511. Scale = _Scale;
  512. }
  513.  
  514. Catcher::~Catcher()
  515. {
  516. }
  517.  
  518. void Catcher::Show() //функция отображения ловца
  519. {
  520. HPEN pen = CreatePen(PS_SOLID, 2, RGB(0, 0, 0));
  521. HBRUSH brush = CreateSolidBrush(RGB(215, 225, 0));
  522. SelectObject(hdc, pen);
  523. SelectObject(hdc, brush);
  524. Rectangle(hdc, X - 20 * Scale, Y + 330 * Scale, X + 20 * Scale, Y + 390 * Scale);
  525. DeleteObject(pen);
  526. DeleteObject(brush);
  527. }
  528.  
  529. void Catcher::Hide() //функция скрытия ловца
  530. {
  531. HBRUSH brush = CreateSolidBrush(RGB(243, 243, 243));
  532. HPEN pen = CreatePen(PS_SOLID, 3, RGB(243, 243, 243));
  533. SelectObject(hdc, pen);
  534. SelectObject(hdc, brush);
  535. Rectangle(hdc, X - 20 * Scale, Y + 330 * Scale, X + 20 * Scale, Y + 390 * Scale);
  536. DeleteObject(pen);
  537. DeleteObject(brush);
  538. }
  539.  
  540. int Catcher::GetScale() //функция получения масштаба
  541. {
  542. return Scale;
  543. }
  544.  
  545. void Catcher::SetScale(int _Scale) //функция задания масштаба
  546. {
  547. Scale = _Scale;
  548. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement