Advertisement
baadgeorge

реализация кл

Jun 3rd, 2021
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 13.96 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. //методы класса Rock
  302. //
  303.  
  304. Rock::Rock(int _X, int _Y, int _Scale) : Point(_X, _Y) //конструктор
  305. {
  306.     X = _X;
  307.     Y = _Y;
  308.     Scale = _Scale;
  309. }
  310.  
  311. Rock::~Rock() {} //деструктор
  312.  
  313. void Rock::Show() //функция отображения камня
  314. {
  315.     HPEN pen;
  316.     pen = CreatePen(PS_SOLID, 1, RGB(0, 255, 155));
  317.     SelectObject(hdc, pen);
  318.     HBRUSH brush;
  319.     brush = CreateSolidBrush(RGB(155, 0, 0));
  320.     SelectObject(hdc, brush);
  321.  
  322.     Ellipse(hdc, X - 150 * Scale, Y + 340 * Scale, X - 100 * Scale, Y + 380 * Scale);
  323.  
  324.     DeleteObject(pen);
  325.     DeleteObject(brush);
  326. }
  327.  
  328. void Rock::Hide() //функция скрытия камня
  329. {
  330.     isVisible = false;
  331.     HBRUSH rubber = CreateSolidBrush(RGB(0, 125, 255));
  332.     HPEN pen = CreatePen(PS_SOLID, 1, RGB(0, 125, 255));
  333.     SelectObject(hdc, pen);
  334.     SelectObject(hdc, rubber);
  335.     MoveToEx(hdc, X, Y, NULL);
  336.  
  337.     Ellipse(hdc, X - 150 * Scale, Y + 340 * Scale, X - 100 * Scale, Y + 380 * Scale);
  338.  
  339.     DeleteObject(pen);
  340.     DeleteObject(rubber);
  341. }
  342.  
  343. double Rock::GetScale() //функция получения масштаба
  344. {
  345.     return Scale;
  346. }
  347.  
  348. void Rock::SetScale(double _Scale) //функция получения масштаба
  349. {
  350.     SetScale(_Scale);
  351. }
  352.  
  353. //
  354. //методы класса Wave
  355. //
  356.  
  357. Wave::Wave(int _X, int _Y, int _Scale) : Point(_X, _Y) //конструктор
  358. {
  359.     X = _X;
  360.     Y = _Y;
  361.     Scale = _Scale;
  362. }
  363.  
  364. Wave::~Wave() {} //деструктор
  365.  
  366. void Wave::Show() //функция отображения волны
  367. {
  368.     HPEN pen;
  369.     pen = CreatePen(PS_SOLID, 1, RGB(0, 255, 255));
  370.     SelectObject(hdc, pen);
  371.     HBRUSH brush;
  372.     MoveToEx(hdc, X, Y, NULL);
  373.     brush = CreateSolidBrush(RGB(0, 0, 255));
  374.     SelectObject(hdc, brush);
  375.     Ellipse(hdc, X - 150 * Scale, Y + 340 * Scale, X - 100 * Scale, Y + 380 * Scale);
  376.  
  377.     DeleteObject(pen);
  378.     DeleteObject(brush);
  379. }
  380.  
  381. void Wave::Hide() //функция скрытия волны
  382. {
  383.     isVisible = false;
  384.     HBRUSH rubber = CreateSolidBrush(RGB(0, 125, 255));
  385.     HPEN pen = CreatePen(PS_SOLID, 1, RGB(0, 125, 255));
  386.     SelectObject(hdc, pen);
  387.     SelectObject(hdc, rubber);
  388.     MoveToEx(hdc, X, Y, NULL);
  389.     Ellipse(hdc, X - 150 * Scale, Y + 340 * Scale, X - 100 * Scale, Y + 380 * Scale);
  390.     DeleteObject(pen);
  391.     DeleteObject(rubber);
  392. }
  393.  
  394. double Wave::GetScale() //функция получения масштаба
  395. {
  396.     return Scale;
  397. }
  398.  
  399. void Wave::SetScale(double _Scale) //функция задания масштаба
  400. {
  401.     SetScale(_Scale);
  402. }
  403.  
  404. //
  405. //методы класса Health_mode
  406. //
  407.  
  408. Health_mode::Health_mode(int _X, int _Y, int _Scale) : Point(_X, _Y) //конструктор
  409. {
  410.     X = _X;
  411.     Y = _Y;
  412.     Scale = _Scale;
  413. }
  414.  
  415. Health_mode::~Health_mode() {} //деструктор
  416.  
  417. void Health_mode::Show() //функция отображения модуля здоровья
  418. {
  419.     HPEN pen;
  420.     pen = CreatePen(PS_SOLID, 1, RGB(255, 0, 0));
  421.     SelectObject(hdc, pen);
  422.     HBRUSH brush;
  423.     MoveToEx(hdc, X, Y, NULL);
  424.     brush = CreateSolidBrush(RGB(0, 255, 0));
  425.     SelectObject(hdc, brush);
  426.     Ellipse(hdc, X - 150 * Scale, Y + 340 * Scale, X - 100 * Scale, Y + 380 * Scale);
  427.     DeleteObject(pen);
  428.     DeleteObject(brush);
  429. }
  430.  
  431. void Health_mode::Hide() //функция скрытия модуля здоровья
  432. {
  433.     isVisible = false;
  434.     HBRUSH rubber = CreateSolidBrush(RGB(0, 125, 255));
  435.     HPEN pen = CreatePen(PS_SOLID, 1, RGB(0, 125, 255));
  436.     SelectObject(hdc, pen);
  437.     SelectObject(hdc, rubber);
  438.     MoveToEx(hdc, X, Y, NULL);
  439.     Ellipse(hdc, X - 150 * Scale, Y + 340 * Scale, X - 100 * Scale, Y + 380 * Scale);
  440.     DeleteObject(pen);
  441.     DeleteObject(rubber);
  442.  
  443. }
  444.  
  445. double Health_mode::GetScale() //функция получения масштаба
  446. {
  447.     return Scale;
  448. }
  449.  
  450. void Health_mode::SetScale(double _Scale) //функция задания масштаба
  451. {
  452.     SetScale(_Scale);
  453. }
  454.  
  455. //
  456. //методы класса Health_mode
  457. //
  458.  
  459. River::River(int _X, int _Y, int _Scale) : Point(_X, _Y) //конструктор
  460. {
  461.     X = _X;
  462.     Y = _Y;
  463.     Scale = _Scale;
  464. }
  465.  
  466. River::~River() {} //деструктор
  467.  
  468. void River::Show() //функция отображения реки
  469. {
  470.     HBRUSH brush = CreateSolidBrush(RGB(0, 125, 255));
  471.     SelectObject(hdc, brush);
  472.     Rectangle(hdc, X - 290 * Scale, Y + 320 * Scale, X + 660 * Scale, Y + 450 * Scale);
  473.     DeleteObject(brush);
  474. }
  475.  
  476. void River::Hide() //функция скрытия реки
  477. {
  478.     HBRUSH brush = CreateSolidBrush(RGB(243, 243, 243));
  479.     HPEN pen = CreatePen(PS_SOLID, 3, RGB(243, 243, 243));
  480.     SelectObject(hdc, pen);
  481.     SelectObject(hdc, brush);
  482.     Rectangle(hdc, X - 290 * Scale, Y + 320 * Scale, X + 660 * Scale, Y + 450 * Scale);
  483.     DeleteObject(pen);
  484.     DeleteObject(brush);
  485. }
  486.  
  487. //
  488. //методы класса Catcher
  489. //
  490.  
  491. Catcher::Catcher(int _X, int _Y, int _Scale) : Point(_X, _Y)
  492. {
  493.     X = _X;
  494.     Y = _Y;
  495.     Scale = _Scale;
  496. }
  497.  
  498. Catcher::~Catcher()
  499. {
  500. }
  501.  
  502. void Catcher::Show() //функция отображения ловца
  503. {
  504.     HPEN pen = CreatePen(PS_SOLID, 2, RGB(0, 0, 0));
  505.     HBRUSH brush = CreateSolidBrush(RGB(215, 225, 0));
  506.     SelectObject(hdc, pen);
  507.     SelectObject(hdc, brush);
  508.     Rectangle(hdc, X - 20 * Scale, Y + 330 * Scale, X + 20 * Scale, Y + 390 * Scale);
  509.     DeleteObject(pen);
  510.     DeleteObject(brush);
  511. }
  512.  
  513. void Catcher::Hide() //функция скрытия ловца
  514. {
  515.     HBRUSH brush = CreateSolidBrush(RGB(243, 243, 243));
  516.     HPEN pen = CreatePen(PS_SOLID, 3, RGB(243, 243, 243));
  517.     SelectObject(hdc, pen);
  518.     SelectObject(hdc, brush);
  519.     Rectangle(hdc, X - 20 * Scale, Y + 330 * Scale, X + 20 * Scale, Y + 390 * Scale);
  520.     DeleteObject(pen);
  521.     DeleteObject(brush);
  522. }
  523.  
  524. int Catcher::GetScale() //функция получения масштаба
  525. {
  526.     return Scale;
  527. }
  528.  
  529. void Catcher::SetScale(int _Scale) //функция задания масштаба
  530. {
  531.     Scale = _Scale;
  532. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement