diff --git a/ProjectA/ProjectA.sln b/AirBus/AirBus.sln similarity index 60% rename from ProjectA/ProjectA.sln rename to AirBus/AirBus.sln index 6f1c81f..313ff76 100644 --- a/ProjectA/ProjectA.sln +++ b/AirBus/AirBus.sln @@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 17 VisualStudioVersion = 17.12.35527.113 d17.12 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectA", "ProjectA\ProjectA.csproj", "{1B38AB8E-8721-4385-992F-F63A960D58A4}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AirBus", "AirBus\AirBus.csproj", "{56F7567B-5AB2-4640-BBA7-7A3322BA2BCE}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -11,10 +11,10 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {1B38AB8E-8721-4385-992F-F63A960D58A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {1B38AB8E-8721-4385-992F-F63A960D58A4}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1B38AB8E-8721-4385-992F-F63A960D58A4}.Release|Any CPU.ActiveCfg = Release|Any CPU - {1B38AB8E-8721-4385-992F-F63A960D58A4}.Release|Any CPU.Build.0 = Release|Any CPU + {56F7567B-5AB2-4640-BBA7-7A3322BA2BCE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {56F7567B-5AB2-4640-BBA7-7A3322BA2BCE}.Debug|Any CPU.Build.0 = Debug|Any CPU + {56F7567B-5AB2-4640-BBA7-7A3322BA2BCE}.Release|Any CPU.ActiveCfg = Release|Any CPU + {56F7567B-5AB2-4640-BBA7-7A3322BA2BCE}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/AirBus/AirBus/AirBus.csproj b/AirBus/AirBus/AirBus.csproj new file mode 100644 index 0000000..af03d74 --- /dev/null +++ b/AirBus/AirBus/AirBus.csproj @@ -0,0 +1,26 @@ + + + + WinExe + net8.0-windows + enable + true + enable + + + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + + \ No newline at end of file diff --git a/AirBus/AirBus/DirectionType.cs b/AirBus/AirBus/DirectionType.cs new file mode 100644 index 0000000..73cb7b3 --- /dev/null +++ b/AirBus/AirBus/DirectionType.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AirBus +{ + /// + /// Направление перемещения + /// + public enum DirectionType + { + /// + /// Вверх + /// + Up = 1, + + /// + /// Вниз + /// + Down = 2, + + /// + /// Влево + /// + Left = 3, + + /// + /// Вправо + /// + Right = 4, + } +} diff --git a/AirBus/AirBus/DrawingAirBus.cs b/AirBus/AirBus/DrawingAirBus.cs new file mode 100644 index 0000000..090d81f --- /dev/null +++ b/AirBus/AirBus/DrawingAirBus.cs @@ -0,0 +1,241 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AirBus +{ + /// + /// Класс отвечающий за прорисовку и перемещение объекта-сущности + /// + public class DrawingAirBus + { + /// + /// Класс-сущность + /// + public EntityAirBus? EntityAirBus { get; set; } + + /// + /// Ширина окна + /// + private int? _pictureWidth; + + /// + /// Высота окна + /// + private int? _pictureHeight; + + /// + /// Левая координата прорисовки самолёта + /// + private int? _startPosX; + + /// + /// Верхняя координата прорисовки самолёта + /// + private int? _startPosY; + + /// + /// Ширина прорисовки самолёта + /// + private readonly int _drawingAirBusWidth = 175; + + /// + /// Ширина прорисовки самолёта + /// + private readonly int _drawingAirBusHeight = 72; + + /// + /// Инициализация свойств + /// + /// Скорость + /// Вес + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия дополнительных пары двигателей + /// Признак наличия второго этажа + /// Признак наличия линии на крыле + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, + bool extraEngine, bool secondFloor) + { + EntityAirBus = new EntityAirBus(); + EntityAirBus.Init(speed, weight, bodyColor, additionalColor, extraEngine, secondFloor); + _pictureHeight = null; + _pictureWidth = null; + _startPosX = null; + _startPosY = null; + } + + /// + /// Установка границ поля + /// + /// Ширина поля + /// Высота поля + /// true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах + public bool SetPictureSize(int width, int height) + { + if (width < _drawingAirBusWidth || height < _drawingAirBusHeight) + { + return false; + } + _pictureHeight = height; + _pictureWidth = width; + return true; + } + + /// + /// Установка позиции + /// + /// Координата x + /// Координата y + public void SetPosition(int x, int y) + { + if (!_pictureWidth.HasValue || !_pictureHeight.HasValue) + { + return; + } + if (x > _pictureHeight.Value || y > _pictureWidth.Value || x < 0 || y < 0) + { + _startPosY = 0; + _startPosX = 0; + } + else + { + _startPosX = x; + _startPosY = y; + } + } + + /// + /// Изменение направления перемещения + /// + /// Направление + /// true - перемещение выполнено, false - перемещение невозможно + public bool MoveTransport(DirectionType direction) + { + if (EntityAirBus == null || !_startPosX.HasValue || !_startPosY.HasValue) + { + return false; + } + + switch(direction) + { + case DirectionType.Left: + if(_startPosX.Value - EntityAirBus.Step > 0) + { + _startPosX -= (int)EntityAirBus.Step; + } + return true; + + case DirectionType.Up: + if(_startPosY.Value - EntityAirBus.Step > 0) + { + _startPosY -= (int)EntityAirBus.Step; + } + return true; + + case DirectionType.Right: + if(_startPosX.Value + EntityAirBus.Step + _drawingAirBusWidth < _pictureWidth.Value ) + { + _startPosX += (int)EntityAirBus.Step; + } + return true; + case DirectionType.Down: + if(_startPosY + EntityAirBus.Step + _drawingAirBusHeight < _pictureHeight.Value ) + { + _startPosY += (int)EntityAirBus.Step; + } + return true; + default: + return false; + } + } + + /// + /// Прорисовка объекта + /// + /// + public void DrawTransport(Graphics g) + { + if (EntityAirBus == null || !_startPosX.HasValue || !_startPosY.HasValue) + { + return; + } + + Pen pen = new(Color.Black, 1); + Brush additionalBrush = new SolidBrush(EntityAirBus.AdditionalColor); + Brush br = new SolidBrush(EntityAirBus.BodyColor); + Brush brBlack = new SolidBrush(Color.Black); + + //точки для заднего крыла + Point[] pointsBackWing = new Point[] + { + new Point(_startPosX.Value + 5, _startPosY.Value + 5), + new Point(_startPosX.Value + 35, _startPosY.Value + 35), + new Point(_startPosX.Value + 5, _startPosY.Value + 35) + }; + //точки для носа + Point[] pointsNose = new Point[] + { + new Point(_startPosX.Value + 150, _startPosY.Value + 60), + new Point(_startPosX.Value + 175, _startPosY.Value + 47), + new Point(_startPosX.Value + 150, _startPosY.Value + 35) + }; + + //заливки + g.FillPolygon(br, pointsBackWing); // заднее крыло + g.FillPie(br, _startPosX.Value, _startPosY.Value + 35, 25, 25, 90, 180); // задняя полуокружность + g.FillRectangle(br, _startPosX.Value + 10, _startPosY.Value + 35, 140, 25); // корпус + g.FillPolygon(br, pointsNose); // нос + g.FillEllipse(br, _startPosX.Value + 40, _startPosY.Value + 65, 7, 7); // заднее шасси + g.FillEllipse(br, _startPosX.Value + 30, _startPosY.Value + 65, 7, 7); // заднее шасси + g.FillEllipse(br, _startPosX.Value + 140, _startPosY.Value + 65, 7, 7); // переднее шасси + + //контуры + g.DrawPolygon(pen, pointsBackWing); // заднее крыло + g.DrawArc(pen, _startPosX.Value, _startPosY.Value + 35, 25, 25, 90, 180); // задняя полуокружность + g.DrawLine(pen, new Point(_startPosX.Value + 10, _startPosY.Value + 60), new Point(_startPosX.Value + 150, _startPosY.Value + 60)); // нижний контур корпуса + g.DrawLine(pen, new Point(_startPosX.Value + 35, _startPosY.Value + 35), new Point(_startPosX.Value + 150, _startPosY.Value + 35)); // верхний контур корпуса + g.DrawPolygon(pen, pointsNose); // нос + g.DrawLine(pen, new Point(_startPosX.Value + 150, _startPosY.Value + 47), new Point(_startPosX.Value + 175, _startPosY.Value + 47)); // окна на носе + g.DrawEllipse(pen, _startPosX.Value + 40, _startPosY.Value + 65, 7, 7); // заднее шасси + g.DrawEllipse(pen, _startPosX.Value + 30, _startPosY.Value + 65, 7, 7); // заднее шасси + g.DrawEllipse(pen, _startPosX.Value + 140, _startPosY.Value + 65, 7, 7); // переднее шасси + g.DrawLine(pen, new Point(_startPosX.Value + 38, _startPosY.Value + 60), new Point(_startPosX.Value + 38, _startPosY.Value + 70)); // стойка заднего шасси + g.DrawLine(pen, new Point(_startPosX.Value + 39, _startPosY.Value + 60), new Point(_startPosX.Value + 39, _startPosY.Value + 70)); // стойка заднего шасси + g.DrawLine(pen, new Point(_startPosX.Value + 144, _startPosY.Value + 60), new Point(_startPosX.Value + 144, _startPosY.Value + 65)); // стойка переднего шасси + + // чёрные заливки + g.FillEllipse(brBlack, _startPosX.Value, _startPosY.Value + 30, 10, 10); // заднее крыло + g.FillEllipse(brBlack, _startPosX.Value + 15, _startPosY.Value + 30, 10, 10); + g.FillRectangle(brBlack, _startPosX.Value + 5, _startPosY.Value + 30, 15, 10); + + g.FillEllipse(brBlack, _startPosX.Value + 50, _startPosY.Value + 45, 7, 7); //крыло + g.FillRectangle(brBlack, _startPosX.Value + 54, _startPosY.Value + 45, 55, 7); + g.FillEllipse(brBlack, _startPosX.Value + 105, _startPosY.Value + 45, 7, 7); + + if(EntityAirBus.ExtraEngine) // двигатели опционально + { + + g.FillEllipse(additionalBrush, _startPosX.Value + 75, _startPosY.Value + 51, 10, 10); + g.FillEllipse(additionalBrush, _startPosX.Value + 80, _startPosY.Value + 51, 10, 10); + g.DrawArc(pen, _startPosX.Value + 75, _startPosY.Value + 51, 10, 10, 90, 180); + g.DrawArc(pen, _startPosX.Value + 80, _startPosY.Value + 51, 10, 10, -90, 180); + g.DrawLine(pen, new Point(_startPosX.Value + 80, _startPosY.Value + 51), new Point(_startPosX.Value + 85, _startPosY.Value + 51)); + g.DrawLine(pen, new Point(_startPosX.Value + 80, _startPosY.Value + 61), new Point(_startPosX.Value + 85, _startPosY.Value + 61)); + } + + if(EntityAirBus.SecondFloor) // пассажирский второй этаж + { + + g.FillRectangle(additionalBrush, _startPosX.Value + 90, _startPosY.Value + 25, 50, 10); + g.DrawRectangle(pen, _startPosX.Value + 90, _startPosY.Value + 25, 50, 10); + + + } + + + } + } +} diff --git a/AirBus/AirBus/EntityAirBus.cs b/AirBus/AirBus/EntityAirBus.cs new file mode 100644 index 0000000..c3d4a69 --- /dev/null +++ b/AirBus/AirBus/EntityAirBus.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AirBus +{ + /// + /// Класс-сущность "Аэробус" + /// + public class EntityAirBus + { + /// + /// Скорость + /// + public int Speed { get; private set; } + + /// + /// Вес + /// + public double Weight { get; private set; } + + /// + /// Цвет корпуса + /// + public Color BodyColor { get; private set; } + + /// + /// Дополнительный цвет для опциональных элементов + /// + public Color AdditionalColor { get; private set; } + + /// + /// Признак (опция) наличия дополнительной пары двигателей + /// + public bool ExtraEngine { get; private set; } + + /// + /// Признак (опция) наличия второго этажа + /// + public bool SecondFloor { get; private set; } + + + + + /// + /// Шаг перемещения самолёта + /// + public double Step => Speed * 100 / Weight; + + /// + /// Инициализация полей объекта-класса самолёта "Аэробус" + /// + /// Скорость + /// Вес + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия дополнительных пары двигателей + /// Признак наличия второго этажа + + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, + bool extraEngine, bool secondFloor) + { + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + ExtraEngine = extraEngine; + SecondFloor = secondFloor; + } + } +} diff --git a/AirBus/AirBus/FormAirBus.Designer.cs b/AirBus/AirBus/FormAirBus.Designer.cs new file mode 100644 index 0000000..b8f5577 --- /dev/null +++ b/AirBus/AirBus/FormAirBus.Designer.cs @@ -0,0 +1,138 @@ +namespace AirBus +{ + partial class FormAirBus + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAirBus)); + pictureBoxAirBus = new PictureBox(); + buttonCreateAirBus = new Button(); + buttonLeft = new Button(); + buttonUp = new Button(); + buttonDown = new Button(); + buttonRight = new Button(); + ((System.ComponentModel.ISupportInitialize)pictureBoxAirBus).BeginInit(); + SuspendLayout(); + // + // pictureBoxAirBus + // + pictureBoxAirBus.Dock = DockStyle.Fill; + pictureBoxAirBus.Location = new Point(0, 0); + pictureBoxAirBus.Name = "pictureBoxAirBus"; + pictureBoxAirBus.Size = new Size(1004, 468); + pictureBoxAirBus.TabIndex = 0; + pictureBoxAirBus.TabStop = false; + // + // buttonCreateAirBus + // + buttonCreateAirBus.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonCreateAirBus.Location = new Point(12, 427); + buttonCreateAirBus.Name = "buttonCreateAirBus"; + buttonCreateAirBus.Size = new Size(94, 29); + buttonCreateAirBus.TabIndex = 1; + buttonCreateAirBus.Text = "Создать"; + buttonCreateAirBus.UseVisualStyleBackColor = true; + buttonCreateAirBus.Click += buttonCreateAirBus_Click; + // + // buttonLeft + // + buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonLeft.BackgroundImage = (Image)resources.GetObject("buttonLeft.BackgroundImage"); + buttonLeft.BackgroundImageLayout = ImageLayout.Stretch; + buttonLeft.Location = new Point(875, 421); + buttonLeft.Name = "buttonLeft"; + buttonLeft.Size = new Size(35, 35); + buttonLeft.TabIndex = 2; + buttonLeft.UseVisualStyleBackColor = true; + buttonLeft.Click += ButtonMove_Click; + // + // buttonUp + // + buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonUp.BackgroundImage = (Image)resources.GetObject("buttonUp.BackgroundImage"); + buttonUp.BackgroundImageLayout = ImageLayout.Stretch; + buttonUp.Location = new Point(916, 380); + buttonUp.Name = "buttonUp"; + buttonUp.Size = new Size(35, 35); + buttonUp.TabIndex = 2; + buttonUp.TextAlign = ContentAlignment.BottomLeft; + buttonUp.UseVisualStyleBackColor = true; + buttonUp.Click += ButtonMove_Click; + // + // buttonDown + // + buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonDown.BackgroundImage = (Image)resources.GetObject("buttonDown.BackgroundImage"); + buttonDown.BackgroundImageLayout = ImageLayout.Stretch; + buttonDown.Location = new Point(916, 421); + buttonDown.Name = "buttonDown"; + buttonDown.Size = new Size(35, 35); + buttonDown.TabIndex = 2; + buttonDown.TextAlign = ContentAlignment.BottomLeft; + buttonDown.UseVisualStyleBackColor = true; + buttonDown.Click += ButtonMove_Click; + // + // buttonRight + // + buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonRight.BackgroundImage = (Image)resources.GetObject("buttonRight.BackgroundImage"); + buttonRight.BackgroundImageLayout = ImageLayout.Stretch; + buttonRight.Location = new Point(957, 421); + buttonRight.Name = "buttonRight"; + buttonRight.Size = new Size(35, 35); + buttonRight.TabIndex = 2; + buttonRight.TextAlign = ContentAlignment.BottomLeft; + buttonRight.UseVisualStyleBackColor = true; + buttonRight.Click += ButtonMove_Click; + // + // FormAirBus + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(1004, 468); + Controls.Add(buttonRight); + Controls.Add(buttonDown); + Controls.Add(buttonUp); + Controls.Add(buttonLeft); + Controls.Add(buttonCreateAirBus); + Controls.Add(pictureBoxAirBus); + Name = "FormAirBus"; + Text = "Аэробус"; + ((System.ComponentModel.ISupportInitialize)pictureBoxAirBus).EndInit(); + ResumeLayout(false); + } + + #endregion + + private PictureBox pictureBoxAirBus; + private Button buttonCreateAirBus; + private Button buttonLeft; + private Button buttonUp; + private Button buttonDown; + private Button buttonRight; + } +} \ No newline at end of file diff --git a/AirBus/AirBus/FormAirBus.cs b/AirBus/AirBus/FormAirBus.cs new file mode 100644 index 0000000..9c193aa --- /dev/null +++ b/AirBus/AirBus/FormAirBus.cs @@ -0,0 +1,77 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace AirBus; + +public partial class FormAirBus : Form +{ + private DrawingAirBus? _drawingAirBus; + public FormAirBus() + { + InitializeComponent(); + } + + private void Draw() + { + if (_drawingAirBus == null) + { + return; + } + + Bitmap bmp = new(pictureBoxAirBus.Width, pictureBoxAirBus.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawingAirBus.DrawTransport(gr); + pictureBoxAirBus.Image = bmp; + } + private void buttonCreateAirBus_Click(object sender, EventArgs e) + { + Random random = new(); + _drawingAirBus = new DrawingAirBus(); + _drawingAirBus.Init(random.Next(100, 300), random.Next(1000, 3000), + Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), + Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)), + Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2))); + _drawingAirBus.SetPictureSize(pictureBoxAirBus.Width, pictureBoxAirBus.Height); + _drawingAirBus.SetPosition(random.Next(10, 100), random.Next(10, 100)); + + Draw(); + } + + private void ButtonMove_Click(object sender, EventArgs e) + { + if (_drawingAirBus == null) + { + return; + } + + string name = ((Button)sender)?.Name ?? String.Empty; + bool result = false; + switch (name) + { + case "buttonUp": + result = _drawingAirBus.MoveTransport(DirectionType.Up); + break; + case "buttonDown": + result = _drawingAirBus.MoveTransport(DirectionType.Down); + break; + case "buttonLeft": + result = _drawingAirBus.MoveTransport(DirectionType.Left); + break; + case "buttonRight": + result = _drawingAirBus.MoveTransport(DirectionType.Right); + break; + } + + if(result) + { + Draw(); + } + } +} diff --git a/AirBus/AirBus/FormAirBus.resx b/AirBus/AirBus/FormAirBus.resx new file mode 100644 index 0000000..1880bbb --- /dev/null +++ b/AirBus/AirBus/FormAirBus.resx @@ -0,0 +1,294 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + /9j/4AAQSkZJRgABAQEAeAB4AAD/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAEAAAAAAAD/2wBD + AAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0M + DgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM + DAwMDAwMDAwMDAwMDAz/wAARCABkAGQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQF + BgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAk + M2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG + h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx + 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA + AQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5 + OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmq + srO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9 + /KKKKACiiml+nGcnFAAX6cZycV+IX/ByF/wcff8ACghr37Pn7Pevf8XA/eaf4y8ZafN/yKvVZNPsZFP/ + ACEOqyzqf9E5RD9p3NaH/ByF/wAHH3/Cghr37Pn7Pevf8XA/eaf4y8ZafN/yKvVZNPsZFP8AyEOqyzqf + 9E5RD9p3Nafzh7ueRmgD+hz/AIMmviv4p+Jn/DU//CR+JfEGv/aNV0DXpf7S1Ga683Ubz+1ftl63mMc3 + E/kQebKfnk8mPcTsXH7v1+AP/BjH/wA3Rf8Acqf+5qv3+oAKKKKACiiigAooooAKKKaX6cZycUABfpxn + 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 + 81hhG2R7UTDbv1foooAKKKKACiiigAooooA//9k= + + + + + /9j/4AAQSkZJRgABAQEAeAB4AAD/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAEAAAAAAAD/2wBD + AAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0M + DgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM + DAwMDAwMDAwMDAwMDAz/wAARCABkAGQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQF + BgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAk + M2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG + h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx + 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA + AQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5 + OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmq + srO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9 + /KKKKACiiigAr8Qf+DkP/g5C/wCFA/29+z3+z3r3/FwP3mn+MvGWnzf8ir1WTT7GRT/yEOqyzqf9E5RD + 9p3NaH/ByH/wchf8KB/t79nv9nvXv+LgfvNP8ZeMtPm/5FXqsmn2Min/AJCHVZZ1P+icoh+07mtP5waA + PsH/AIJtf8Fsvjh/wTg/aNPjXTPFfiDxn4f13VbjVPF/hbW9YnmsPFUt00Zu7qQuX8vUH8qNhehWlDIo + fzYjJDJ/Wx+wv+3T8Of+Civ7OWj/ABQ+F+sHVfD+q5huLeZVjv8ARbxVUy2V5EGbyriPcuVyVZWSRGeK + SORv4Zq+of8AglH/AMFWfiN/wSX/AGjI/GvguX+1fD+qeVbeKfCtzcNHYeJbNWJCMQG8q4j3O0Nwqlom + ZgQ8Uk0MoB/a3RXjn7C/7dPw5/4KK/s5aP8AFD4X6wdV8P6rmG4t5lWO/wBFvFVTLZXkQZvKuI9y5XJV + lZJEZ4pI5G9joAKKKKACiiigAooooAK/EH/g5D/4OQv+FA/29+z3+z3r3/FwP3mn+MvGWnzf8ir1WTT7 + GRT/AMhDqss6n/ROUQ/adzWh/wAHIf8Awchf8KB/t79nv9nvXv8Ai4H7zT/GXjLT5v8AkVeqyafYyKf+ + Qh1WWdT/AKJyiH7Tua0/nBoAKKKKACiiigD6h/4JR/8ABVn4jf8ABJf9oyPxr4Ll/tXw/qnlW3inwrc3 + DR2HiWzViQjEBvKuI9ztDcKpaJmYEPFJNDL/AF8fsL/t0/Dn/gor+zlo/wAUPhfrB1Xw/quYbi3mVY7/ + AEW8VVMtleRBm8q4j3LlclWVkkRnikjkb+GavqH/AIJR/wDBVn4jf8El/wBoyPxr4Ll/tXw/qnlW3inw + rc3DR2HiWzViQjEBvKuI9ztDcKpaJmYEPFJNDKAf2t0V45+wv+3T8Of+Civ7OWj/ABQ+F+sHVfD+q5hu + LeZVjv8ARbxVUy2V5EGbyriPcuVyVZWSRGeKSORvY6ACiiigAr8Qf+DkP/g5C/4UD/b37Pf7Pevf8XA/ + eaf4y8ZafN/yKvVZNPsZFP8AyEOqyzqf9E5RD9p3NaH/AAch/wDByF/woH+3v2e/2e9e/wCLgfvNP8Ze + MtPm/wCRV6rJp9jIp/5CHVZZ1P8AonKIftO5rT+cGgAooooAKKKKACiiigAooooA+of+CUf/AAVZ+I3/ + AASX/aMj8a+C5f7V8P6p5Vt4p8K3Nw0dh4ls1YkIxAbyriPc7Q3CqWiZmBDxSTQy/wBfH7C/7dPw5/4K + K/s5aP8AFD4X6wdV8P6rmG4t5lWO/wBFvFVTLZXkQZvKuI9y5XJVlZJEZ4pI5G/hmr6h/wCCUf8AwVZ+ + I3/BJf8AaMj8a+C5f7V8P6p5Vt4p8K3Nw0dh4ls1YkIxAbyriPc7Q3CqWiZmBDxSTQygH9rdFeN/sM/t + 1/Dr/gop+zno3xP+F+tDU/D+q5huLeeMJf6NeKqmWyvIlZvKuI9y5XJVlZJEZ4pI5GKAPyF+LH/Bk7/w + sn4p+JvEf/DU3iC6Ov6rdal5uveDP7W1WXzpnk3Xd5/aEf2m4O7Mk3lp5j7m2Lu2jn/+IGP/AKuh/wDM + b/8A30r9/qKAPwB/4gY/+rof/Mb/AP30r8Aa/v8AK/gDoAKKKKACiiigAr9AP+CGf/BDL/h9Cfijj4o/ + 8K2Hw1/snj/hG/7Z/tH7d9t/6erfy9n2P/a3eZ/Dt5/P+v3+/wCDGP8A5ui/7lT/ANzVAB/xAx/9XQ/+ + Y3/++lH/ABAx/wDV0P8A5jf/AO+lfv8AUUAfk9+xZ/wa4n9k34W6h4c/4a//AGodL+26rJqXlfDfxB/w + helNuhhj3S2ebvzLj91hpvMG5BEuweXuYr9YaKACiiigAr+AOv7/ACv4A6ACiiigAooooAK/f7/gxj/5 + ui/7lT/3NV+ANfv9/wAGMf8AzdF/3Kn/ALmqAP3+ooooAKKKKACiiigAr+AOv7/K/gDoAKKKKACiiigA + r9/v+DGP/m6L/uVP/c1X4A1+/wB/wYx/83Rf9yp/7mqAP3+ooooAKKKKACiiigAr+Fb9t74LaV+zR+2f + 8XfhzoU9/d6J4B8a6z4b0+e/dJLqa3s76a3ieVkVEaQpGpYqigknCgcUUUAeWUUUUAFFFFABX9Jn/Bk1 + 8F9L8PfsX/GT4jQ3GoPrfinxnD4cu4HdPssdvptlFcQPGoUOJGfVLgOS5BCRYVSGLFFAH7YUUUUAFFFF + AH//2Q== + + + + + /9j/4AAQSkZJRgABAQEAeAB4AAD/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAEAAAAAAAD/2wBD + AAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0M + DgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM + DAwMDAwMDAwMDAwMDAz/wAARCABkAGQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQF + BgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAk + M2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG + h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx + 8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQA + AQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5 + OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmq + srO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9 + /KKKKAEdc8+gr+BXxd4t1Xx74p1LXNd1LUNa1vWbqW+1DUL+5e5ur+4lcvLNLK5LSSO7MzMxJYkkkk5r + ++tuhr+ANupoAKKKKACiiigBVbb2Br+g7/gxt8XarfeFv2ltCm1PUJdE0278N39pp73Lta2txOmqJPNH + ETsSSRLa3V2ABYQRAkhFx/PhX7/f8GMf/N0X/cqf+5qgD9/qKKKACiiigAooooAG6Gv4A26mv7/G6Gv4 + A26mgAooooAKKKKACv3+/wCDGP8A5ui/7lT/ANzVfgDX7/f8GMf/ADdF/wByp/7mqAP3+ooooAKKKKAC + ikVwwz0pcj1FAA3Q1/AG3U1/f2Tmv4BWFACUUUUAFFFFABX7/f8ABjH/AM3Rf9yp/wC5qvwBr9/v+DGM + 4/4ai/7lT/3NUAfv9RRkeopC4BAz1oAWikD59aKAP4xP+C2P/BNn4j/8E4v24PFWmeNT4g1zw/401W/1 + vwt4v1S9bUZvFVm9wXMtzdlE8zUE8xBdKVVhK+8AxyxSSfIBJHev7mf26P2F/hx/wUR/Zy1j4X/E7Rv7 + U8P6ria2uINsd9ot2qssV7aSlW8q4j3Ng4KsrPG6vFJJG38gv/BVn/glH8R/+CTP7R0vgrxrF/afh/VP + NufCviq2t2isfEtmrAF1BJ8q4j3Is1uWZomZSGkikhlkAPmDcaCcjHYUhGKKACiiigAooooAKM4oooAM + n1NORjzikC5r+jz/AINu/wDg27/4UB/YP7Qn7Qmg/wDFwP3eoeDfBuoQf8ip0aPUL6Nh/wAhDo0UDD/R + OHcfadq2gAv/AARD/wCDeL4j+Hv2H7XUvih8a/2oPgF4g8WarLrdv4Q+H3jttBhtLOS3t0il1C1Ns/l6 + g/lMXXcWSIW6OElSSNCv292iigAIzXj37dH7C/w4/wCCiP7OWsfC/wCJ2jf2p4f1XE1tcQbY77RbtVZY + r20lKt5VxHubBwVZWeN1eKSSNvYqQjNAH8Un/BVn/glH8R/+CTP7R0vgrxrF/afh/VPNufCviq2t2isf + EtmrAF1BJ8q4j3Is1uWZomZSGkikhlk+XyMV/c1+3R+wv8OP+CiP7OWsfC/4naN/anh/VcTW1xBtjvtF + u1VlivbSUq3lXEe5sHBVlZ43V4pJI2/kF/4Ks/8ABKP4j/8ABJn9o6XwV41i/tPw/qnm3PhXxVbW7RWP + iWzVgC6gk+VcR7kWa3LM0TMpDSRSQyyAHy/RQRiigAooooAKULmgLmv6PP8Ag27/AODbv/hQH9g/tCft + CaD/AMXA/d6h4N8G6hB/yKnRo9Qvo2H/ACEOjRQMP9E4dx9p2raAB/wbd/8ABt3/AMKA/sH9oT9oTQf+ + Lgfu9Q8G+DdQg/5FTo0eoX0bD/kIdGigYf6Jw7j7TtW0/b8DFAGKKACiiigAooooAQjNePft0fsL/Dj/ + AIKI/s5ax8L/AInaN/anh/VcTW1xBtjvtFu1VlivbSUq3lXEe5sHBVlZ43V4pJI29ipCM0AfxSf8FWf+ + CUfxH/4JM/tHS+CvGsX9p+H9U8258K+Kra3aKx8S2asAXUEnyriPcizW5ZmiZlIaSKSGWT5fIxX9zX7d + H7C/w4/4KI/s5ax8L/ido39qeH9VxNbXEG2O+0W7VWWK9tJSreVcR7mwcFWVnjdXikkjb+QX/gq1/wAE + o/iP/wAEmf2jpfBXjWL+1PD+q+bc+FfFNtbtHY+JbNWALqCT5VxHuRZrcszRMykNJFJDNIAfL9KFzRsP + 4V/R5/wbd/8ABt3/AMKA/sH9oT9oTQf+Lgfu9Q8G+DdQg/5FTo0eoX0bD/kIdGigYf6Jw7j7TtW0AD/g + 27/4Nu/+FAf2D+0J+0JoP/FwP3eoeDfBuoQf8ip0aPUL6Nh/yEOjRQMP9E4dx9p2raft+BigDFFABRRR + QAUUUUAFFFFABRRRQAj8D8K8e/bm/YW+HH/BRT9m/Wvhh8T9G/tTw/qn762uICsV9ot4issV7ZylW8q4 + j3NhsFWVnjdXikkjYooA/KL/AIN4f+CInwP8P/tHfGv4n6la6/4s8QfAL41+JPh94Qt9buLeextItOa0 + NpqckSQp5moJ5smJCfKRisiQpJHHIn7fgYoooAKKKKACiiigAooooA//2Q== + + + + + /9j/4AAQSkZJRgABAQEAeAB4AAD/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAEAAAAAAAD/2wBD + AAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0M + DgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM + DAwMDAwMDAwMDAwMDAz/wAARCABkAGQDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQF + BgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAk + M2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWG + h4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx + 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 + xxyJ+3sB3RKx/iANFFAD6KKKACiiigAooooA/9k= + + + \ No newline at end of file diff --git a/ProjectA/ProjectA/Program.cs b/AirBus/AirBus/Program.cs similarity index 86% rename from ProjectA/ProjectA/Program.cs rename to AirBus/AirBus/Program.cs index 3d9cc1b..618767c 100644 --- a/ProjectA/ProjectA/Program.cs +++ b/AirBus/AirBus/Program.cs @@ -1,4 +1,4 @@ -namespace ProjectA +namespace AirBus { internal static class Program { @@ -11,7 +11,7 @@ namespace ProjectA // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new Form1()); + Application.Run(new FormAirBus()); } } } \ No newline at end of file diff --git a/AirBus/AirBus/Properties/Resources.Designer.cs b/AirBus/AirBus/Properties/Resources.Designer.cs new file mode 100644 index 0000000..9feedfc --- /dev/null +++ b/AirBus/AirBus/Properties/Resources.Designer.cs @@ -0,0 +1,63 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace AirBus.Properties { + using System; + + + /// + /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д. + /// + // Этот класс создан автоматически классом StronglyTypedResourceBuilder + // с помощью такого средства, как ResGen или Visual Studio. + // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen + // с параметром /str или перестройте свой проект VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("AirBus.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Перезаписывает свойство CurrentUICulture текущего потока для всех + /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + } +} diff --git a/ProjectA/ProjectA/Form1.resx b/AirBus/AirBus/Properties/Resources.resx similarity index 100% rename from ProjectA/ProjectA/Form1.resx rename to AirBus/AirBus/Properties/Resources.resx diff --git a/AirBus/Pictures/arrow.jpg b/AirBus/Pictures/arrow.jpg new file mode 100644 index 0000000..6160e19 Binary files /dev/null and b/AirBus/Pictures/arrow.jpg differ diff --git a/AirBus/Pictures/arrow_down.jpg b/AirBus/Pictures/arrow_down.jpg new file mode 100644 index 0000000..f31fccb Binary files /dev/null and b/AirBus/Pictures/arrow_down.jpg differ diff --git a/AirBus/Pictures/arrow_left.jpg b/AirBus/Pictures/arrow_left.jpg new file mode 100644 index 0000000..7cccd26 Binary files /dev/null and b/AirBus/Pictures/arrow_left.jpg differ diff --git a/AirBus/Pictures/arrow_right.jpg b/AirBus/Pictures/arrow_right.jpg new file mode 100644 index 0000000..d2e4f1e Binary files /dev/null and b/AirBus/Pictures/arrow_right.jpg differ diff --git a/AirBus/Pictures/arrow_up.jpg b/AirBus/Pictures/arrow_up.jpg new file mode 100644 index 0000000..0a6697c Binary files /dev/null and b/AirBus/Pictures/arrow_up.jpg differ diff --git a/ProjectA/ProjectA/Form1.Designer.cs b/ProjectA/ProjectA/Form1.Designer.cs deleted file mode 100644 index 2b262b4..0000000 --- a/ProjectA/ProjectA/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace ProjectA -{ - partial class Form1 - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "Form1"; - } - - #endregion - } -} diff --git a/ProjectA/ProjectA/Form1.cs b/ProjectA/ProjectA/Form1.cs deleted file mode 100644 index 4a19dc0..0000000 --- a/ProjectA/ProjectA/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace ProjectA -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} diff --git a/ProjectA/ProjectA/ProjectA.csproj b/ProjectA/ProjectA/ProjectA.csproj deleted file mode 100644 index 663fdb8..0000000 --- a/ProjectA/ProjectA/ProjectA.csproj +++ /dev/null @@ -1,11 +0,0 @@ - - - - WinExe - net8.0-windows - enable - true - enable - - - \ No newline at end of file