using System; using System.Collections.Generic; using System.Linq; using System.Net.Http.Headers; using System.Security.Cryptography.X509Certificates; using System.Text; using System.Threading.Tasks; namespace AirBus { public class DrawningAirBus { public EntityAirBus? EntityAirBus { get; private set; } // ширина и высота картинки private int pictureWidht; private int pictureHeight; // стартовые точки private int startPosX; private int startPosY; private readonly int airbusWidth = 100; private readonly int airbusHeight = 37; public bool Init(int speed, double weight, Color bodyColor, Color additionalColor, int width, int height) { pictureWidht = width; pictureHeight = height; EntityAirBus = new EntityAirBus(); EntityAirBus.Init(speed, weight, bodyColor, additionalColor); return true; } //установка позиции public void SetPosition(int x, int y) { if (x >= 0 && x + airbusWidth <= pictureWidht && y >= 0 && y + airbusHeight <= pictureHeight) { startPosX = x; startPosY = y; } } // изменение направления движения public void MoveTransport(Direction direction) { if (EntityAirBus == null) { return; } switch (direction) { case Direction.Left: if (startPosX - EntityAirBus.Step > 0) { startPosX -= (int)EntityAirBus.Step; } break; case Direction.Right: if (startPosX + EntityAirBus.Step <= pictureWidht) { startPosX += (int)EntityAirBus.Step; } break; case Direction.Up: if (startPosY - EntityAirBus.Step > 0) { startPosY -= (int)EntityAirBus.Step; } break; case Direction.Down: if (startPosY + EntityAirBus.Step <= pictureHeight) { startPosY += (int)EntityAirBus.Step; } break; } } // РИСОВАНИЕ САМОЛЁТА public void DrawTransport(Graphics g) { if ( startPosX < 0 || startPosY < 0 || EntityAirBus == null) { return; } Pen pen = new(Color.Black); Brush additionalBrush = new SolidBrush(EntityAirBus.AdditionalColor); Brush additionalBrush2 = new SolidBrush(Color.Black); // нос Point point1 = new Point(startPosX + 74, startPosY + 15); Point point2 = new Point(startPosX + 88, startPosY + 22); Point point3 = new Point(startPosX + 74, startPosY + 27); Point[] PointsNose = { point1, point2, point3 }; g.DrawPolygon(pen, PointsNose); g.FillPolygon(additionalBrush, PointsNose); // хвост Point point4 = new Point(startPosX + 4, startPosY + 17); Point point5 = new Point(startPosX + 3, startPosY); Point point6 = new Point(startPosX + 21, startPosY + 17); Point[] PointsTail = { point4, point5, point6 }; g.DrawPolygon(pen, PointsTail); g.FillPolygon(additionalBrush, PointsTail); // тело g.DrawRectangle(pen, startPosX + 2, startPosY + 14, 72, 14); g.FillRectangle(additionalBrush, startPosX + 2, startPosY + 14, 72, 14); //шасси g.DrawEllipse(pen, startPosX + 21, startPosY + 30, 3, 3); g.FillEllipse(additionalBrush, startPosX + 21, startPosY + 30, 3, 3); g.DrawEllipse(pen, startPosX + 25, startPosY + 30, 3, 3); g.FillEllipse(additionalBrush, startPosX + 25, startPosY + 30, 3, 3); g.DrawEllipse(pen, startPosX + 70, startPosY + 30, 3, 3); g.FillEllipse(additionalBrush, startPosX + 70, startPosY + 30, 3, 3); // Крыло g.DrawEllipse(pen, startPosX + 24, startPosY + 20, 31, 4); g.FillEllipse(additionalBrush, startPosX + 24, startPosY + 20, 31, 4); // у хвоста g.DrawEllipse(pen, startPosX, startPosY + 14, 14, 5); g.FillEllipse(additionalBrush, startPosX, startPosY + 14, 14, 5); } public void ChangeBorders(int width, int height) { pictureWidht = width; pictureHeight = height; if (pictureWidht <= airbusWidth || pictureHeight <= airbusWidth) { pictureWidht = null; pictureHeight = null; return; } if ( startPosX + airbusWidth > pictureWidht) { startPosX = pictureWidht.Value - airbusWidth; } if ( startPosY + airbusHeight > pictureHeight) { startPosY = pictureHeight.Value - airbusHeight; } } } }