Добавление родителей и ввод конструкторов

This commit is contained in:
Adelina888 2024-03-05 09:00:55 +04:00
parent c54bcb4c19
commit b0e1921876
7 changed files with 247 additions and 125 deletions

View File

@ -0,0 +1,65 @@
using ProjectStormtrooper.Entities;
namespace ProjectStormtrooper.Drawnings;
/// <summary>
/// Класс отвечающий за прорисовку и перемещение объекта-сущности
/// </summary>
public class DrawingStormtrooper: DrawingStormtrooperBase
{
/// <summary>
/// Конструктор
/// </summary>
/// <param name="speed"></param>
/// <param name="weight"></param>
/// <param name="bodyColor"></param>
/// <param name="additionalColor"></param>
/// <param name="rockets"></param>
/// <param name="bombs"></param>
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);
}
/// <summary>
/// Прорисовка объекта
/// </summary>
/// <param name="q"></param>
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);
}
}

View File

@ -1,13 +1,13 @@
namespace ProjectStormtrooper; using ProjectStormtrooper.Entities;
/// <summary>
/// Класс отвечающий за прорисовку и перемещение объекта-сущности namespace ProjectStormtrooper.Drawnings;
/// </summary>
public class DrawingStormtrooper public class DrawingStormtrooperBase
{ {
/// <summary> /// <summary>
/// Класс-сущность /// Класс-сущность
/// </summary> /// </summary>
public EntityStormtrooper? EntityStormtrooper { get; private set; } public EntityStormtrooperBase? EntityStormtrooperBase { get; protected set; }
/// <summary> /// <summary>
/// Ширина окна /// Ширина окна
/// </summary> /// </summary>
@ -21,12 +21,12 @@ public class DrawingStormtrooper
/// Левая координата начала прорисовки /// Левая координата начала прорисовки
/// </summary> /// </summary>
private int? _startPosX; protected int? _startPosX;
/// <summary> /// <summary>
/// Верхняя координата начала прорисовки /// Верхняя координата начала прорисовки
/// </summary> /// </summary>
private int? _startPosY; protected int? _startPosY;
/// <summary> /// <summary>
/// Ширина прорисовки /// Ширина прорисовки
/// </summary> /// </summary>
@ -38,37 +38,53 @@ public class DrawingStormtrooper
private readonly int _drawningStormtooperHeight = 140; private readonly int _drawningStormtooperHeight = 140;
/// <summary> /// <summary>
/// Инициализация свойств /// Пустой конструктор
/// </summary> /// </summary>
/// <param name="speed"></param> private DrawingStormtrooperBase()
/// <param name="weight"></param>
/// <param name="bodyColor"></param>
/// <param name="additionalColor"></param>
/// <param name="rockets"></param>
/// <param name="bombs"></param>
public void Init(int speed,double weight, Color bodyColor,Color additionalColor, bool rockets, bool bombs)
{ {
EntityStormtrooper = new EntityStormtrooper();
EntityStormtrooper.Init(speed, weight, bodyColor, additionalColor, rockets, bombs);
_pictureHeight = null; _pictureHeight = null;
_pictureWidth = null; _pictureWidth = null;
_startPosX = null; _startPosX = null;
_startPosY = null; _startPosY = null;
} }
/// <summary> /// <summary>
/// Конструктор
/// </summary>
/// <param name="speed">скорость</param>
/// <param name="weight">вес</param>
/// <param name="bodyColor">основной цвет</param>
public DrawingStormtrooperBase(int speed, double weight, Color bodyColor):this()
{
EntityStormtrooperBase = new EntityStormtrooperBase(speed, weight, bodyColor);
}
/// <summary>
/// Конструктор для наследников
/// </summary>
/// <param name="drawningStormtrooperWidth"> Ширина прорисовки</param>
/// <param name="drawningStormtooperHeight">Высота прорисовки</param>
protected DrawingStormtrooperBase(int drawningStormtrooperWidth, int drawningStormtooperHeight) : this()
{
_drawningStormtrooperWidth = drawningStormtrooperWidth;
_drawningStormtooperHeight = drawningStormtooperHeight;
}
/// <summary>
/// Установка границ поля /// Установка границ поля
/// </summary> /// </summary>
/// <param name="width">Ширина поля</param> /// <param name="width">Ширина поля</param>
/// <param name="height">Высота поля</param> /// <param name="height">Высота поля</param>
/// <returns>true - граница задана, false - проверка не пройдена, нельзя разместить объект в этих размерах</returns> /// <returns>true - граница задана, false - проверка не пройдена, нельзя разместить объект в этих размерах</returns>
public bool SetPictureSize(int width,int height) public bool SetPictureSize(int width, int height)
{ {
if (width >= _drawningStormtrooperWidth || height >= _drawningStormtooperHeight) if (width >= _drawningStormtrooperWidth || height >= _drawningStormtooperHeight)
{ {
_pictureWidth = width; _pictureWidth = width;
_pictureHeight = height; _pictureHeight = height;
if(_startPosX!=null && _startPosY != null) if (_startPosX != null && _startPosY != null)
{ {
SetPosition(_startPosX.Value, _startPosY.Value); SetPosition(_startPosX.Value, _startPosY.Value);
} }
@ -120,7 +136,7 @@ public class DrawingStormtrooper
/// <returns>true - перемещение выполнено, false - перемещение невозможно</returns> /// <returns>true - перемещение выполнено, false - перемещение невозможно</returns>
public bool MoveTransport(DirectionType direction) public bool MoveTransport(DirectionType direction)
{ {
if (EntityStormtrooper == null || !_startPosX.HasValue || !_startPosY.HasValue) if (EntityStormtrooperBase == null || !_startPosX.HasValue || !_startPosY.HasValue)
{ {
return false; return false;
} }
@ -128,31 +144,31 @@ public class DrawingStormtrooper
{ {
//влево //влево
case DirectionType.Left: 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; return true;
//Вверх //Вверх
case DirectionType.Up: 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; return true;
//Вправо //Вправо
case DirectionType.Right: 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; return true;
//Вниз //Вниз
case DirectionType.Down: 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; return true;
default: default:
@ -164,82 +180,60 @@ public class DrawingStormtrooper
/// Прорисовка объекта /// Прорисовка объекта
/// </summary> /// </summary>
/// <param name="q"></param> /// <param name="q"></param>
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; return;
} }
Pen pen = new (Color.Black); Pen pen = new(Color.Black);
Brush bodyColorBrush = new SolidBrush(EntityStormtrooper.BodyColor); Brush bodyColorBrush = new SolidBrush(EntityStormtrooperBase.BodyColor);
Brush additionalBrush = new SolidBrush(EntityStormtrooper.AdditionalColor);
//нос штурмовика //нос штурмовика
Brush brBlack = new SolidBrush(Color.Black); Brush brBlack = new SolidBrush(Color.Black);
Point[] Nose = new Point[3]; Point[] Nose = new Point[3];
Nose[0].X = _startPosX.Value + 20; Nose[0].Y = _startPosY.Value + 80; Nose[0].X = _startPosX.Value + 20; Nose[0].Y = _startPosY.Value + 85;
Nose[1].X = _startPosX.Value + 20; Nose[1].Y = _startPosY.Value + 60; Nose[1].X = _startPosX.Value + 20; Nose[1].Y = _startPosY.Value + 65;
Nose[2].X = _startPosX.Value; Nose[2].Y = _startPosY.Value + 70; Nose[2].X = _startPosX.Value; Nose[2].Y = _startPosY.Value + 75;
g.FillPolygon(brBlack, Nose); g.FillPolygon(brBlack, Nose);
g.DrawPolygon(pen, Nose); g.DrawPolygon(pen, Nose);
//Заднии крылья штурмовика //Заднии крылья штурмовика
Point[] pflybtwings = new Point[6]; Point[] pflybtwings = new Point[6];
pflybtwings[0].X = _startPosX.Value + 120; pflybtwings[0].Y = _startPosY.Value + 60; pflybtwings[0].X = _startPosX.Value + 120; pflybtwings[0].Y = _startPosY.Value + 65;
pflybtwings[1].X = _startPosX.Value + 120; pflybtwings[1].Y = _startPosY.Value + 50; pflybtwings[1].X = _startPosX.Value + 120; pflybtwings[1].Y = _startPosY.Value + 55;
pflybtwings[2].X = _startPosX.Value + 140; pflybtwings[2].Y = _startPosY.Value + 30; pflybtwings[2].X = _startPosX.Value + 140; pflybtwings[2].Y = _startPosY.Value + 35;
pflybtwings[3].X = _startPosX.Value + 140; pflybtwings[3].Y = _startPosY.Value + 110; pflybtwings[3].X = _startPosX.Value + 140; pflybtwings[3].Y = _startPosY.Value + 115;
pflybtwings[4].X = _startPosX.Value + 120; pflybtwings[4].Y = _startPosY.Value + 90; pflybtwings[4].X = _startPosX.Value + 120; pflybtwings[4].Y = _startPosY.Value + 95;
pflybtwings[5].X = _startPosX.Value + 120; pflybtwings[5].Y = _startPosY.Value + 80; pflybtwings[5].X = _startPosX.Value + 120; pflybtwings[5].Y = _startPosY.Value + 85;
g.FillPolygon(bodyColorBrush, pflybtwings); g.FillPolygon(bodyColorBrush, pflybtwings);
g.DrawPolygon(pen, 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]; Point[] frontwings = new Point[4];
frontwings[0].X = _startPosX.Value + 60; frontwings[0].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 ; frontwings[1].X = _startPosX.Value + 60; frontwings[1].Y = _startPosY.Value + 5;
frontwings[2].X = _startPosX.Value + 70; frontwings[2].Y = _startPosY.Value ; frontwings[2].X = _startPosX.Value + 70; frontwings[2].Y = _startPosY.Value + 5;
frontwings[3].X = _startPosX.Value + 80; frontwings[3].Y = _startPosY.Value + 60; frontwings[3].X = _startPosX.Value + 80; frontwings[3].Y = _startPosY.Value + 65;
g.FillPolygon(bodyColorBrush, frontwings); g.FillPolygon(bodyColorBrush, frontwings);
g.DrawPolygon(pen, frontwings); g.DrawPolygon(pen, frontwings);
Point[] frontwings2 = new Point[4]; Point[] frontwings2 = new Point[4];
frontwings2[0].X = _startPosX.Value + 60; frontwings2[0].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+140; frontwings2[1].X = _startPosX.Value + 60; frontwings2[1].Y = _startPosY.Value + 145;
frontwings2[2].X = _startPosX.Value + 70; frontwings2[2].Y = _startPosY.Value+140; frontwings2[2].X = _startPosX.Value + 70; frontwings2[2].Y = _startPosY.Value + 145;
frontwings2[3].X = _startPosX.Value + 80; frontwings2[3].Y = _startPosY.Value + 80; frontwings2[3].X = _startPosX.Value + 80; frontwings2[3].Y = _startPosY.Value + 85;
g.FillPolygon(bodyColorBrush, frontwings2); g.FillPolygon(bodyColorBrush, frontwings2);
g.DrawPolygon(pen, 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);
}
} }
} }

View File

@ -0,0 +1,42 @@
namespace ProjectStormtrooper.Entities;
/// <summary>
/// Класс-сущность "Штурмовик"
/// </summary>
public class EntityStormtrooper: EntityStormtrooperBase
{
public Color AdditionalColor { get; private set; }
/// <summary>
/// Признак (опция) наличия ракет
/// </summary>
public bool Rockets { get; private set; }
/// <summary>
/// Признак (опция) наличия бомб
/// </summary>
public bool Bombs { get; private set; }
/// <summary>
/// Инициализация полей объекта-класса штурмовик
/// </summary>
/// <param name="speed">Скорость</param>
/// <param name="weight">Вес </param>
/// <param name="bodyColor">Основной цвет</param>
/// <param name="additionalColor">Дополнительный цвет</param>
/// <param name="rockets">Признак наличия ракет</param>
/// <param name="bombs">Признак наличия бомб</param>
public EntityStormtrooper(int speed, double weight, Color bodyColor, Color additionalColor, bool rockets, bool bombs):base(speed, weight, bodyColor)
{
AdditionalColor = additionalColor;
Rockets = rockets;
Bombs = bombs;
}
}

View File

@ -1,9 +1,9 @@
namespace ProjectStormtrooper; namespace ProjectStormtrooper.Entities;
/// <summary> /// <summary>
/// Класс-сущность "Штурмовик" /// Класс-сущность "Штурмовик"
/// </summary> /// </summary>
public class EntityStormtrooper
public class EntityStormtrooperBase
{ {
/// <summary> /// <summary>
/// Скорость /// Скорость
@ -20,28 +20,12 @@ public class EntityStormtrooper
/// </summary> /// </summary>
/// ///
public Color BodyColor { get; private set; } public Color BodyColor { get; private set; }
/// <summary> // <summary>
/// Дополнительный цвет (для опциональных элементов)
/// </summary>
public Color AdditionalColor { get; private set; }
/// <summary>
/// Признак (опция) наличия ракет
/// </summary>
public bool Rockets { get; private set; }
/// <summary>
/// Признак (опция) наличия бомб
/// </summary>
public bool Bombs { get; private set; }
/// <summary>
/// Шаг перемещения штурмовика /// Шаг перемещения штурмовика
/// </summary> /// </summary>
public double Step => Speed * 100 / Weight; public double Step => Speed * 100 / Weight;
/// <summary> /// <summary>
/// Инициализация полей объекта-класса штурмовик /// Конструктор сущности
/// </summary> /// </summary>
/// <param name="speed">Скорость</param> /// <param name="speed">Скорость</param>
/// <param name="weight">Вес </param> /// <param name="weight">Вес </param>
@ -50,15 +34,12 @@ public class EntityStormtrooper
/// <param name="rockets">Признак наличия ракет</param> /// <param name="rockets">Признак наличия ракет</param>
/// <param name="bombs">Признак наличия бомб</param> /// <param name="bombs">Признак наличия бомб</param>
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; Speed = speed;
Weight = weight; Weight = weight;
BodyColor = bodyColor; BodyColor = bodyColor;
AdditionalColor = additionalColor;
Rockets = rockets;
Bombs = bombs;
} }
} }

View File

@ -34,6 +34,7 @@
buttonUp = new Button(); buttonUp = new Button();
buttonDown = new Button(); buttonDown = new Button();
buttonRight = new Button(); buttonRight = new Button();
buttonCreateStormtrooperBase = new Button();
((System.ComponentModel.ISupportInitialize)pictureBoxStormtrooper).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureBoxStormtrooper).BeginInit();
SuspendLayout(); SuspendLayout();
// //
@ -45,16 +46,15 @@
pictureBoxStormtrooper.Size = new Size(925, 597); pictureBoxStormtrooper.Size = new Size(925, 597);
pictureBoxStormtrooper.TabIndex = 0; pictureBoxStormtrooper.TabIndex = 0;
pictureBoxStormtrooper.TabStop = false; pictureBoxStormtrooper.TabStop = false;
// //
// buttonCreateStormtrooper // buttonCreateStormtrooper
// //
buttonCreateStormtrooper.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; buttonCreateStormtrooper.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
buttonCreateStormtrooper.Location = new Point(12, 562); buttonCreateStormtrooper.Location = new Point(12, 562);
buttonCreateStormtrooper.Name = "buttonCreateStormtrooper"; buttonCreateStormtrooper.Name = "buttonCreateStormtrooper";
buttonCreateStormtrooper.Size = new Size(75, 23); buttonCreateStormtrooper.Size = new Size(162, 23);
buttonCreateStormtrooper.TabIndex = 1; buttonCreateStormtrooper.TabIndex = 1;
buttonCreateStormtrooper.Text = "Создать"; buttonCreateStormtrooper.Text = "Создать штурмовик";
buttonCreateStormtrooper.UseVisualStyleBackColor = true; buttonCreateStormtrooper.UseVisualStyleBackColor = true;
buttonCreateStormtrooper.Click += ButtonCreateStormtrooper_Click; buttonCreateStormtrooper.Click += ButtonCreateStormtrooper_Click;
// //
@ -106,11 +106,23 @@
buttonRight.UseVisualStyleBackColor = true; buttonRight.UseVisualStyleBackColor = true;
buttonRight.Click += ButtonMove_Click; 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 // FormStormtrooper
// //
AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font; AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(925, 597); ClientSize = new Size(925, 597);
Controls.Add(buttonCreateStormtrooperBase);
Controls.Add(buttonRight); Controls.Add(buttonRight);
Controls.Add(buttonDown); Controls.Add(buttonDown);
Controls.Add(buttonUp); Controls.Add(buttonUp);
@ -119,7 +131,6 @@
Controls.Add(pictureBoxStormtrooper); Controls.Add(pictureBoxStormtrooper);
Name = "FormStormtrooper"; Name = "FormStormtrooper";
Text = "Штурмовик"; Text = "Штурмовик";
((System.ComponentModel.ISupportInitialize)pictureBoxStormtrooper).EndInit(); ((System.ComponentModel.ISupportInitialize)pictureBoxStormtrooper).EndInit();
ResumeLayout(false); ResumeLayout(false);
} }
@ -132,5 +143,6 @@
private Button buttonUp; private Button buttonUp;
private Button buttonDown; private Button buttonDown;
private Button buttonRight; private Button buttonRight;
private Button buttonCreateStormtrooperBase;
} }
} }

View File

@ -1,4 +1,6 @@
namespace ProjectStormtrooper; using ProjectStormtrooper.Drawnings;
namespace ProjectStormtrooper;
/// <summary> /// <summary>
/// Форма работы с объектом "Штурмовик" /// Форма работы с объектом "Штурмовик"
/// </summary> /// </summary>
@ -6,7 +8,7 @@ public partial class FormStormtrooper : Form
{/// <summary> {/// <summary>
/// Поле-объект для прорисовки объекта /// Поле-объект для прорисовки объекта
/// </summary> /// </summary>
private DrawingStormtrooper? _drawningStormtrooper; private DrawingStormtrooperBase? _drawningStormtrooperBase;
/// <summary> /// <summary>
/// Конструктор формы /// Конструктор формы
/// </summary> /// </summary>
@ -21,34 +23,58 @@ public partial class FormStormtrooper : Form
private void Draw() private void Draw()
{ {
if (_drawningStormtrooper == null) if (_drawningStormtrooperBase == null)
{ {
return; return;
} }
Bitmap bmp = new(pictureBoxStormtrooper.Width, pictureBoxStormtrooper.Height); Bitmap bmp = new(pictureBoxStormtrooper.Width, pictureBoxStormtrooper.Height);
Graphics gr = Graphics.FromImage(bmp); Graphics gr = Graphics.FromImage(bmp);
_drawningStormtrooper.DrawTransport(gr); _drawningStormtrooperBase.DrawTransport(gr);
pictureBoxStormtrooper.Image = bmp; pictureBoxStormtrooper.Image = bmp;
} }
/// <summary> /// <summary>
/// Обработка нажатия кнопки "Создать" /// Создание объекта класса-перемещения
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="type"></param>
/// <param name="e"></param> private void CreateObject(string type)
private void ButtonCreateStormtrooper_Click(object sender, EventArgs e)
{ {
Random random = new(); Random random = new();
_drawningStormtrooper = new DrawingStormtrooper(); switch (type)
_drawningStormtrooper.Init(random.Next(100, 300), random.Next(1000, 3000), {
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)),
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)));
_drawningStormtrooper.SetPictureSize(pictureBoxStormtrooper.Width, pictureBoxStormtrooper.Height); break;
_drawningStormtrooper.SetPosition(random.Next(10, 100), random.Next(10, 100)); 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(); Draw();
} }
/// <summary>
/// Обработка нажатия кнопки "Создать штурмовик"
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ButtonCreateStormtrooper_Click(object sender, EventArgs e) => CreateObject(nameof(DrawingStormtrooper));
/// <summary>
/// Обработка нажатия кнопки "Создать базовый штурмовик"
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ButtonCreateStormtrooperBase_Click(object sender, EventArgs e) => CreateObject(nameof(DrawingStormtrooperBase));
/// <summary> /// <summary>
/// Перемещение объкта по форме(нажатие кнопок навигации) /// Перемещение объкта по форме(нажатие кнопок навигации)
/// </summary> /// </summary>
@ -56,7 +82,7 @@ public partial class FormStormtrooper : Form
/// <param name="e"></param> /// <param name="e"></param>
private void ButtonMove_Click(object sender, EventArgs e) private void ButtonMove_Click(object sender, EventArgs e)
{ {
if (_drawningStormtrooper == null) if (_drawningStormtrooperBase == null)
{ {
return; return;
} }
@ -66,16 +92,16 @@ public partial class FormStormtrooper : Form
switch (name) switch (name)
{ {
case "buttonUp": case "buttonUp":
result = _drawningStormtrooper.MoveTransport(DirectionType.Up); result = _drawningStormtrooperBase.MoveTransport(DirectionType.Up);
break; break;
case "buttonDown": case "buttonDown":
result = _drawningStormtrooper.MoveTransport(DirectionType.Down); result = _drawningStormtrooperBase.MoveTransport(DirectionType.Down);
break; break;
case "buttonLeft": case "buttonLeft":
result = _drawningStormtrooper.MoveTransport(DirectionType.Left); result = _drawningStormtrooperBase.MoveTransport(DirectionType.Left);
break; break;
case "buttonRight": case "buttonRight":
result = _drawningStormtrooper.MoveTransport(DirectionType.Right); result = _drawningStormtrooperBase .MoveTransport(DirectionType.Right);
break; break;
} }
@ -85,4 +111,6 @@ public partial class FormStormtrooper : Form
} }
} }
} }