From 8b95c172a3b2f2864256dfecaa132f63b0a0cb15 Mon Sep 17 00:00:00 2001 From: F1rsTTeaM Date: Sat, 10 Feb 2024 18:11:15 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=B0=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectAirplaneWithRadar/DirectionType.cs | 29 +++ .../DrawingAirplaneWithRadar.cs | 242 ++++++++++++++++++ .../EntityAirplaneWithRadar.cs | 72 ++++++ .../Form1.Designer.cs | 39 --- .../ProjectAirplaneWithRadar/Form1.cs | 10 - .../FormAirplaneWithRadar.Designer.cs | 136 ++++++++++ .../FormAirplaneWithRadar.cs | 98 +++++++ ...{Form1.resx => FormAirplaneWithRadar.resx} | 50 ++-- .../ProjectAirplaneWithRadar/Program.cs | 2 +- .../ProjectAirplaneWithRadar.csproj | 15 ++ .../Properties/Resources.Designer.cs | 103 ++++++++ .../Properties/Resources.resx | 133 ++++++++++ .../Resources/Стрелка вверх.png | Bin 0 -> 3844 bytes .../Resources/Стрелка влево.png | Bin 0 -> 2401 bytes .../Resources/Стрелка вниз.png | Bin 0 -> 4051 bytes .../Resources/Стрелка вправо.png | Bin 0 -> 2288 bytes Стрелка вверх.png | Bin 0 -> 3844 bytes Стрелка влево.png | Bin 0 -> 2401 bytes Стрелка вниз.png | Bin 0 -> 4051 bytes Стрелка вправо.png | Bin 0 -> 2288 bytes 20 files changed, 854 insertions(+), 75 deletions(-) create mode 100644 AirplaneWithRadar/ProjectAirplaneWithRadar/DirectionType.cs create mode 100644 AirplaneWithRadar/ProjectAirplaneWithRadar/DrawingAirplaneWithRadar.cs create mode 100644 AirplaneWithRadar/ProjectAirplaneWithRadar/EntityAirplaneWithRadar.cs delete mode 100644 AirplaneWithRadar/ProjectAirplaneWithRadar/Form1.Designer.cs delete mode 100644 AirplaneWithRadar/ProjectAirplaneWithRadar/Form1.cs create mode 100644 AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.Designer.cs create mode 100644 AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.cs rename AirplaneWithRadar/ProjectAirplaneWithRadar/{Form1.resx => FormAirplaneWithRadar.resx} (93%) create mode 100644 AirplaneWithRadar/ProjectAirplaneWithRadar/Properties/Resources.Designer.cs create mode 100644 AirplaneWithRadar/ProjectAirplaneWithRadar/Properties/Resources.resx create mode 100644 AirplaneWithRadar/ProjectAirplaneWithRadar/Resources/Стрелка вверх.png create mode 100644 AirplaneWithRadar/ProjectAirplaneWithRadar/Resources/Стрелка влево.png create mode 100644 AirplaneWithRadar/ProjectAirplaneWithRadar/Resources/Стрелка вниз.png create mode 100644 AirplaneWithRadar/ProjectAirplaneWithRadar/Resources/Стрелка вправо.png create mode 100644 Стрелка вверх.png create mode 100644 Стрелка влево.png create mode 100644 Стрелка вниз.png create mode 100644 Стрелка вправо.png diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/DirectionType.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/DirectionType.cs new file mode 100644 index 0000000..46519a9 --- /dev/null +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/DirectionType.cs @@ -0,0 +1,29 @@ + +namespace ProjectAirplaneWithRadar +{ + /// + /// Направление перемещения + /// + public enum DirectionType + { + /// + /// Вверх + /// + Up = 1, + + /// + /// Вниз + /// + Down = 2, + + /// + /// Влево + /// + Left = 3, + + /// + /// Вправо + /// + Right = 4 + } +} diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/DrawingAirplaneWithRadar.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/DrawingAirplaneWithRadar.cs new file mode 100644 index 0000000..e5f24dc --- /dev/null +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/DrawingAirplaneWithRadar.cs @@ -0,0 +1,242 @@ + + +namespace ProjectAirplaneWithRadar +{ + /// + /// Класс, отвечающий за прорисовку и перемещение объекта-сущности + /// + public class DrawingAirplaneWithRadar + { + /// + /// Класс-сущность + /// + public EntityAirplaneWithRadar? EntityAirplaneWithRadar { get; private set; } + + /// + /// Ширина окна + /// + private int? _pictureWidth; + + /// + /// Высота окна + /// + private int? _pictureHeight; + + /// + /// Левая координата прорисовки + /// + private int? _startPosX; + + /// + /// Верхняя кооридната прорисовки + /// + private int? _startPosY; + + /// + /// Ширина прорисовки автомобиля + /// + public const int PlaneWidth = 260; + + /// + /// Высота прорисовки автомобиля + /// + public const int PlaneHeight = 95; + + public const int FormPadding = 30; + + /// + /// Инициализация свойств + /// + /// Скорость + /// Вес + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия обвеса + /// Признак наличия антикрыла + /// Признак наличия гоночной полосы + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool bodyKit, bool wing, bool sportLine) + { + EntityAirplaneWithRadar = new EntityAirplaneWithRadar(); + EntityAirplaneWithRadar.Init(speed, weight, bodyColor, additionalColor, bodyKit, wing, sportLine); + _pictureWidth = null; + _pictureHeight = null; + _startPosX = null; + _startPosY = null; + } + + /// + /// Установка границ поля + /// + /// Ширина поля + /// Высота поля + /// true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах + public bool SetPictureSize(int width, int height) + { + // TODO проверка, что объект "влезает" в размеры поля + // если влезает, сохраняем границы и корректируем позицию объекта, если она была уже установлена + _pictureWidth = width; + _pictureHeight = height; + if (_startPosX is null || _startPosY is null) + { + return false; + } + return SetPosition(_startPosX!.Value, _startPosY!.Value); + } + + /// + /// Установка позиции + /// + /// Координата X + /// Координата Y + public bool SetPosition(int x, int y) + { + if (!_pictureHeight.HasValue || !_pictureWidth.HasValue) + { + return true; + } + + int height = _pictureHeight.Value - PlaneHeight; + int width = _pictureWidth.Value - PlaneWidth; + + // TODO если при установке объекта в эти координаты, он будет "выходить" за границы формы + // то надо изменить координаты, чтобы он оставался в этих границах + _startPosX = x < 0 ? 0 : x > width ? width : x; + _startPosY = y < 0 ? 0 : y > height ? height : y; + return (x < 0 || x > width || y < 0 || y > height) == false; + } + + /// + /// Изменение направления перемещения + /// + /// Направление + /// true - перемещене выполнено, false - перемещение невозможно + public bool MoveTransport(DirectionType direction) + { + if (EntityAirplaneWithRadar == null || !_startPosX.HasValue || !_startPosY.HasValue) + { + return false; + } + + int step = (int)EntityAirplaneWithRadar.Step; + switch (direction) + { + //влево + case DirectionType.Left: + if (_startPosX.Value - step > 0) + { + _startPosX -= step; + } + break; + //вверх + case DirectionType.Up: + if (_startPosY.Value - step > 0) + { + _startPosY -= step; + } + break; + // вправо + case DirectionType.Right: + if (_startPosX.Value + step < _pictureWidth - PlaneWidth) + { + _startPosX += step; + } + break; + //вниз + case DirectionType.Down: + if (_startPosY.Value + step < _pictureHeight - PlaneHeight) + { + _startPosY += step; + } + break; + default: + return false; + } + return true; + } + + /// + /// Прорисовка объекта + /// + /// + public void DrawTransport(Graphics g) + { + if (EntityAirplaneWithRadar == null || !_startPosX.HasValue || !_startPosY.HasValue) + { + return; + } + + + Pen pen = new(Color.Black); + Brush additionalBrush = new SolidBrush(EntityAirplaneWithRadar.AdditionalColor); + + //Шасси + if (EntityAirplaneWithRadar.Wheels) + { + //Задняя стойка + g.DrawRectangle(pen, _startPosX.Value + 70, _startPosY.Value + 90, 5, 10); + g.FillRectangle(additionalBrush, _startPosX.Value + 70, _startPosY.Value + 90, 5, 10); + + g.DrawEllipse(pen, _startPosX.Value + 60, _startPosY.Value + 100, 10, 10); + g.FillEllipse(additionalBrush, _startPosX.Value + 60, _startPosY.Value + 100, 10, 10); + + g.DrawEllipse(pen, _startPosX.Value + 75, _startPosY.Value + 100, 10, 10); + g.FillEllipse(additionalBrush, _startPosX.Value + 75, _startPosY.Value + 100, 10, 10); + + //Передняя стойка + g.DrawRectangle(pen, _startPosX.Value + 180, _startPosY.Value + 90, 5, 10); + g.FillRectangle(additionalBrush, _startPosX.Value + 180, _startPosY.Value + 90, 5, 10); + + g.DrawEllipse(pen, _startPosX.Value + 177, _startPosY.Value + 100, 10, 10); + g.FillEllipse(additionalBrush, _startPosX.Value + 177, _startPosY.Value + 100, 10, 10); + } + + //Ракета воздух-воздух + if (EntityAirplaneWithRadar.Rocket) + { + g.DrawRectangle(pen, _startPosX.Value + 100, _startPosY.Value + 80, 2, 5); + g.FillRectangle(additionalBrush, _startPosX.Value + 100, _startPosY.Value + 80, 2, 5); + + g.DrawRectangle(pen, _startPosX.Value + 140, _startPosY.Value + 80, 2, 5); + g.FillRectangle(additionalBrush, _startPosX.Value + 140, _startPosY.Value + 80, 2, 5); + + g.DrawRectangle(pen, _startPosX.Value + 80, _startPosY.Value + 85, 80, 5); + g.FillRectangle(additionalBrush, _startPosX.Value + 80, _startPosY.Value + 85, 80, 5); + } + + //Корпус + g.DrawRectangle(pen, _startPosX.Value + 10, _startPosY.Value + 60,200,30); + + //Хвост + Point[] points = { + new Point(_startPosX.Value + 10, _startPosY.Value + 10), + new Point(_startPosX.Value + 10, _startPosY.Value + 60), + new Point(_startPosX.Value + 60, _startPosY.Value + 60) + }; + g.DrawPolygon(pen, points); + + //Кабина + Point[] points2 = { + new Point(_startPosX.Value + 210, _startPosY.Value + 55), + new Point(_startPosX.Value + 210, _startPosY.Value + 75), + new Point(_startPosX.Value + 260, _startPosY.Value + 75) + }; + g.DrawPolygon(pen, points2); + Point[] points3 = { + new Point(_startPosX.Value + 210, _startPosY.Value + 75), + new Point(_startPosX.Value + 210, _startPosY.Value + 95), + new Point(_startPosX.Value + 260, _startPosY.Value + 75) + }; + g.DrawPolygon(pen, points3); + + //Крыло + Brush brBlack = new SolidBrush(Color.Black); + g.DrawEllipse(pen, _startPosX.Value + 70, _startPosY.Value + 70, 100, 10); + g.FillEllipse(brBlack, _startPosX.Value + 70, _startPosY.Value + 70, 100, 10); + + //Хвостовой элерон + g.DrawEllipse(pen, _startPosX.Value, _startPosY.Value + 55, 40, 10); + g.FillEllipse(brBlack, _startPosX.Value, _startPosY.Value + 55, 40, 10); + + } + } +} diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/EntityAirplaneWithRadar.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/EntityAirplaneWithRadar.cs new file mode 100644 index 0000000..adb6f0c --- /dev/null +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/EntityAirplaneWithRadar.cs @@ -0,0 +1,72 @@ + + +namespace ProjectAirplaneWithRadar +{ + /// + /// Класс-сущность "Самолет с радаром" + /// + public class EntityAirplaneWithRadar + { + /// + /// Скорость + /// + 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 Wheels { get; private set; } + + /// + /// Признак (опция) наличия антикрыла + /// + public bool Rocket { get; private set; } + + /// + /// Признак (опция) наличия гоночной полосы + /// + public bool SportLine { get; private set; } + + /// + /// Шаг перемещения автомобиля + /// + public double Step => Speed * 100 / Weight; + + /// + /// Инициализация полей объекта-класса спортивного автомобиля + /// + /// Скорость + /// Вес автомобиля + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия обвеса + /// Признак наличия антикрыла + /// Признак наличия гоночной полосы + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool wheels, bool rocket, bool sportLine) + { + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + Wheels = wheels; + + Rocket = rocket; + SportLine = sportLine; + } + } +} diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/Form1.Designer.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/Form1.Designer.cs deleted file mode 100644 index 5b62ddf..0000000 --- a/AirplaneWithRadar/ProjectAirplaneWithRadar/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace ProjectAirplaneWithRadar -{ - 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/AirplaneWithRadar/ProjectAirplaneWithRadar/Form1.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/Form1.cs deleted file mode 100644 index da7ae80..0000000 --- a/AirplaneWithRadar/ProjectAirplaneWithRadar/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace ProjectAirplaneWithRadar -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.Designer.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.Designer.cs new file mode 100644 index 0000000..cb83a8f --- /dev/null +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.Designer.cs @@ -0,0 +1,136 @@ +namespace ProjectAirplaneWithRadar +{ + partial class FormAirplaneWithRadar + { + /// + /// 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() + { + pictureBoxAirplaneWithRadar = new PictureBox(); + buttonCreate = new Button(); + buttonLeft = new Button(); + buttonRight = new Button(); + buttonDown = new Button(); + buttonUp = new Button(); + ((System.ComponentModel.ISupportInitialize)pictureBoxAirplaneWithRadar).BeginInit(); + SuspendLayout(); + // + // pictureBoxAirplaneWithRadar + // + pictureBoxAirplaneWithRadar.Dock = DockStyle.Fill; + pictureBoxAirplaneWithRadar.Location = new Point(0, 0); + pictureBoxAirplaneWithRadar.Name = "pictureBoxAirplaneWithRadar"; + pictureBoxAirplaneWithRadar.Size = new Size(987, 477); + pictureBoxAirplaneWithRadar.TabIndex = 0; + pictureBoxAirplaneWithRadar.TabStop = false; + // + // buttonCreate + // + buttonCreate.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonCreate.Location = new Point(12, 442); + buttonCreate.Name = "buttonCreate"; + buttonCreate.Size = new Size(75, 23); + buttonCreate.TabIndex = 1; + buttonCreate.Text = "Создать"; + buttonCreate.UseVisualStyleBackColor = true; + buttonCreate.Click += ButtonCreate_Click; + // + // buttonLeft + // + buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonLeft.BackgroundImage = Properties.Resources.Стрелка_влево; + buttonLeft.BackgroundImageLayout = ImageLayout.Stretch; + buttonLeft.Location = new Point(858, 430); + buttonLeft.Name = "buttonLeft"; + buttonLeft.Size = new Size(35, 35); + buttonLeft.TabIndex = 2; + buttonLeft.UseVisualStyleBackColor = true; + buttonLeft.Click += ButtonMove_Click; + // + // buttonRight + // + buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonRight.BackgroundImage = Properties.Resources.Стрелка_вправо; + buttonRight.BackgroundImageLayout = ImageLayout.Stretch; + buttonRight.Location = new Point(940, 430); + buttonRight.Name = "buttonRight"; + buttonRight.Size = new Size(35, 35); + buttonRight.TabIndex = 3; + buttonRight.UseVisualStyleBackColor = true; + buttonRight.Click += ButtonMove_Click; + // + // buttonDown + // + buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonDown.BackgroundImage = Properties.Resources.Стрелка_вниз; + buttonDown.BackgroundImageLayout = ImageLayout.Stretch; + buttonDown.Location = new Point(899, 430); + buttonDown.Name = "buttonDown"; + buttonDown.Size = new Size(35, 35); + buttonDown.TabIndex = 4; + buttonDown.UseVisualStyleBackColor = true; + buttonDown.Click += ButtonMove_Click; + // + // buttonUp + // + buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonUp.BackgroundImage = Properties.Resources.Стрелка_вверх; + buttonUp.BackgroundImageLayout = ImageLayout.Stretch; + buttonUp.Location = new Point(899, 389); + buttonUp.Name = "buttonUp"; + buttonUp.Size = new Size(35, 35); + buttonUp.TabIndex = 5; + buttonUp.UseVisualStyleBackColor = true; + buttonUp.Click += ButtonMove_Click; + // + // FormAirplaneWithRadar + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(987, 477); + Controls.Add(buttonUp); + Controls.Add(buttonDown); + Controls.Add(buttonRight); + Controls.Add(buttonLeft); + Controls.Add(buttonCreate); + Controls.Add(pictureBoxAirplaneWithRadar); + Name = "FormAirplaneWithRadar"; + Text = "Самолет с радаром"; + Load += FormAirplaneWithRadar_Load; + ResizeEnd += FormAirplaneWithRadar_ResizeEnd; + ((System.ComponentModel.ISupportInitialize)pictureBoxAirplaneWithRadar).EndInit(); + ResumeLayout(false); + } + + #endregion + + private PictureBox pictureBoxAirplaneWithRadar; + private Button buttonCreate; + private Button buttonLeft; + private Button buttonRight; + private Button buttonDown; + private Button buttonUp; + } +} \ No newline at end of file diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.cs new file mode 100644 index 0000000..9824c7a --- /dev/null +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.cs @@ -0,0 +1,98 @@ +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 ProjectAirplaneWithRadar +{ + public partial class FormAirplaneWithRadar : Form + { + private DrawingAirplaneWithRadar? _drawingAirplaneWithRadar; + public FormAirplaneWithRadar() + { + InitializeComponent(); + MinimumSize = new Size(DrawingAirplaneWithRadar.PlaneWidth + 40, DrawingAirplaneWithRadar.PlaneHeight + 40 + DrawingAirplaneWithRadar.FormPadding); + } + + private void ButtonCreate_Click(object sender, EventArgs e) + { + Random random = new(); + _drawingAirplaneWithRadar = new DrawingAirplaneWithRadar(); + _drawingAirplaneWithRadar.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)), Convert.ToBoolean(random.Next(0, 2))); + _drawingAirplaneWithRadar.SetPictureSize(pictureBoxAirplaneWithRadar.Width, pictureBoxAirplaneWithRadar.Height); + _drawingAirplaneWithRadar.SetPosition(random.Next(10, 100), random.Next(10, 100)); + + UpdatePlane(); + } + + private void UpdatePlane() + { + Bitmap bmp = new(pictureBoxAirplaneWithRadar.Width, pictureBoxAirplaneWithRadar.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawingAirplaneWithRadar?.DrawTransport(gr); + pictureBoxAirplaneWithRadar.Image = bmp; + } + private void ButtonMove_Click(object sender, EventArgs e) + { + if (_drawingAirplaneWithRadar == null) + { + return; + } + + if (sender is Button button) + { + string name = button.Name; + DirectionType result; + switch (name) + { + case "buttonUp": + result = DirectionType.Up; + break; + case "buttonDown": + result = DirectionType.Down; + break; + case "buttonLeft": + result = DirectionType.Left; + break; + case "buttonRight": + result = DirectionType.Right; + break; + + default: + return; + + } + _drawingAirplaneWithRadar.MoveTransport(result); + + UpdatePlane(); + + } + + + } + + private void FormAirplaneWithRadar_ResizeEnd(object sender, EventArgs e) + { + if (_drawingAirplaneWithRadar is null) + return; + bool outOfRange = _drawingAirplaneWithRadar.SetPictureSize(pictureBoxAirplaneWithRadar.Width, pictureBoxAirplaneWithRadar.Height); + if (outOfRange) + { + UpdatePlane(); + } + } + + private void FormAirplaneWithRadar_Load(object sender, EventArgs e) + { + + } + } +} diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/Form1.resx b/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.resx similarity index 93% rename from AirplaneWithRadar/ProjectAirplaneWithRadar/Form1.resx rename to AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.resx index 1af7de1..af32865 100644 --- a/AirplaneWithRadar/ProjectAirplaneWithRadar/Form1.resx +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.resx @@ -1,17 +1,17 @@  - diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/Program.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/Program.cs index f11c631..3ed1af4 100644 --- a/AirplaneWithRadar/ProjectAirplaneWithRadar/Program.cs +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/Program.cs @@ -11,7 +11,7 @@ namespace ProjectAirplaneWithRadar // 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 FormAirplaneWithRadar()); } } } \ No newline at end of file diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/ProjectAirplaneWithRadar.csproj b/AirplaneWithRadar/ProjectAirplaneWithRadar/ProjectAirplaneWithRadar.csproj index 663fdb8..af03d74 100644 --- a/AirplaneWithRadar/ProjectAirplaneWithRadar/ProjectAirplaneWithRadar.csproj +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/ProjectAirplaneWithRadar.csproj @@ -8,4 +8,19 @@ enable + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/Properties/Resources.Designer.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/Properties/Resources.Designer.cs new file mode 100644 index 0000000..b929f75 --- /dev/null +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace ProjectAirplaneWithRadar.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("ProjectAirplaneWithRadar.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; + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Стрелка_вверх { + get { + object obj = ResourceManager.GetObject("Стрелка вверх", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Стрелка_влево { + get { + object obj = ResourceManager.GetObject("Стрелка влево", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Стрелка_вниз { + get { + object obj = ResourceManager.GetObject("Стрелка вниз", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Стрелка_вправо { + get { + object obj = ResourceManager.GetObject("Стрелка вправо", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/Properties/Resources.resx b/AirplaneWithRadar/ProjectAirplaneWithRadar/Properties/Resources.resx new file mode 100644 index 0000000..a770afc --- /dev/null +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/Properties/Resources.resx @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + ..\Resources\Стрелка вверх.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Стрелка влево.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Стрелка вниз.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Стрелка вправо.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/Resources/Стрелка вверх.png b/AirplaneWithRadar/ProjectAirplaneWithRadar/Resources/Стрелка вверх.png new file mode 100644 index 0000000000000000000000000000000000000000..f2b56d8451ca82b6329a14313a6c2484ca4e2081 GIT binary patch literal 3844 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 literal 0 HcmV?d00001 diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/Resources/Стрелка вниз.png b/AirplaneWithRadar/ProjectAirplaneWithRadar/Resources/Стрелка вниз.png new file mode 100644 index 0000000000000000000000000000000000000000..8cc271faa31f1e7c20fce1f3280366b9d0321f64 GIT binary patch literal 4051 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 literal 0 HcmV?d00001 diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/Resources/Стрелка вправо.png b/AirplaneWithRadar/ProjectAirplaneWithRadar/Resources/Стрелка вправо.png new file mode 100644 index 0000000000000000000000000000000000000000..543f8dc3b3777e0bedfa703558309690a70cb5f6 GIT binary patch literal 2288 zcmeHIX;c$e6rKPcO@@Jf}Z9=ghqO?tS0=zVE&t zle68Ah+VXN5dZ*KAClJ&0MJ50EkI8jS(=MiwIT~Dc?Z!0;0R5Ik&O<;eXBbFROVu4 zBhg50`*z0XX-+I?cHxEze{tw*24MvobO+BM7 zG59Gb>4f7(hcCwM$DY|*e>S*o%~MMiXrQ`vg8T6^U!G7^Wy;bZIIa6( z+VVE-!O45cbhWfc`JjJj_QH$aO_Y9Sz5 zT@hFJ8d(KRgoU_eP3L9kVDu_(2G$TOnW`(-e=Q7k8`1AmsN2`zMK{kH9@v5x)h_8y zkHw3s!Mt>1yr@b_PItnKI4is98FE#IK8+8T%bZf-CHX@DR6eg)R{(yb7kSAa1f)blUQ&J6lYy z!(gbQC-r5LY&3x?ur=>B#OP5_!yLMaf$$IJe)h4l1S7oYDtSh$pHr`!m5e2&3AFCk z8}_ez8@-ax3;`R)O0M&O*Qck}pD z$YDXqJ7oA%2~TV0+_q|3HN?!>{Y%Om=G{gG!eFTtGOfBgW}ET`^;qoR6l#dxx{{6# zz8Wj#t=^d;bQa=$UjL@qvbnKUz0QL;e4r2$%SpEm+|-Xw%rEr%2Ozs>ls2KhE*nn4(i`<-*84GnlU7H`n)5M>+xmTA`VfetdsE$t zd&=5$q)CGu-cwwU#qE=qB!?k|e1yV|H&WXZ;kbxi;gWceRmiXdxx)op;W#x#?8<^3 zDcXzQq_}D#??*`19D>g8k_N%`3&9em@53?W zj8eAzb?<^9vwvp5sEKo|_`d74;X^W$`C43F6TDTV5h;238l-4fK}Gu{*^r>)mGW9d z>6STu$ z^L}Pj8}`7|CWsrZQkun+VJZiHbP%LWL%DILa18G!20`Ou3=I~h&z=`d!*Okg;IwLt zk!JFBg9mHIJYbcj6}eYmK@(m44!IVrBfUX>vV`%yUyyWCLF>$U;B*d(e;kq7(!uxV zt({n^wwII8rk-$6iZK%!yL98eq=O&XvUbW&L3>nL)@Tc|QmZ%6eBj!Tmrn1ffXbc7 zMMN<_9V5wf3W0&a&sBPA3x}5npEPAd%l6dL1BR-h6+xS=e(&5T^_||cxzXnNz&BD7 zlRF4a@7z5+`=}vjF{UKpfH(Eo#e3@Y8}&_`Q)g?6ie7*geog*np9oK{R4#bWp9VxM aE{1d>SE+VYuJD@BfPK9Eyf_}akNgSMM7h}j literal 0 HcmV?d00001 diff --git a/Стрелка вверх.png b/Стрелка вверх.png new file mode 100644 index 0000000000000000000000000000000000000000..f2b56d8451ca82b6329a14313a6c2484ca4e2081 GIT binary patch literal 3844 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 literal 0 HcmV?d00001 diff --git a/Стрелка вниз.png b/Стрелка вниз.png new file mode 100644 index 0000000000000000000000000000000000000000..8cc271faa31f1e7c20fce1f3280366b9d0321f64 GIT binary patch literal 4051 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 literal 0 HcmV?d00001 diff --git a/Стрелка вправо.png b/Стрелка вправо.png new file mode 100644 index 0000000000000000000000000000000000000000..543f8dc3b3777e0bedfa703558309690a70cb5f6 GIT binary patch literal 2288 zcmeHIX;c$e6rKPcO@@Jf}Z9=ghqO?tS0=zVE&t zle68Ah+VXN5dZ*KAClJ&0MJ50EkI8jS(=MiwIT~Dc?Z!0;0R5Ik&O<;eXBbFROVu4 zBhg50`*z0XX-+I?cHxEze{tw*24MvobO+BM7 zG59Gb>4f7(hcCwM$DY|*e>S*o%~MMiXrQ`vg8T6^U!G7^Wy;bZIIa6( z+VVE-!O45cbhWfc`JjJj_QH$aO_Y9Sz5 zT@hFJ8d(KRgoU_eP3L9kVDu_(2G$TOnW`(-e=Q7k8`1AmsN2`zMK{kH9@v5x)h_8y zkHw3s!Mt>1yr@b_PItnKI4is98FE#IK8+8T%bZf-CHX@DR6eg)R{(yb7kSAa1f)blUQ&J6lYy z!(gbQC-r5LY&3x?ur=>B#OP5_!yLMaf$$IJe)h4l1S7oYDtSh$pHr`!m5e2&3AFCk z8}_ez8@-ax3;`R)O0M&O*Qck}pD z$YDXqJ7oA%2~TV0+_q|3HN?!>{Y%Om=G{gG!eFTtGOfBgW}ET`^;qoR6l#dxx{{6# zz8Wj#t=^d;bQa=$UjL@qvbnKUz0QL;e4r2$%SpEm+|-Xw%rEr%2Ozs>ls2KhE*nn4(i`<-*84GnlU7H`n)5M>+xmTA`VfetdsE$t zd&=5$q)CGu-cwwU#qE=qB!?k|e1yV|H&WXZ;kbxi;gWceRmiXdxx)op;W#x#?8<^3 zDcXzQq_}D#??*`19D>g8k_N%`3&9em@53?W zj8eAzb?<^9vwvp5sEKo|_`d74;X^W$`C43F6TDTV5h;238l-4fK}Gu{*^r>)mGW9d z>6STu$ z^L}Pj8}`7|CWsrZQkun+VJZiHbP%LWL%DILa18G!20`Ou3=I~h&z=`d!*Okg;IwLt zk!JFBg9mHIJYbcj6}eYmK@(m44!IVrBfUX>vV`%yUyyWCLF>$U;B*d(e;kq7(!uxV zt({n^wwII8rk-$6iZK%!yL98eq=O&XvUbW&L3>nL)@Tc|QmZ%6eBj!Tmrn1ffXbc7 zMMN<_9V5wf3W0&a&sBPA3x}5npEPAd%l6dL1BR-h6+xS=e(&5T^_||cxzXnNz&BD7 zlRF4a@7z5+`=}vjF{UKpfH(Eo#e3@Y8}&_`Q)g?6ie7*geog*np9oK{R4#bWp9VxM aE{1d>SE+VYuJD@BfPK9Eyf_}akNgSMM7h}j literal 0 HcmV?d00001