From b0e1921876463ae37465dcd987b94da5eb55262e Mon Sep 17 00:00:00 2001 From: Adelina888 Date: Tue, 5 Mar 2024 09:00:55 +0400 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=20=D1=80=D0=BE=D0=B4=D0=B8=D1=82=D0=B5=D0=BB?= =?UTF-8?q?=D0=B5=D0=B9=20=D0=B8=20=D0=B2=D0=B2=D0=BE=D0=B4=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BD=D1=81=D1=82=D1=80=D1=83=D0=BA=D1=82=D0=BE=D1=80=D0=BE?= =?UTF-8?q?=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{ => Drawnings}/DirectionType.cs | 0 .../Drawnings/DrawingStormtrooper.cs | 65 ++++++++ .../DrawingStormtrooperBase.cs} | 150 +++++++++--------- .../Entities/EntityStormtrooper.cs | 42 +++++ .../EntityStormtrooperBase.cs} | 33 +--- .../FormStormtrooper.Designer.cs | 20 ++- ProjectStormtrooper/FormStormtrooper.cs | 62 ++++++-- 7 files changed, 247 insertions(+), 125 deletions(-) rename ProjectStormtrooper/{ => Drawnings}/DirectionType.cs (100%) create mode 100644 ProjectStormtrooper/Drawnings/DrawingStormtrooper.cs rename ProjectStormtrooper/{DrawingStormtrooper.cs => Drawnings/DrawingStormtrooperBase.cs} (63%) create mode 100644 ProjectStormtrooper/Entities/EntityStormtrooper.cs rename ProjectStormtrooper/{EntityStormtrooper.cs => Entities/EntityStormtrooperBase.cs} (55%) diff --git a/ProjectStormtrooper/DirectionType.cs b/ProjectStormtrooper/Drawnings/DirectionType.cs similarity index 100% rename from ProjectStormtrooper/DirectionType.cs rename to ProjectStormtrooper/Drawnings/DirectionType.cs diff --git a/ProjectStormtrooper/Drawnings/DrawingStormtrooper.cs b/ProjectStormtrooper/Drawnings/DrawingStormtrooper.cs new file mode 100644 index 0000000..854b998 --- /dev/null +++ b/ProjectStormtrooper/Drawnings/DrawingStormtrooper.cs @@ -0,0 +1,65 @@ +using ProjectStormtrooper.Entities; + +namespace ProjectStormtrooper.Drawnings; +/// +/// Класс отвечающий за прорисовку и перемещение объекта-сущности +/// +public class DrawingStormtrooper: DrawingStormtrooperBase +{ + + + + + /// + /// Конструктор + /// + /// + /// + /// + /// + /// + /// + + public DrawingStormtrooper(int speed,double weight, Color bodyColor,Color additionalColor, bool rockets, bool bombs):base(140,140) + { + EntityStormtrooperBase = new EntityStormtrooper(speed, weight, bodyColor, additionalColor, rockets, bombs); + + + } + + + /// + /// Прорисовка объекта + /// + /// + public override void DrawTransport(Graphics g) + { + if (EntityStormtrooperBase == null || EntityStormtrooperBase is not EntityStormtrooper stormtrooper || !_startPosX.HasValue || !_startPosY.HasValue) + { + return; + } + + Pen pen = new(Color.Black); + Brush additionalBrush = new SolidBrush(stormtrooper.AdditionalColor); + //ракеты штурмовика + if (stormtrooper.Rockets) + { + g.FillRectangle(additionalBrush, _startPosX.Value + 45, _startPosY.Value + 20, 15, 5); + g.FillRectangle(additionalBrush, _startPosX.Value + 45, _startPosY.Value + 110, 15, 5); + g.DrawRectangle(pen, _startPosX.Value + 45, _startPosY.Value + 20, 15, 5); + g.DrawRectangle(pen, _startPosX.Value + 45, _startPosY.Value + 110, 15, 5); + } + //бомбы штурмовика + if (stormtrooper.Bombs) + { + g.FillRectangle(additionalBrush, _startPosX.Value + 50, _startPosY.Value + 40, 10, 10); + g.FillRectangle(additionalBrush, _startPosX.Value + 50, _startPosY.Value + 90, 10, 10); + g.DrawRectangle(pen, _startPosX.Value + 50, _startPosY.Value + 40, 10, 10); + g.DrawRectangle(pen, _startPosX.Value + 50, _startPosY.Value + 90, 10, 10); + } + base.DrawTransport(g); + } + + + +} diff --git a/ProjectStormtrooper/DrawingStormtrooper.cs b/ProjectStormtrooper/Drawnings/DrawingStormtrooperBase.cs similarity index 63% rename from ProjectStormtrooper/DrawingStormtrooper.cs rename to ProjectStormtrooper/Drawnings/DrawingStormtrooperBase.cs index beeb39f..ce9ef1d 100644 --- a/ProjectStormtrooper/DrawingStormtrooper.cs +++ b/ProjectStormtrooper/Drawnings/DrawingStormtrooperBase.cs @@ -1,13 +1,13 @@ -namespace ProjectStormtrooper; -/// -/// Класс отвечающий за прорисовку и перемещение объекта-сущности -/// -public class DrawingStormtrooper +using ProjectStormtrooper.Entities; + +namespace ProjectStormtrooper.Drawnings; + +public class DrawingStormtrooperBase { /// /// Класс-сущность /// - public EntityStormtrooper? EntityStormtrooper { get; private set; } + public EntityStormtrooperBase? EntityStormtrooperBase { get; protected set; } /// /// Ширина окна /// @@ -21,12 +21,12 @@ public class DrawingStormtrooper /// Левая координата начала прорисовки /// - private int? _startPosX; + protected int? _startPosX; /// /// Верхняя координата начала прорисовки /// - private int? _startPosY; + protected int? _startPosY; /// /// Ширина прорисовки /// @@ -38,37 +38,53 @@ public class DrawingStormtrooper private readonly int _drawningStormtooperHeight = 140; /// - /// Инициализация свойств + /// Пустой конструктор /// - /// - /// - /// - /// - /// - /// - - public void Init(int speed,double weight, Color bodyColor,Color additionalColor, bool rockets, bool bombs) + private DrawingStormtrooperBase() { - EntityStormtrooper = new EntityStormtrooper(); - EntityStormtrooper.Init(speed, weight, bodyColor, additionalColor, rockets, bombs); _pictureHeight = null; _pictureWidth = null; _startPosX = null; _startPosY = null; } /// + /// Конструктор + /// + /// скорость + /// вес + /// основной цвет + + + public DrawingStormtrooperBase(int speed, double weight, Color bodyColor):this() + { + EntityStormtrooperBase = new EntityStormtrooperBase(speed, weight, bodyColor); + + } + /// + /// Конструктор для наследников + /// + /// Ширина прорисовки + /// Высота прорисовки + + protected DrawingStormtrooperBase(int drawningStormtrooperWidth, int drawningStormtooperHeight) : this() + { + _drawningStormtrooperWidth = drawningStormtrooperWidth; + _drawningStormtooperHeight = drawningStormtooperHeight; + + } + /// /// Установка границ поля /// /// Ширина поля /// Высота поля /// true - граница задана, false - проверка не пройдена, нельзя разместить объект в этих размерах - public bool SetPictureSize(int width,int height) + public bool SetPictureSize(int width, int height) { if (width >= _drawningStormtrooperWidth || height >= _drawningStormtooperHeight) { _pictureWidth = width; _pictureHeight = height; - if(_startPosX!=null && _startPosY != null) + if (_startPosX != null && _startPosY != null) { SetPosition(_startPosX.Value, _startPosY.Value); } @@ -120,7 +136,7 @@ public class DrawingStormtrooper /// true - перемещение выполнено, false - перемещение невозможно public bool MoveTransport(DirectionType direction) { - if (EntityStormtrooper == null || !_startPosX.HasValue || !_startPosY.HasValue) + if (EntityStormtrooperBase == null || !_startPosX.HasValue || !_startPosY.HasValue) { return false; } @@ -128,31 +144,31 @@ public class DrawingStormtrooper { //влево case DirectionType.Left: - if (_startPosX.Value - EntityStormtrooper.Step > 0) + if (_startPosX.Value - EntityStormtrooperBase.Step > 0) { - _startPosX -= (int)EntityStormtrooper.Step; + _startPosX -= (int)EntityStormtrooperBase.Step; } return true; //Вверх case DirectionType.Up: - if (_startPosY.Value - EntityStormtrooper.Step > 0) + if (_startPosY.Value - EntityStormtrooperBase.Step > 0) { - _startPosY -= (int)EntityStormtrooper.Step; + _startPosY -= (int)EntityStormtrooperBase.Step; } return true; //Вправо case DirectionType.Right: - if (_startPosX.Value + EntityStormtrooper.Step+_drawningStormtrooperWidth < _pictureWidth) + if (_startPosX.Value + EntityStormtrooperBase.Step + _drawningStormtrooperWidth < _pictureWidth) { - _startPosX += (int)EntityStormtrooper.Step; + _startPosX += (int)EntityStormtrooperBase.Step; } return true; //Вниз case DirectionType.Down: - if (_startPosY.Value + EntityStormtrooper.Step + _drawningStormtooperHeight < _pictureHeight) + if (_startPosY.Value + EntityStormtrooperBase.Step + _drawningStormtooperHeight < _pictureHeight) { - _startPosY += (int)EntityStormtrooper.Step; + _startPosY += (int)EntityStormtrooperBase.Step; } return true; default: @@ -164,82 +180,60 @@ public class DrawingStormtrooper /// Прорисовка объекта /// /// - public void DrawTransport(Graphics g) + public virtual void DrawTransport(Graphics g) { - if (EntityStormtrooper == null || !_startPosX.HasValue || !_startPosY.HasValue) + if (EntityStormtrooperBase == null || !_startPosX.HasValue || !_startPosY.HasValue) { return; } - Pen pen = new (Color.Black); - Brush bodyColorBrush = new SolidBrush(EntityStormtrooper.BodyColor); - Brush additionalBrush = new SolidBrush(EntityStormtrooper.AdditionalColor); + Pen pen = new(Color.Black); + Brush bodyColorBrush = new SolidBrush(EntityStormtrooperBase.BodyColor); + //нос штурмовика - Brush brBlack = new SolidBrush(Color.Black); - + Brush brBlack = new SolidBrush(Color.Black); + Point[] Nose = new Point[3]; - Nose[0].X = _startPosX.Value + 20; Nose[0].Y = _startPosY.Value + 80; - Nose[1].X = _startPosX.Value + 20; Nose[1].Y = _startPosY.Value + 60; - Nose[2].X = _startPosX.Value; Nose[2].Y = _startPosY.Value + 70; + Nose[0].X = _startPosX.Value + 20; Nose[0].Y = _startPosY.Value + 85; + Nose[1].X = _startPosX.Value + 20; Nose[1].Y = _startPosY.Value + 65; + Nose[2].X = _startPosX.Value; Nose[2].Y = _startPosY.Value + 75; g.FillPolygon(brBlack, Nose); g.DrawPolygon(pen, Nose); //Заднии крылья штурмовика Point[] pflybtwings = new Point[6]; - pflybtwings[0].X = _startPosX.Value + 120; pflybtwings[0].Y = _startPosY.Value + 60; - pflybtwings[1].X = _startPosX.Value + 120; pflybtwings[1].Y = _startPosY.Value + 50; - pflybtwings[2].X = _startPosX.Value + 140; pflybtwings[2].Y = _startPosY.Value + 30; - pflybtwings[3].X = _startPosX.Value + 140; pflybtwings[3].Y = _startPosY.Value + 110; - pflybtwings[4].X = _startPosX.Value + 120; pflybtwings[4].Y = _startPosY.Value + 90; - pflybtwings[5].X = _startPosX.Value + 120; pflybtwings[5].Y = _startPosY.Value + 80; + pflybtwings[0].X = _startPosX.Value + 120; pflybtwings[0].Y = _startPosY.Value + 65; + pflybtwings[1].X = _startPosX.Value + 120; pflybtwings[1].Y = _startPosY.Value + 55; + pflybtwings[2].X = _startPosX.Value + 140; pflybtwings[2].Y = _startPosY.Value + 35; + pflybtwings[3].X = _startPosX.Value + 140; pflybtwings[3].Y = _startPosY.Value + 115; + pflybtwings[4].X = _startPosX.Value + 120; pflybtwings[4].Y = _startPosY.Value + 95; + pflybtwings[5].X = _startPosX.Value + 120; pflybtwings[5].Y = _startPosY.Value + 85; g.FillPolygon(bodyColorBrush, pflybtwings); g.DrawPolygon(pen, pflybtwings); //Тело штурмовика - g.FillRectangle(bodyColorBrush, _startPosX.Value + 20, _startPosY.Value + 60, 120, 20); - g.DrawRectangle(pen, _startPosX.Value + 20, _startPosY.Value + 60, 120, 20); - + g.FillRectangle(bodyColorBrush, _startPosX.Value + 20, _startPosY.Value + 65, 120, 20); + g.DrawRectangle(pen, _startPosX.Value + 20, _startPosY.Value + 65, 120, 20); //Крылья штурмовика - Point[] frontwings = new Point[4]; - frontwings[0].X = _startPosX.Value + 60; frontwings[0].Y = _startPosY.Value + 60; - frontwings[1].X = _startPosX.Value + 60; frontwings[1].Y = _startPosY.Value ; - frontwings[2].X = _startPosX.Value + 70; frontwings[2].Y = _startPosY.Value ; - frontwings[3].X = _startPosX.Value + 80; frontwings[3].Y = _startPosY.Value + 60; + frontwings[0].X = _startPosX.Value + 60; frontwings[0].Y = _startPosY.Value + 65; + frontwings[1].X = _startPosX.Value + 60; frontwings[1].Y = _startPosY.Value + 5; + frontwings[2].X = _startPosX.Value + 70; frontwings[2].Y = _startPosY.Value + 5; + frontwings[3].X = _startPosX.Value + 80; frontwings[3].Y = _startPosY.Value + 65; g.FillPolygon(bodyColorBrush, frontwings); g.DrawPolygon(pen, frontwings); Point[] frontwings2 = new Point[4]; - frontwings2[0].X = _startPosX.Value + 60; frontwings2[0].Y = _startPosY.Value + 80; - frontwings2[1].X = _startPosX.Value + 60; frontwings2[1].Y = _startPosY.Value+140; - frontwings2[2].X = _startPosX.Value + 70; frontwings2[2].Y = _startPosY.Value+140; - frontwings2[3].X = _startPosX.Value + 80; frontwings2[3].Y = _startPosY.Value + 80; + frontwings2[0].X = _startPosX.Value + 60; frontwings2[0].Y = _startPosY.Value + 85; + frontwings2[1].X = _startPosX.Value + 60; frontwings2[1].Y = _startPosY.Value + 145; + frontwings2[2].X = _startPosX.Value + 70; frontwings2[2].Y = _startPosY.Value + 145; + frontwings2[3].X = _startPosX.Value + 80; frontwings2[3].Y = _startPosY.Value + 85; g.FillPolygon(bodyColorBrush, frontwings2); g.DrawPolygon(pen, frontwings2); - //Ракеты штурмовика - if (EntityStormtrooper.Rockets) - { - g.FillRectangle(additionalBrush, _startPosX.Value + 45, _startPosY.Value + 20, 15, 5); - g.FillRectangle(additionalBrush, _startPosX.Value + 45, _startPosY.Value + 110, 15, 5); - g.DrawRectangle(pen, _startPosX.Value + 45, _startPosY.Value + 20, 15, 5); - g.DrawRectangle(pen, _startPosX.Value + 45, _startPosY.Value + 110, 15, 5); - - } - //Бомбы бомбардировщика - if (EntityStormtrooper.Bombs) - { - g.FillRectangle(additionalBrush, _startPosX.Value + 50, _startPosY.Value + 40, 10, 10); - g.FillRectangle(additionalBrush, _startPosX.Value + 50, _startPosY.Value + 90, 10, 10); - g.DrawRectangle(pen, _startPosX.Value + 50, _startPosY.Value + 40, 10, 10); - g.DrawRectangle(pen, _startPosX.Value + 50, _startPosY.Value + 90, 10, 10); - - } } - - } diff --git a/ProjectStormtrooper/Entities/EntityStormtrooper.cs b/ProjectStormtrooper/Entities/EntityStormtrooper.cs new file mode 100644 index 0000000..003f8cf --- /dev/null +++ b/ProjectStormtrooper/Entities/EntityStormtrooper.cs @@ -0,0 +1,42 @@ +namespace ProjectStormtrooper.Entities; + +/// +/// Класс-сущность "Штурмовик" +/// +public class EntityStormtrooper: EntityStormtrooperBase +{ + + public Color AdditionalColor { get; private set; } + + /// + /// Признак (опция) наличия ракет + /// + public bool Rockets { get; private set; } + + /// + /// Признак (опция) наличия бомб + /// + public bool Bombs { get; private set; } + + + + /// + /// Инициализация полей объекта-класса штурмовик + /// + /// Скорость + /// Вес + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия ракет + /// Признак наличия бомб + + public EntityStormtrooper(int speed, double weight, Color bodyColor, Color additionalColor, bool rockets, bool bombs):base(speed, weight, bodyColor) + { + + AdditionalColor = additionalColor; + Rockets = rockets; + Bombs = bombs; + + } +} + diff --git a/ProjectStormtrooper/EntityStormtrooper.cs b/ProjectStormtrooper/Entities/EntityStormtrooperBase.cs similarity index 55% rename from ProjectStormtrooper/EntityStormtrooper.cs rename to ProjectStormtrooper/Entities/EntityStormtrooperBase.cs index 3cf8c67..2487091 100644 --- a/ProjectStormtrooper/EntityStormtrooper.cs +++ b/ProjectStormtrooper/Entities/EntityStormtrooperBase.cs @@ -1,9 +1,9 @@ -namespace ProjectStormtrooper; - +namespace ProjectStormtrooper.Entities; /// /// Класс-сущность "Штурмовик" /// -public class EntityStormtrooper + +public class EntityStormtrooperBase { /// /// Скорость @@ -20,28 +20,12 @@ public class EntityStormtrooper /// /// public Color BodyColor { get; private set; } - /// - /// Дополнительный цвет (для опциональных элементов) - /// - public Color AdditionalColor { get; private set; } - - /// - /// Признак (опция) наличия ракет - /// - public bool Rockets { get; private set; } - - /// - /// Признак (опция) наличия бомб - /// - public bool Bombs { get; private set; } - - /// + // /// Шаг перемещения штурмовика /// public double Step => Speed * 100 / Weight; - /// - /// Инициализация полей объекта-класса штурмовик + /// Конструктор сущности /// /// Скорость /// Вес @@ -50,15 +34,12 @@ public class EntityStormtrooper /// Признак наличия ракет /// Признак наличия бомб - public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool rockets, bool bombs) + public EntityStormtrooperBase(int speed, double weight, Color bodyColor) { Speed = speed; Weight = weight; BodyColor = bodyColor; - AdditionalColor = additionalColor; - Rockets = rockets; - Bombs = bombs; + } } - diff --git a/ProjectStormtrooper/FormStormtrooper.Designer.cs b/ProjectStormtrooper/FormStormtrooper.Designer.cs index 7c404ee..da58e52 100644 --- a/ProjectStormtrooper/FormStormtrooper.Designer.cs +++ b/ProjectStormtrooper/FormStormtrooper.Designer.cs @@ -34,6 +34,7 @@ buttonUp = new Button(); buttonDown = new Button(); buttonRight = new Button(); + buttonCreateStormtrooperBase = new Button(); ((System.ComponentModel.ISupportInitialize)pictureBoxStormtrooper).BeginInit(); SuspendLayout(); // @@ -45,16 +46,15 @@ pictureBoxStormtrooper.Size = new Size(925, 597); pictureBoxStormtrooper.TabIndex = 0; pictureBoxStormtrooper.TabStop = false; - // // buttonCreateStormtrooper // buttonCreateStormtrooper.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; buttonCreateStormtrooper.Location = new Point(12, 562); buttonCreateStormtrooper.Name = "buttonCreateStormtrooper"; - buttonCreateStormtrooper.Size = new Size(75, 23); + buttonCreateStormtrooper.Size = new Size(162, 23); buttonCreateStormtrooper.TabIndex = 1; - buttonCreateStormtrooper.Text = "Создать"; + buttonCreateStormtrooper.Text = "Создать штурмовик"; buttonCreateStormtrooper.UseVisualStyleBackColor = true; buttonCreateStormtrooper.Click += ButtonCreateStormtrooper_Click; // @@ -106,11 +106,23 @@ buttonRight.UseVisualStyleBackColor = true; buttonRight.Click += ButtonMove_Click; // + // buttonCreateStormtrooperBase + // + buttonCreateStormtrooperBase.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonCreateStormtrooperBase.Location = new Point(198, 562); + buttonCreateStormtrooperBase.Name = "buttonCreateStormtrooperBase"; + buttonCreateStormtrooperBase.Size = new Size(180, 23); + buttonCreateStormtrooperBase.TabIndex = 6; + buttonCreateStormtrooperBase.Text = "Создать штурмовик базовый"; + buttonCreateStormtrooperBase.UseVisualStyleBackColor = true; + buttonCreateStormtrooperBase.Click += ButtonCreateStormtrooperBase_Click; + // // FormStormtrooper // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(925, 597); + Controls.Add(buttonCreateStormtrooperBase); Controls.Add(buttonRight); Controls.Add(buttonDown); Controls.Add(buttonUp); @@ -119,7 +131,6 @@ Controls.Add(pictureBoxStormtrooper); Name = "FormStormtrooper"; Text = "Штурмовик"; - ((System.ComponentModel.ISupportInitialize)pictureBoxStormtrooper).EndInit(); ResumeLayout(false); } @@ -132,5 +143,6 @@ private Button buttonUp; private Button buttonDown; private Button buttonRight; + private Button buttonCreateStormtrooperBase; } } \ No newline at end of file diff --git a/ProjectStormtrooper/FormStormtrooper.cs b/ProjectStormtrooper/FormStormtrooper.cs index 906dbc5..9485dc3 100644 --- a/ProjectStormtrooper/FormStormtrooper.cs +++ b/ProjectStormtrooper/FormStormtrooper.cs @@ -1,4 +1,6 @@ -namespace ProjectStormtrooper; +using ProjectStormtrooper.Drawnings; + +namespace ProjectStormtrooper; /// /// Форма работы с объектом "Штурмовик" /// @@ -6,7 +8,7 @@ public partial class FormStormtrooper : Form {/// /// Поле-объект для прорисовки объекта /// - private DrawingStormtrooper? _drawningStormtrooper; + private DrawingStormtrooperBase? _drawningStormtrooperBase; /// /// Конструктор формы /// @@ -21,34 +23,58 @@ public partial class FormStormtrooper : Form private void Draw() { - if (_drawningStormtrooper == null) + if (_drawningStormtrooperBase == null) { return; } Bitmap bmp = new(pictureBoxStormtrooper.Width, pictureBoxStormtrooper.Height); Graphics gr = Graphics.FromImage(bmp); - _drawningStormtrooper.DrawTransport(gr); + _drawningStormtrooperBase.DrawTransport(gr); pictureBoxStormtrooper.Image = bmp; } /// - /// Обработка нажатия кнопки "Создать" + /// Создание объекта класса-перемещения /// - /// - /// - private void ButtonCreateStormtrooper_Click(object sender, EventArgs e) + /// + private void CreateObject(string type) { Random random = new(); - _drawningStormtrooper = new DrawingStormtrooper(); - _drawningStormtrooper.Init(random.Next(100, 300), random.Next(1000, 3000), + switch (type) + { + case nameof(DrawingStormtrooper): + _drawningStormtrooperBase = new DrawingStormtrooper(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))); - _drawningStormtrooper.SetPictureSize(pictureBoxStormtrooper.Width, pictureBoxStormtrooper.Height); - _drawningStormtrooper.SetPosition(random.Next(10, 100), random.Next(10, 100)); + break; + case nameof(DrawingStormtrooperBase): + _drawningStormtrooperBase = new DrawingStormtrooperBase(random.Next(100, 300), random.Next(1000, 3000), + Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256))); + break; + default: + return; + } + _drawningStormtrooperBase.SetPictureSize(pictureBoxStormtrooper.Width, pictureBoxStormtrooper.Height); + _drawningStormtrooperBase.SetPosition(random.Next(10, 100), random.Next(10, 100)); Draw(); + } + /// + /// Обработка нажатия кнопки "Создать штурмовик" + /// + /// + /// + private void ButtonCreateStormtrooper_Click(object sender, EventArgs e) => CreateObject(nameof(DrawingStormtrooper)); + /// + /// Обработка нажатия кнопки "Создать базовый штурмовик" + /// + /// + /// + private void ButtonCreateStormtrooperBase_Click(object sender, EventArgs e) => CreateObject(nameof(DrawingStormtrooperBase)); + + /// /// Перемещение объкта по форме(нажатие кнопок навигации) /// @@ -56,7 +82,7 @@ public partial class FormStormtrooper : Form /// private void ButtonMove_Click(object sender, EventArgs e) { - if (_drawningStormtrooper == null) + if (_drawningStormtrooperBase == null) { return; } @@ -66,16 +92,16 @@ public partial class FormStormtrooper : Form switch (name) { case "buttonUp": - result = _drawningStormtrooper.MoveTransport(DirectionType.Up); + result = _drawningStormtrooperBase.MoveTransport(DirectionType.Up); break; case "buttonDown": - result = _drawningStormtrooper.MoveTransport(DirectionType.Down); + result = _drawningStormtrooperBase.MoveTransport(DirectionType.Down); break; case "buttonLeft": - result = _drawningStormtrooper.MoveTransport(DirectionType.Left); + result = _drawningStormtrooperBase.MoveTransport(DirectionType.Left); break; case "buttonRight": - result = _drawningStormtrooper.MoveTransport(DirectionType.Right); + result = _drawningStormtrooperBase .MoveTransport(DirectionType.Right); break; } @@ -85,4 +111,6 @@ public partial class FormStormtrooper : Form } } + + }