diff --git a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/DrawingSPAU.cs b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/DrawingSPAU.cs index 9b74014..2bcd6ce 100644 --- a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/DrawingSPAU.cs +++ b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/DrawingSPAU.cs @@ -27,11 +27,11 @@ namespace SelfPropelledArtilleryUnit /// /// Левая координата прорисовки автомобиля /// - private int _startPosX; + protected int _startPosX; /// /// Верхняя кооридната прорисовки автомобиля /// - private int _startPosY; + protected int _startPosY; /// /// Ширина прорисовки автомобиля /// @@ -46,28 +46,22 @@ namespace SelfPropelledArtilleryUnit /// Скорость /// Вес /// Цвет кузова - /// Дополнительный цвет - /// Признак наличия залповой установки /// Ширина картинки /// Высота картинки /// true - объект создан, false - проверка не пройдена,нельзя создать объект в этих размерах - public bool Init(int speed, double weight, Color bodyColor, Color - additionalColor, bool bodyKit, int width, int height) + public DrawingSPAU(int speed, double weight, Color bodyColor, int width, int height) { _pictureWidth = width; _pictureHeight = height; if (_carHeight >= height) { - return false; + return; } if (_carWidth >= width) { - return false; + return; } - EntitySPAU = new EntitySPAU(); - EntitySPAU.Init(speed, weight, bodyColor, additionalColor, - bodyKit); - return true; + EntitySPAU = new EntitySPAU(speed, weight, bodyColor); } /// /// Установка позиции @@ -132,6 +126,11 @@ namespace SelfPropelledArtilleryUnit /// /// Прорисовка объекта /// + public virtual void DrawingZU(Graphics g) + {} + /// + /// Прорисовка объекта + /// /// public void DrawTransport(Graphics g) { @@ -140,14 +139,9 @@ namespace SelfPropelledArtilleryUnit return; } Pen penBlack = new(Color.Black); - Brush additionalBrush = new SolidBrush(EntitySPAU.AdditionalColor); - // обвесы - if (EntitySPAU.BodyKit) - { - //залповая усутановка - g.FillRectangle(additionalBrush, _startPosX + 15, _startPosY + 20, 20, 40); - g.DrawLine(penBlack, _startPosX + 5, _startPosY + 20, _startPosX + 15, _startPosY + 25); - } + + DrawingZU(g); + //гусеницы Brush brBlack = new SolidBrush(Color.Black); Brush brBody = new SolidBrush(EntitySPAU.BodyColor); diff --git a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/DrawingSPAUchild.cs b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/DrawingSPAUchild.cs new file mode 100644 index 0000000..dcc0142 --- /dev/null +++ b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/DrawingSPAUchild.cs @@ -0,0 +1,33 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SelfPropelledArtilleryUnit +{ + public class DrawingSPAUchild : DrawingSPAU + { + public new EntitySPAUchild EntitySPAU; + /// Дополнительный цвет + /// Признак наличия залповой установки + + public override void DrawingZU(Graphics g) + { + base.DrawingZU(g); + Pen penBlack = new Pen(Color.Black); + Brush additionalBrush = new SolidBrush(EntitySPAU.AdditionalColor); + // обвесы + if (EntitySPAU.BodyKit) + { + //залповая усутановка + g.FillRectangle(additionalBrush, _startPosX + 15, _startPosY + 20, 20, 40); + g.DrawLine(penBlack, _startPosX + 5, _startPosY + 20, _startPosX + 15, _startPosY + 25); + } + } + public DrawingSPAUchild(int speed, double weight, Color bodyColor, Color additionalColor, bool bodyKit, int width, int height) : base(speed, weight, bodyColor, width, height) + { + EntitySPAU = new EntitySPAUchild(speed, weight, bodyColor, additionalColor, bodyKit); + } + } +} diff --git a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/EntitySPAU.cs b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/EntitySPAU.cs index 97c239b..7723ea1 100644 --- a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/EntitySPAU.cs +++ b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/EntitySPAU.cs @@ -2,6 +2,7 @@ { public class EntitySPAU { + /// /// Скорость /// @@ -15,14 +16,6 @@ /// public Color BodyColor { get; private set; } /// - /// Дополнительный цвет (для опциональных элементов) - /// - public Color AdditionalColor { get; private set; } - /// - /// Признак (опция) наличия залповой установки - /// - public bool BodyKit { get; private set; } - /// /// Шаг перемещения САУ /// public double Step => (double)Speed * 100 / Weight; @@ -32,18 +25,10 @@ /// Скорость /// Вес автомобиля /// Основной цвет - /// Дополнительный цвет - /// Признак наличия обвеса - /// Признак наличия антикрыла - /// Признак наличия гоночной полосы - public void Init(int speed, double weight, Color bodyColor, Color - additionalColor, bool bodyKit) - { + public EntitySPAU(int speed, double weight, Color bodyColor) { Speed = speed; Weight = weight; BodyColor = bodyColor; - AdditionalColor = additionalColor; - BodyKit = bodyKit; } } } diff --git a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/EntitySPAUchild.cs b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/EntitySPAUchild.cs new file mode 100644 index 0000000..f86eda6 --- /dev/null +++ b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/EntitySPAUchild.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SelfPropelledArtilleryUnit +{ + public class EntitySPAUchild : EntitySPAU + { + /// + /// Дополнительный цвет (для опциональных элементов) + /// + public Color AdditionalColor { get; private set; } + /// + /// Признак (опция) наличия залповой установки + /// + public bool BodyKit { get; private set; } + /// Дополнительный цвет + /// Признак наличия залповой установки + public EntitySPAUchild(int speed, double weight, Color bodyColor, Color additionalColor, bool bodyKit) : base(speed, weight, bodyColor) + { + AdditionalColor = additionalColor; + BodyKit = bodyKit; + } + } +} diff --git a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/Form.cs b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/Form.cs index 935f790..23d8440 100644 --- a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/Form.cs +++ b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/Form.cs @@ -38,8 +38,7 @@ namespace SelfPropelledArtilleryUnit private void buttonCreate_Click(object sender, EventArgs e) { Random random = new(); - _drawningSPAU = new DrawingSPAU(); - _drawningSPAU.Init(random.Next(100, 300), + _drawningSPAU = new DrawingSPAUchild(random.Next(100, 300), random.Next(1000, 3000), Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)),