From e392583d5081923c39fec67315341da0fedf36ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=20=D0=91=D0=BE=D0=BD=D0=B4=D0=B0?= =?UTF-8?q?=D1=80=D0=B5=D0=BD=D0=BA=D0=BE?= Date: Tue, 18 Oct 2022 20:06:38 +0400 Subject: [PATCH 1/2] =?UTF-8?q?=D0=A4=D0=B8=D0=BA=D1=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- WarmlyShip/WarmlyShip/DrawingWarmlyShip.cs | 5 ++--- WarmlyShip/WarmlyShip/EntityWarmlyShip.cs | 2 +- WarmlyShip/WarmlyShip/FormClass.cs | 3 +-- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/WarmlyShip/WarmlyShip/DrawingWarmlyShip.cs b/WarmlyShip/WarmlyShip/DrawingWarmlyShip.cs index 36a30b4..71908a5 100644 --- a/WarmlyShip/WarmlyShip/DrawingWarmlyShip.cs +++ b/WarmlyShip/WarmlyShip/DrawingWarmlyShip.cs @@ -17,10 +17,9 @@ namespace WarmlyShip private readonly int _warmlyShipHeight = 50; //Высота отрисовки корабля //Инициализация - public void Init(int speed, float weight, Color bodyColor) + public DrawingWarmlyShip(int speed, float weight, Color bodyColor) { - warmlyShip = new EntityWarmlyShip(); - warmlyShip.Init(speed, weight, bodyColor); + warmlyShip = new EntityWarmlyShip(speed, weight, bodyColor); } //Начальные коордитанты diff --git a/WarmlyShip/WarmlyShip/EntityWarmlyShip.cs b/WarmlyShip/WarmlyShip/EntityWarmlyShip.cs index 4fb169a..1da24c8 100644 --- a/WarmlyShip/WarmlyShip/EntityWarmlyShip.cs +++ b/WarmlyShip/WarmlyShip/EntityWarmlyShip.cs @@ -14,7 +14,7 @@ namespace WarmlyShip public float Step => Speed * 100 / Weight; //Шаг при перемещении //Инициализация - public void Init(int speed, float weight, Color bodyColor) + public EntityWarmlyShip(int speed, float weight, Color bodyColor) { Random random = new Random(); Speed = speed <= 0 ? random.Next(50, 150) : speed; diff --git a/WarmlyShip/WarmlyShip/FormClass.cs b/WarmlyShip/WarmlyShip/FormClass.cs index abaae2a..f7d4013 100644 --- a/WarmlyShip/WarmlyShip/FormClass.cs +++ b/WarmlyShip/WarmlyShip/FormClass.cs @@ -20,8 +20,7 @@ namespace WarmlyShip private void ButtonCreate_Click(object sender, EventArgs e) { Random random = new Random(); - _warmlyShip = new DrawingWarmlyShip(); - _warmlyShip.Init(random.Next(100, 300), random.Next(1000, 3000), Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256))); + _warmlyShip = new DrawingWarmlyShip(random.Next(100, 300), random.Next(1000, 3000), Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256))); _warmlyShip.SetPosition(random.Next(10, 100), random.Next(10, 100), pictureBox.Width, pictureBox.Height); toolStripStatusSpeed.Text = $": {_warmlyShip.warmlyShip?.Speed}"; toolStripStatusWeight.Text = $": {_warmlyShip.warmlyShip?.Weight}"; -- 2.25.1 From 2bfb286f5d3552a53f73792159d1f5eca6aca73a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=20=D0=91=D0=BE=D0=BD=D0=B4=D0=B0?= =?UTF-8?q?=D1=80=D0=B5=D0=BD=D0=BA=D0=BE?= Date: Tue, 18 Oct 2022 20:14:31 +0400 Subject: [PATCH 2/2] Puk --- WarmlyShip/WarmlyShip/DrawingWarmlyShip.cs | 18 ++++++--- WarmlyShip/WarmlyShip/DrawningMotorShip.cs | 44 ++++++++++++++++++++++ WarmlyShip/WarmlyShip/EntityMotorShip.cs | 24 ++++++++++++ 3 files changed, 80 insertions(+), 6 deletions(-) create mode 100644 WarmlyShip/WarmlyShip/DrawningMotorShip.cs create mode 100644 WarmlyShip/WarmlyShip/EntityMotorShip.cs diff --git a/WarmlyShip/WarmlyShip/DrawingWarmlyShip.cs b/WarmlyShip/WarmlyShip/DrawingWarmlyShip.cs index 71908a5..1f6c264 100644 --- a/WarmlyShip/WarmlyShip/DrawingWarmlyShip.cs +++ b/WarmlyShip/WarmlyShip/DrawingWarmlyShip.cs @@ -8,13 +8,13 @@ namespace WarmlyShip { internal class DrawingWarmlyShip { - public EntityWarmlyShip warmlyShip { private set; get; } //Класс-сущность - public float _startPosX; //Координаты отрисовки по оси x - public float _startPosY; //Координаты отрисовки по оси y + public EntityWarmlyShip warmlyShip { protected set; get; } //Класс-сущность + protected float _startPosX; //Координаты отрисовки по оси x + protected float _startPosY; //Координаты отрисовки по оси y private int? _pictureWidth = null; //Ширина окна private int? _pictureHeight = null; //Высота окна - private readonly int _warmlyShipWidth = 125; //Ширина отрисовки корабля - private readonly int _warmlyShipHeight = 50; //Высота отрисовки корабля + protected readonly int _warmlyShipWidth = 125; //Ширина отрисовки корабля + protected readonly int _warmlyShipHeight = 50; //Высота отрисовки корабля //Инициализация public DrawingWarmlyShip(int speed, float weight, Color bodyColor) @@ -22,6 +22,12 @@ namespace WarmlyShip warmlyShip = new EntityWarmlyShip(speed, weight, bodyColor); } + protected DrawingWarmlyShip(int speed, float weight, Color bodyColor, int warmlyWidth, int warmlyHeight) : this(speed, weight, bodyColor) + { + _warmlyShipWidth = warmlyWidth; + _warmlyShipHeight = warmlyHeight; + } + //Начальные коордитанты public void SetPosition(int x, int y, int width, int height) { @@ -55,7 +61,7 @@ namespace WarmlyShip } //Отрисовка транспорта - public void DrawTransport(Graphics g) + public virtual void DrawTransport(Graphics g) { if (_startPosX < 0 || _startPosY < 0 || !_pictureHeight.HasValue || !_pictureWidth.HasValue) { diff --git a/WarmlyShip/WarmlyShip/DrawningMotorShip.cs b/WarmlyShip/WarmlyShip/DrawningMotorShip.cs new file mode 100644 index 0000000..0d17867 --- /dev/null +++ b/WarmlyShip/WarmlyShip/DrawningMotorShip.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WarmlyShip +{ + internal class DrawningMotorShip : DrawingWarmlyShip + { + public DrawningMotorShip(int speed, float weight, Color bodyColor, Color dopColor, bool tubes, bool cistern) : base(speed, weight, bodyColor, 150, 75) + { + warmlyShip = new EntityMotorShip(speed, weight, bodyColor, dopColor, tubes , cistern); + } + + public override void DrawTransport(Graphics g) + { + if (warmlyShip is not EntityMotorShip motorShip) + { + return; + } + + Pen pen = new(Color.Black, 2); + Brush dopBrush = new SolidBrush(motorShip.DopColor); + if (motorShip.Tubes) + { + g.FillRectangle(dopBrush, _startPosX + _warmlyShipWidth / 5, _startPosY, _warmlyShipWidth / 5, _warmlyShipHeight / 2); + g.DrawRectangle(pen, _startPosX + _warmlyShipWidth / 5, _startPosY, _warmlyShipWidth / 5, _warmlyShipHeight / 2); + g.FillRectangle(dopBrush, _startPosX + _warmlyShipWidth * 3 / 5, _startPosY, _warmlyShipWidth / 5, _warmlyShipHeight / 2); + g.DrawRectangle(pen, _startPosX + _warmlyShipWidth * 3 / 5, _startPosY, _warmlyShipWidth / 5, _warmlyShipHeight / 2); + } + + _startPosY += 25; + base.DrawTransport(g); + _startPosY -= 25; + + if (motorShip.Cistern) + { + g.FillEllipse(dopBrush, _startPosX, _startPosY + 25, 25, 20); + g.DrawEllipse(pen, _startPosX, _startPosY + 25, 25, 20); + } + } + } +} \ No newline at end of file diff --git a/WarmlyShip/WarmlyShip/EntityMotorShip.cs b/WarmlyShip/WarmlyShip/EntityMotorShip.cs new file mode 100644 index 0000000..55ddeb5 --- /dev/null +++ b/WarmlyShip/WarmlyShip/EntityMotorShip.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WarmlyShip +{ + internal class EntityMotorShip : EntityWarmlyShip + { + public Color DopColor { get; private set; } + public bool Tubes { get; private set; } + public bool Cistern { get; private set; } + + public EntityMotorShip(int speed, float weight, Color bodyColor, Color dopColor, bool tubes, bool cistern) : base(speed, weight, bodyColor) + { + DopColor = dopColor; + Tubes = tubes; + Cistern = cistern; + } + + } +} + \ No newline at end of file -- 2.25.1