diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/DrawingAirplaneWithRadar.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/DrawingAirplaneWithRadar.cs index e5f24dc..7db7d69 100644 --- a/AirplaneWithRadar/ProjectAirplaneWithRadar/DrawingAirplaneWithRadar.cs +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/DrawingAirplaneWithRadar.cs @@ -1,6 +1,4 @@ - - -namespace ProjectAirplaneWithRadar +namespace ProjectAirplaneWithRadar { /// /// Класс, отвечающий за прорисовку и перемещение объекта-сущности @@ -33,16 +31,15 @@ namespace ProjectAirplaneWithRadar private int? _startPosY; /// - /// Ширина прорисовки автомобиля + /// Ширина прорисовки самолета /// - public const int PlaneWidth = 260; + public readonly int PlaneWidth = 260; /// - /// Высота прорисовки автомобиля + /// Высота прорисовки самолета /// - public const int PlaneHeight = 95; - - public const int FormPadding = 30; + public readonly int PlaneHeight = 95; + /// /// Инициализация свойств @@ -51,13 +48,12 @@ namespace ProjectAirplaneWithRadar /// Вес /// Основной цвет /// Дополнительный цвет - /// Признак наличия обвеса - /// Признак наличия антикрыла - /// Признак наличия гоночной полосы - public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool bodyKit, bool wing, bool sportLine) + /// Шасси + /// Ракета + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool wheels, bool rocket) { EntityAirplaneWithRadar = new EntityAirplaneWithRadar(); - EntityAirplaneWithRadar.Init(speed, weight, bodyColor, additionalColor, bodyKit, wing, sportLine); + EntityAirplaneWithRadar.Init(speed, weight, bodyColor, additionalColor, wheels, rocket); _pictureWidth = null; _pictureHeight = null; _startPosX = null; @@ -76,11 +72,19 @@ namespace ProjectAirplaneWithRadar // если влезает, сохраняем границы и корректируем позицию объекта, если она была уже установлена _pictureWidth = width; _pictureHeight = height; - if (_startPosX is null || _startPosY is null) - { - return false; - } - return SetPosition(_startPosX!.Value, _startPosY!.Value); + //if (PlaneWidth < _pictureWidth || PlaneHeight < _pictureHeight) + //{ + // return false; + //} + //if ((_startPosX + PlaneWidth) < _pictureWidth) + //{ + // _startPosX -= PlaneWidth + _pictureWidth; + //} + //if ((_startPosY + PlaneHeight) < _pictureHeight) + //{ + // _startPosY -= PlaneHeight + _pictureHeight; + //} + return true; } /// @@ -88,21 +92,28 @@ namespace ProjectAirplaneWithRadar /// /// Координата X /// Координата Y - public bool SetPosition(int x, int y) + public void SetPosition(int x, int y) { if (!_pictureHeight.HasValue || !_pictureWidth.HasValue) { - return true; + return; } + //TODO (10:52) + _startPosX = x; + _startPosY = y; + //if (PlaneWidth < _pictureWidth || PlaneHeight < _pictureHeight) + //{ + // return; + //} + //if ((_startPosX + PlaneWidth) < _pictureWidth) + //{ + // _startPosX -= PlaneWidth + _pictureWidth; + //} + //if ((_startPosY + PlaneHeight) < _pictureHeight) + //{ + // _startPosY -= PlaneHeight + _pictureHeight; + //} - 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; } /// @@ -136,7 +147,7 @@ namespace ProjectAirplaneWithRadar break; // вправо case DirectionType.Right: - if (_startPosX.Value + step < _pictureWidth - PlaneWidth) + if (_startPosX.Value + step < _pictureWidth - PlaneWidth) { _startPosX += step; } diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/EntityAirplaneWithRadar.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/EntityAirplaneWithRadar.cs index adb6f0c..655fa44 100644 --- a/AirplaneWithRadar/ProjectAirplaneWithRadar/EntityAirplaneWithRadar.cs +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/EntityAirplaneWithRadar.cs @@ -1,6 +1,4 @@ - - -namespace ProjectAirplaneWithRadar +namespace ProjectAirplaneWithRadar { /// /// Класс-сущность "Самолет с радаром" @@ -33,14 +31,9 @@ namespace ProjectAirplaneWithRadar public bool Wheels { get; private set; } /// - /// Признак (опция) наличия антикрыла + /// Признак (опция) наличия ракеты /// - public bool Rocket { get; private set; } - - /// - /// Признак (опция) наличия гоночной полосы - /// - public bool SportLine { get; private set; } + public bool Rocket { get; private set; } /// /// Шаг перемещения автомобиля @@ -48,25 +41,22 @@ namespace ProjectAirplaneWithRadar public double Step => Speed * 100 / Weight; /// - /// Инициализация полей объекта-класса спортивного автомобиля + /// Инициализация полей объекта-класса самолета с радаром /// /// Скорость - /// Вес автомобиля + /// Вес /// Основной цвет /// Дополнительный цвет - /// Признак наличия обвеса - /// Признак наличия антикрыла - /// Признак наличия гоночной полосы - public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool wheels, bool rocket, bool sportLine) + /// Шасси + /// Ракета + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool wheels, bool rocket) { Speed = speed; Weight = weight; BodyColor = bodyColor; AdditionalColor = additionalColor; Wheels = wheels; - - Rocket = rocket; - SportLine = sportLine; + Rocket = rocket; } } } diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.Designer.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.Designer.cs index cb83a8f..0206783 100644 --- a/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.Designer.cs +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.Designer.cs @@ -118,8 +118,6 @@ Controls.Add(pictureBoxAirplaneWithRadar); Name = "FormAirplaneWithRadar"; Text = "Самолет с радаром"; - Load += FormAirplaneWithRadar_Load; - ResizeEnd += FormAirplaneWithRadar_ResizeEnd; ((System.ComponentModel.ISupportInitialize)pictureBoxAirplaneWithRadar).EndInit(); ResumeLayout(false); } diff --git a/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.cs b/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.cs index 9824c7a..6642d98 100644 --- a/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.cs +++ b/AirplaneWithRadar/ProjectAirplaneWithRadar/FormAirplaneWithRadar.cs @@ -1,24 +1,28 @@ -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 +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(); @@ -26,20 +30,33 @@ namespace ProjectAirplaneWithRadar _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))); + 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() { + if (_drawingAirplaneWithRadar == null) + { + return; + } 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) @@ -73,26 +90,7 @@ namespace ProjectAirplaneWithRadar _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) - { - - } + } } }