Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include "Classes.h"
- #include <math.h>
- #define KEY_DOWN(vk_code)((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0)
- #define PI 3.1415926535
- extern HDC hdc;
- Location::Location(int _X, int _Y)
- {
- X = _X;
- Y = _Y;
- }
- Location::~Location() {}
- int Location::GetX()
- {
- return X;
- }
- int Location::GetY()
- {
- return Y;
- }
- Point::Point(int _X, int _Y) : Location(_X, _Y)
- {
- isVisible = false;
- }
- Point::~Point() {}
- void Point::Show()
- {
- isVisible = true;
- SetPixel(hdc, X, Y, RGB(0, 0, 255));
- }
- void Point::Hide()
- {
- isVisible = false;
- SetPixel(hdc, X, Y, RGB(255, 0, 0));
- }
- void Point::SetX(int _X)
- {
- X = _X;
- }
- void Point::SetY(int _Y)
- {
- Y = _Y;
- }
- void Point::MoveTo(int NewX, int NewY)
- {
- Hide();
- X = NewX;
- Y = NewY;
- Show();
- }
- void Point::Drag(int Step)
- {
- int FigX, FigY;
- FigX = GetX();
- FigY = GetY();
- while (1)
- {
- if (KEY_DOWN(VK_LEFT))
- {
- FigX -= Step;
- MoveTo(FigX, FigY);
- }
- if (KEY_DOWN(VK_RIGHT))
- {
- FigX += Step;
- MoveTo(FigX, FigY);
- }
- if (KEY_DOWN(VK_DOWN))
- {
- FigY += Step;
- MoveTo(FigX, FigY);
- }
- if (KEY_DOWN(VK_UP))
- {
- FigY -= Step;
- MoveTo(FigX, FigY);
- }
- Show();
- Sleep(200);
- Hide();
- }
- }
- Grinder::Grinder(int _X, int _Y, int _Scale, double _Angle) : Point(_X, _Y), wheel(_X, _Y, _Scale)
- {
- Scale = _Scale;
- wheel.SetAngle(_Angle);
- }
- Grinder::~Grinder() {}
- void Grinder::Show()
- {
- HPEN pen;
- pen = CreatePen(PS_SOLID, 1, RGB(0, 255, 255));
- SelectObject(hdc, pen);
- HBRUSH brush;
- //MoveToEx(hdc, X, Y, NULL);
- //vent
- brush = CreateSolidBrush(RGB(255, 0, 0));
- SelectObject(hdc, brush);
- Rectangle(hdc, X + 440 * Scale, Y + 200 * Scale, X + 460 * Scale, Y + 100 * Scale);
- //top
- brush = CreateSolidBrush(RGB(0, 0, 255));
- SelectObject(hdc, brush);
- POINT vertices[] = { {X + 400 * Scale, Y + 100 * Scale}, {X + 500 * Scale, Y + 200 * Scale}, {X + 300 * Scale, Y + 200 * Scale} };
- Polygon(hdc, vertices, sizeof(vertices) / sizeof(vertices[0]));
- /*
- // hide old wheel
- wheel.SetAngle(angle_WH - 10);
- wheel.Hide();
- */
- //bottom
- brush = CreateSolidBrush(RGB(255, 155, 0));
- SelectObject(hdc, brush);
- Rectangle(hdc, X + 305 * Scale, Y + 200 * Scale, X + 495 * Scale, Y + 320 * Scale);
- //window
- brush = CreateSolidBrush(RGB(155, 0, 255));
- SelectObject(hdc, brush);
- Rectangle(hdc, X + 365 * Scale, Y + 230 * Scale, X + 435 * Scale, Y + 290 * Scale);
- SelectObject(hdc, GetStockObject(HOLLOW_BRUSH));
- pen = CreatePen(PS_SOLID, 2, RGB(0, 255, 255));
- SelectObject(hdc, pen);
- MoveToEx(hdc, X + 400 * Scale, Y + 230 * Scale, NULL);
- LineTo(hdc, X + 400 * Scale, Y + 290 * Scale);
- MoveToEx(hdc, X + 365 * Scale, Y + 260 * Scale, NULL);
- LineTo(hdc, X + 435 * Scale, Y + 260 * Scale);
- MoveToEx(hdc, X, Y, NULL);
- //outbilding
- brush = CreateSolidBrush(RGB(60, 155, 30));
- SelectObject(hdc, brush);
- pen = CreatePen(PS_SOLID, 1, RGB(0, 255, 255));
- SelectObject(hdc, pen);
- Rectangle(hdc, X + 495 * Scale, Y + 320 * Scale, X + 550 * Scale, Y + 250 * Scale);
- // show new wheel
- //double angle_WH = wheel.GetAngle();
- //wheel.SetAngle(angle_WH);
- wheel.SetX(X + 525 * Scale);
- wheel.SetY(Y + 300 * Scale);
- wheel.Show();
- DeleteObject(pen);
- DeleteObject(brush);
- }
- void Grinder::Hide()
- {
- isVisible = false;
- HBRUSH rubber = CreateSolidBrush(RGB(243, 243, 243));
- HPEN pen = CreatePen(PS_SOLID, 1, RGB(243, 243, 243));
- SelectObject(hdc, pen);
- SelectObject(hdc, rubber);
- MoveToEx(hdc, X, Y, NULL);
- Rectangle(hdc, X + 300, Y + 100 * Scale, X + 600 * Scale, Y + 360 * Scale);
- wheel.SetX(X + 525 * Scale);
- wheel.SetY(Y + 300 * Scale);
- wheel.Hide();
- DeleteObject(pen);
- DeleteObject(rubber);
- }
- double Grinder::GetAngleWH()
- {
- return wheel.GetAngle();
- }
- void Grinder::SetAngleWH(double _Angle)
- {
- wheel.SetAngle(_Angle);
- }
- void Grinder::ChangeSize(int delta)
- {
- Hide();
- Scale = delta;
- Show();
- }
- Rock::Rock(int _X, int _Y, int _Scale) : Point(_X, _Y)
- {
- X = _X;
- Y = _Y;
- Scale = _Scale;
- }
- Rock::~Rock() {}
- void Rock::Show()
- {
- HPEN pen;
- pen = CreatePen(PS_SOLID, 1, RGB(0, 255, 155));
- SelectObject(hdc, pen);
- HBRUSH brush;
- MoveToEx(hdc, X, Y, NULL);
- brush = CreateSolidBrush(RGB(155, 0, 0));
- SelectObject(hdc, brush);
- Ellipse(hdc, X - 150 * Scale, Y + 340 * Scale, X - 100 * Scale, Y + 380 * Scale);
- }
- void Rock::Hide()
- {
- isVisible = false;
- HBRUSH rubber = CreateSolidBrush(RGB(0, 0, 150));
- HPEN pen = CreatePen(PS_SOLID, 1, RGB(0, 0, 150));
- SelectObject(hdc, pen);
- SelectObject(hdc, rubber);
- MoveToEx(hdc, X, Y, NULL);
- Ellipse(hdc, X - 150 * Scale, Y + 340 * Scale, X - 100 * Scale, Y + 380 * Scale);
- }
- Wheel::Wheel(int _X, int _Y, int _Radius) : Point(_X, _Y)
- {
- Radius = _Radius;
- Angle = 0.0;
- }
- Wheel::~Wheel()
- {
- }
- void Wheel::Show()
- {
- HPEN pen;
- HBRUSH brush;
- //wheel
- SelectObject(hdc, GetStockObject(HOLLOW_BRUSH));
- pen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
- SelectObject(hdc, pen);
- Ellipse(hdc, X - 50 * Radius, Y + 50 * Radius, X + 50 * Radius, Y - 50 * Radius);
- brush = CreateSolidBrush(RGB(0, 0, 0));
- SelectObject(hdc, brush);
- Ellipse(hdc, X - 5 * Radius, Y + 5 * Radius, X + 5 * Radius, Y - 5 * Radius);
- SelectObject(hdc, GetStockObject(HOLLOW_BRUSH));
- pen = CreatePen(PS_SOLID, 3, RGB(0, 0, 0));
- int line = 115 * Radius;
- int lineRadius = line / 2;
- MoveToEx(hdc, X + lineRadius * cos(Angle * PI / 180), Y + lineRadius * sin(Angle * PI / 180), NULL);
- LineTo(hdc, X - lineRadius * cos(Angle * PI / 180), Y - lineRadius * sin(Angle * PI / 180));
- MoveToEx(hdc, X + lineRadius * cos((Angle + 90) * PI / 180), Y + lineRadius * sin((Angle + 90) * PI / 180), NULL);
- LineTo(hdc, X - lineRadius * cos((Angle + 90) * PI / 180), Y - lineRadius * sin((Angle + 90) * PI / 180));
- DeleteObject(pen);
- DeleteObject(brush);
- Angle += 10.0;
- }
- void Wheel::Hide()
- {
- HBRUSH rubber = CreateSolidBrush(RGB(243, 243, 243));
- HPEN pen = CreatePen(PS_SOLID, 3, RGB(243, 243, 243));
- SelectObject(hdc, pen);
- SelectObject(hdc, rubber);
- MoveToEx(hdc, X, Y, NULL);
- int line = 115 * Radius;
- int lineRadius = line / 2;
- MoveToEx(hdc, X + lineRadius * cos(Angle * PI / 180), Y + lineRadius * sin(Angle * PI / 180), NULL);
- LineTo(hdc, X - lineRadius * cos(Angle * PI / 180), Y - lineRadius * sin(Angle * PI / 180));
- MoveToEx(hdc, X + lineRadius * cos((Angle + 90) * PI / 180), Y + lineRadius * sin((Angle + 90) * PI / 180), NULL);
- LineTo(hdc, X - lineRadius * cos((Angle + 90) * PI / 180), Y - lineRadius * sin((Angle + 90) * PI / 180));
- DeleteObject(pen);
- DeleteObject(rubber);
- }
- void Wheel::SetAngle(double _Angle)
- {
- Angle = _Angle;
- }
- double Wheel::GetAngle()
- {
- return Angle;
- }
- River::River(int _X, int _Y, int _Scale) : Point(_X, _Y)
- {
- X = _X;
- Y = _Y;
- Scale = _Scale;
- }
- River::~River()
- {
- }
- void River::Show()
- {
- HBRUSH brush;
- brush = CreateSolidBrush(RGB(0, 0, 140));
- SelectObject(hdc, brush);
- Rectangle(hdc, X - 290 * Scale, Y + 320 * Scale, X + 660 * Scale, Y + 450 * Scale);
- }
- void River::Hide()
- {
- HBRUSH brush = CreateSolidBrush(RGB(243, 243, 243));
- HPEN pen = CreatePen(PS_SOLID, 3, RGB(243, 243, 243));
- SelectObject(hdc, pen);
- SelectObject(hdc, brush);
- Rectangle(hdc, X - 290 * Scale, Y + 320 * Scale, X + 660 * Scale, Y + 450 * Scale);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement