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)),