From 7d2726f5f7e6825e1fab604244dd588c2370f350 Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 13 Feb 2025 16:51:00 +0400 Subject: [PATCH 01/11] =?UTF-8?q?=D0=BB=D0=B0=D0=B1.=D1=80=D0=B0=D0=B1=202?= =?UTF-8?q?=20(1=20=D1=87=D0=B0=D1=81=D1=82=D1=8C)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{ => Drawnings}/DirectionType.cs | 2 +- .../Drawnings/DrawningCatamaran.cs | 60 ++++++++++ .../DrawningCatamaranBase.cs} | 111 +++++++++--------- .../{ => Entities}/EntityCatamaran.cs | 28 +---- .../Entities/EntityCatamaranBase.cs | 44 +++++++ .../FormCatamaran.Designer.cs | 20 +++- .../ProjectCatamaran/FormCatamaran.cs | 58 ++++++--- 7 files changed, 219 insertions(+), 104 deletions(-) rename ProjectCatamaran/ProjectCatamaran/{ => Drawnings}/DirectionType.cs (91%) create mode 100644 ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningCatamaran.cs rename ProjectCatamaran/ProjectCatamaran/{DrawningCatamaran.cs => Drawnings/DrawningCatamaranBase.cs} (54%) rename ProjectCatamaran/ProjectCatamaran/{ => Entities}/EntityCatamaran.cs (63%) create mode 100644 ProjectCatamaran/ProjectCatamaran/Entities/EntityCatamaranBase.cs diff --git a/ProjectCatamaran/ProjectCatamaran/DirectionType.cs b/ProjectCatamaran/ProjectCatamaran/Drawnings/DirectionType.cs similarity index 91% rename from ProjectCatamaran/ProjectCatamaran/DirectionType.cs rename to ProjectCatamaran/ProjectCatamaran/Drawnings/DirectionType.cs index 18ae55c..6d2f75e 100644 --- a/ProjectCatamaran/ProjectCatamaran/DirectionType.cs +++ b/ProjectCatamaran/ProjectCatamaran/Drawnings/DirectionType.cs @@ -4,7 +4,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -namespace ProjectCatamaran; +namespace ProjectCatamaran.Drawnings; public enum DirectionType { diff --git a/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningCatamaran.cs b/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningCatamaran.cs new file mode 100644 index 0000000..4eb33a4 --- /dev/null +++ b/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningCatamaran.cs @@ -0,0 +1,60 @@ +using ProjectCatamaran.Entities; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectCatamaran.Drawnings; +/// +/// класс отвечающиай за перемещение и отрисовку +/// +public class DrawningCatamaran : DrawningCatamaranBase +{ + /// + /// Конструктор + /// + /// Скорость + /// Вес катера + /// Основной цвет + /// Дополнительный цвет(для опциональных элементов) + /// Признак (опция) наличие плавников + /// Признак (опция) наличие парус + public DrawningCatamaran(int speed, double weight, Color bodyColor, Color additionalColor, bool floats, bool sail) : + base(65,40) + { + EntityCatamaranBase = new EntityCatamaran(speed, weight, bodyColor, additionalColor, floats, sail); + } + + public override void DrawTransport(Graphics g) + { + if (EntityCatamaranBase == null || EntityCatamaranBase is not EntityCatamaran catamaran || !_startPosX.HasValue || !_startPosY.HasValue) + { + return; + } + + _startPosX += 5; + _startPosY += 15; + base.DrawTransport(g); + _startPosX -= 5; + _startPosY -= 15; + Brush brFloatsAndSail = new SolidBrush(catamaran.AdditionalColor); + //плавники + if (catamaran.Floats) + { + g.FillRectangle(brFloatsAndSail, _startPosX.Value, _startPosY.Value + 10, 45, 5); + g.FillRectangle(brFloatsAndSail, _startPosX.Value, _startPosY.Value + 35, 45, 5); + } + // парус + if (catamaran.Sail) + { + Point[] sailFigure = + { + new Point(_startPosX.Value + 25,_startPosY.Value + 25), + new Point(_startPosX.Value + 35 ,_startPosY.Value + 25), + new Point(_startPosX.Value + 25,_startPosY.Value), + }; + g.FillPolygon(brFloatsAndSail, sailFigure); + } + } +} \ No newline at end of file diff --git a/ProjectCatamaran/ProjectCatamaran/DrawningCatamaran.cs b/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningCatamaranBase.cs similarity index 54% rename from ProjectCatamaran/ProjectCatamaran/DrawningCatamaran.cs rename to ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningCatamaranBase.cs index 6266ca6..77c1556 100644 --- a/ProjectCatamaran/ProjectCatamaran/DrawningCatamaran.cs +++ b/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningCatamaranBase.cs @@ -1,20 +1,18 @@ -using ProjectCatamaran; +using ProjectCatamaran.Entities; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; -namespace ProjectCatamaran; -/// -/// класс отвечающиай за перемещение и отрисовку -/// -public class DrawningCatamaran +namespace ProjectCatamaran.Drawnings; +public class DrawningCatamaranBase { + /// /// класс-сущность /// - public EntityCatamaran? EntityCatamaran { get; private set; } + public EntityCatamaranBase? EntityCatamaranBase { get; protected set; } /// /// ширина окна /// @@ -26,39 +24,52 @@ public class DrawningCatamaran /// /// Левая координата прорисовки автопоезда /// - private int? _startPosX; + protected int? _startPosX; /// /// Верхняя координата прорисовки автопоезда /// - private int? _startPosY; + protected int? _startPosY; /// /// Ширина прорисовки катамарана /// - private readonly int _drawningCatamaranWidth = 65; + private readonly int _drawningCatamaranWidth = 60; /// /// Высота прорисовки катамарана /// - private readonly int _drawningCatamaranHeight = 40; + private readonly int _drawningCatamaranHeight = 25; /// - /// Инициализация полей обьекта-класса спортивного автомобиля + /// пустой конструктор /// - /// Скорость - /// Вес катера - /// Основной цвет - /// Дополнительный цвет(для опциональных элементов) - /// Признак (опция) наличие плавников - /// Признак (опция) наличие парус - public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool floats, bool brush) + private DrawningCatamaranBase() { - EntityCatamaran = new EntityCatamaran(); - EntityCatamaran.Init(speed, weight, bodyColor, additionalColor, floats, brush); - _pictureWidth = null; _pictureHeight = null; _startPosX = null; _startPosY = null; } /// + /// Конструктор + /// + /// Скорость + /// Вес катера + /// Основной цвет + public DrawningCatamaranBase(int speed, double weight, Color bodyColor) : this() + { + EntityCatamaranBase = new EntityCatamaranBase(speed, weight, bodyColor); + + } + /// + /// Конструктор + /// + /// Ширина катера + /// высота катера + public DrawningCatamaranBase(int drawningCatamaranWidth, int drawningCatamaranHeight) : this() + { + _drawningCatamaranWidth = drawningCatamaranWidth; + _drawningCatamaranHeight = drawningCatamaranHeight; + + } + /// /// установка границ поля /// /// ширина @@ -101,34 +112,34 @@ public class DrawningCatamaran /// true - перемещение выполнено , false - перемещение невозможно public bool MoveTransport(DirectionType direction) { - if (EntityCatamaran == null || !_startPosX.HasValue || !_startPosY.HasValue) + if (EntityCatamaranBase == null || !_startPosX.HasValue || !_startPosY.HasValue) { return false; } switch (direction) { case DirectionType.Left: - if (_startPosX.Value - EntityCatamaran.Step > 0) + if (_startPosX.Value - EntityCatamaranBase.Step > 0) { - _startPosX -= (int)EntityCatamaran.Step; + _startPosX -= (int)EntityCatamaranBase.Step; } return true; case DirectionType.Up: - if (_startPosY.Value - EntityCatamaran.Step > 0) + if (_startPosY.Value - EntityCatamaranBase.Step > 0) { - _startPosY -= (int)EntityCatamaran.Step; + _startPosY -= (int)EntityCatamaranBase.Step; } return true; case DirectionType.Right: - if (_startPosX.Value + (int)EntityCatamaran.Step + _drawningCatamaranWidth <= _pictureWidth) + if (_startPosX.Value + (int)EntityCatamaranBase.Step + _drawningCatamaranWidth <= _pictureWidth) { - _startPosX += (int)EntityCatamaran.Step; + _startPosX += (int)EntityCatamaranBase.Step; } return true; case DirectionType.Down: - if (_startPosY.Value + (int)EntityCatamaran.Step + _drawningCatamaranHeight <= _pictureHeight) + if (_startPosY.Value + (int)EntityCatamaranBase.Step + _drawningCatamaranHeight <= _pictureHeight) { - _startPosY += (int)EntityCatamaran.Step; + _startPosY += (int)EntityCatamaranBase.Step; } return true; default: @@ -139,42 +150,26 @@ public class DrawningCatamaran /// отрисовка /// /// - public void DrawTransport(Graphics g) + public virtual void DrawTransport(Graphics g) { - if (EntityCatamaran == null || !_startPosX.HasValue || !_startPosY.HasValue) + if (EntityCatamaranBase == null || !_startPosX.HasValue || !_startPosY.HasValue) { return; } - Brush brBody = new SolidBrush(EntityCatamaran.BodyColor); - Brush brFloatsAndSail = new SolidBrush(EntityCatamaran.AdditionalColor); - g.FillRectangle(brBody, _startPosX.Value + 5, _startPosY.Value + 15, 40, 20); + Brush brBody = new SolidBrush(EntityCatamaranBase.BodyColor); + + g.FillRectangle(brBody, _startPosX.Value, _startPosY.Value, 40, 20); Point[] triangle = { - new Point(_startPosX.Value + 45,_startPosY.Value + 15), - new Point(_startPosX.Value + 65,_startPosY.Value + 25), - new Point(_startPosX.Value + 45,_startPosY.Value + 35), + new Point(_startPosX.Value + 40,_startPosY.Value), + new Point(_startPosX.Value + 60,_startPosY.Value + 10), + new Point(_startPosX.Value + 40,_startPosY.Value + 20), }; g.FillPolygon(brBody, triangle); - g.FillEllipse(new SolidBrush(Color.Black), _startPosX.Value + 12, _startPosY.Value + 19, 23, 10); - //плавники - if (EntityCatamaran.Floats) - { - g.FillRectangle(brFloatsAndSail, _startPosX.Value, _startPosY.Value + 10, 45, 5); - g.FillRectangle(brFloatsAndSail, _startPosX.Value, _startPosY.Value + 35, 45, 5); - } - // парус - if (EntityCatamaran.Sail) - { - Point[] sailFigure = - { - new Point(_startPosX.Value + 25,_startPosY.Value + 25), - new Point(_startPosX.Value + 35 ,_startPosY.Value + 25), - new Point(_startPosX.Value + 25,_startPosY.Value), - }; - g.FillPolygon(brFloatsAndSail, sailFigure); - } + g.FillEllipse(new SolidBrush(Color.Black), _startPosX.Value + 7, _startPosY.Value + 4, 23, 10); + } +} -} \ No newline at end of file diff --git a/ProjectCatamaran/ProjectCatamaran/EntityCatamaran.cs b/ProjectCatamaran/ProjectCatamaran/Entities/EntityCatamaran.cs similarity index 63% rename from ProjectCatamaran/ProjectCatamaran/EntityCatamaran.cs rename to ProjectCatamaran/ProjectCatamaran/Entities/EntityCatamaran.cs index afceb4b..022216d 100644 --- a/ProjectCatamaran/ProjectCatamaran/EntityCatamaran.cs +++ b/ProjectCatamaran/ProjectCatamaran/Entities/EntityCatamaran.cs @@ -1,21 +1,9 @@ -namespace ProjectCatamaran; +namespace ProjectCatamaran.Entities; /// -/// Класс-сущность "Авто поезд" +/// Класс-сущность "Катамарана" /// -public class EntityCatamaran +public class EntityCatamaran : EntityCatamaranBase { - /// - /// Скорость - /// - public int Speed { get; set; } - /// - /// Вес авто - /// - public double Weight { get; set; } - /// - /// Основной цвет - /// - public Color BodyColor { get; private set; } /// /// Дополнительный цвет(для опциональных элементов) /// @@ -29,10 +17,6 @@ public class EntityCatamaran /// public bool Sail { get; private set; } /// - /// Шаг перемещения - /// - public double Step => Speed * 100 / Weight; - /// /// Инициализация полей обьекта-класса спортивного автомобиля /// /// Скорость @@ -41,11 +25,9 @@ public class EntityCatamaran /// Дополнительный цвет(для опциональных элементов) /// Признак (опция) наличие плавников /// Признак (опция) наличие паруса - public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool floats, bool sail) + public EntityCatamaran(int speed, double weight, Color bodyColor, Color additionalColor, bool floats, bool sail) + : base(speed,weight,bodyColor) { - Speed = speed; - Weight = weight; - BodyColor = bodyColor; AdditionalColor = additionalColor; Floats = floats; Sail = sail; diff --git a/ProjectCatamaran/ProjectCatamaran/Entities/EntityCatamaranBase.cs b/ProjectCatamaran/ProjectCatamaran/Entities/EntityCatamaranBase.cs new file mode 100644 index 0000000..22064b0 --- /dev/null +++ b/ProjectCatamaran/ProjectCatamaran/Entities/EntityCatamaranBase.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectCatamaran.Entities; +/// +/// класс-сущность "обычный катамаран" +/// +public class EntityCatamaranBase +{ + /// + /// Скорость + /// + public int Speed { get; set; } + /// + /// Вес авто + /// + public double Weight { get; set; } + /// + /// Основной цвет + /// + public Color BodyColor { get; private set; } + /// + /// Шаг перемещения + /// + public double Step => Speed * 100 / Weight; + + /// + /// конструктор сущности + /// + /// Скорость + /// Вес авто + /// Основной цвет + public EntityCatamaranBase(int speed, double weight, Color bodyColor) + { + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + + } +} diff --git a/ProjectCatamaran/ProjectCatamaran/FormCatamaran.Designer.cs b/ProjectCatamaran/ProjectCatamaran/FormCatamaran.Designer.cs index 12e51bf..4107701 100644 --- a/ProjectCatamaran/ProjectCatamaran/FormCatamaran.Designer.cs +++ b/ProjectCatamaran/ProjectCatamaran/FormCatamaran.Designer.cs @@ -34,6 +34,7 @@ buttonRight = new Button(); buttonLeft = new Button(); buttonDown = new Button(); + buttonCreateCatamaranBase = new Button(); ((System.ComponentModel.ISupportInitialize)pictureBoxCatamaran).BeginInit(); SuspendLayout(); // @@ -49,11 +50,11 @@ // buttonCreateCatamaran // buttonCreateCatamaran.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - buttonCreateCatamaran.Location = new Point(12, 406); + buttonCreateCatamaran.Location = new Point(12, 402); buttonCreateCatamaran.Name = "buttonCreateCatamaran"; - buttonCreateCatamaran.Size = new Size(75, 23); + buttonCreateCatamaran.Size = new Size(166, 40); buttonCreateCatamaran.TabIndex = 1; - buttonCreateCatamaran.Text = "Создать"; + buttonCreateCatamaran.Text = "Создать катамаран"; buttonCreateCatamaran.UseVisualStyleBackColor = true; buttonCreateCatamaran.Click += ButtonCreateCatamaran_Click; // @@ -105,11 +106,23 @@ buttonDown.UseVisualStyleBackColor = true; buttonDown.Click += ButtonMove_Click; // + // buttonCreateCatamaranBase + // + buttonCreateCatamaranBase.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonCreateCatamaranBase.Location = new Point(184, 402); + buttonCreateCatamaranBase.Name = "buttonCreateCatamaranBase"; + buttonCreateCatamaranBase.Size = new Size(166, 40); + buttonCreateCatamaranBase.TabIndex = 6; + buttonCreateCatamaranBase.Text = "Создать базовый катамаран"; + buttonCreateCatamaranBase.UseVisualStyleBackColor = true; + buttonCreateCatamaranBase.Click += ButtonCreateCatamaranBase_Click; + // // FormCatamaran // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(800, 450); + Controls.Add(buttonCreateCatamaranBase); Controls.Add(buttonDown); Controls.Add(buttonLeft); Controls.Add(buttonRight); @@ -130,5 +143,6 @@ private Button buttonRight; private Button buttonLeft; private Button buttonDown; + private Button buttonCreateCatamaranBase; } } \ No newline at end of file diff --git a/ProjectCatamaran/ProjectCatamaran/FormCatamaran.cs b/ProjectCatamaran/ProjectCatamaran/FormCatamaran.cs index 1560145..ba6fb78 100644 --- a/ProjectCatamaran/ProjectCatamaran/FormCatamaran.cs +++ b/ProjectCatamaran/ProjectCatamaran/FormCatamaran.cs @@ -1,8 +1,9 @@ -using ProjectCatamaran; +using ProjectCatamaran.Drawnings; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; +using System.Diagnostics; using System.Drawing; using System.Linq; using System.Text; @@ -13,7 +14,7 @@ namespace ProjectCatamaran { public partial class FormCatamaran : Form { - private DrawningCatamaran? _drawningCatamaran; + private DrawningCatamaranBase? _drawningCatamaranBase; public FormCatamaran() { InitializeComponent(); @@ -21,19 +22,19 @@ namespace ProjectCatamaran private void Draw() { - if (_drawningCatamaran == null) + if (_drawningCatamaranBase == null) { return; } Bitmap bmp = new(pictureBoxCatamaran.Width, pictureBoxCatamaran.Height); Graphics gr = Graphics.FromImage(bmp); - _drawningCatamaran.DrawTransport(gr); + _drawningCatamaranBase.DrawTransport(gr); pictureBoxCatamaran.Image = bmp; } - + private void ButtonMove_Click(object sender, EventArgs e) { - if (_drawningCatamaran == null) + if (_drawningCatamaranBase == null) { return; } @@ -42,16 +43,16 @@ namespace ProjectCatamaran switch (name) { case "buttonUp": - result = _drawningCatamaran.MoveTransport(DirectionType.Up); + result = _drawningCatamaranBase.MoveTransport(DirectionType.Up); break; case "buttonDown": - result = _drawningCatamaran.MoveTransport(DirectionType.Down); + result = _drawningCatamaranBase.MoveTransport(DirectionType.Down); break; case "buttonLeft": - result = _drawningCatamaran.MoveTransport(DirectionType.Left); + result = _drawningCatamaranBase.MoveTransport(DirectionType.Left); break; case "buttonRight": - result = _drawningCatamaran.MoveTransport(DirectionType.Right); + result = _drawningCatamaranBase.MoveTransport(DirectionType.Right); break; } if (result) @@ -60,18 +61,37 @@ namespace ProjectCatamaran } } + private void CreateObject(string type) + { + Random random = new(); + switch (type) + { + case nameof(DrawningCatamaranBase): + _drawningCatamaranBase = new DrawningCatamaranBase(random.Next(100, 300), random.Next(1000, 3000), + Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256))); + break; + case nameof(DrawningCatamaran): + _drawningCatamaranBase = new DrawningCatamaran(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))); + break; + default: + return; + } + _drawningCatamaranBase.SetPictureSize(pictureBoxCatamaran.Width, pictureBoxCatamaran.Height); + _drawningCatamaranBase.SetPosition(random.Next(10, 100), random.Next(10, 100)); + Draw(); + + } private void ButtonCreateCatamaran_Click(object sender, EventArgs e) { - Random random = new Random(); - _drawningCatamaran = new DrawningCatamaran(); - _drawningCatamaran.Init(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))); + CreateObject(nameof(DrawningCatamaran)); + } - _drawningCatamaran.SetPictureSize(pictureBoxCatamaran.Width, pictureBoxCatamaran.Height); - _drawningCatamaran.SetPosition(random.Next(10, 100), random.Next(10, 100)); - Draw(); + private void ButtonCreateCatamaranBase_Click(object sender, EventArgs e) + { + CreateObject(nameof(DrawningCatamaranBase)); } } } \ No newline at end of file -- 2.25.1 From 336c2e7d1cd8e2f474fda4664ee08a15edc86f96 Mon Sep 17 00:00:00 2001 From: Nikita Date: Thu, 13 Feb 2025 18:50:39 +0400 Subject: [PATCH 02/11] =?UTF-8?q?2=20=D1=87=D0=B0=D1=81=D1=82=D1=8C=20?= =?UTF-8?q?=D0=BB=D0=B0=D0=B1=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Drawnings/DirectionType.cs | 4 + .../Drawnings/DrawningCatamaranBase.cs | 17 +++ .../FormCatamaran.Designer.cs | 27 ++++ .../ProjectCatamaran/FormCatamaran.cs | 45 ++++++- .../MovementStrategy/AbstractStrategy.cs | 124 ++++++++++++++++++ .../MovementStrategy/IMoveableObjects.cs | 25 ++++ .../MovementStrategy/MoveToBorder.cs | 37 ++++++ .../MovementStrategy/MoveToCenter.cs | 60 +++++++++ .../MovementStrategy/MoveableCatamaranBase.cs | 67 ++++++++++ .../MovementStrategy/MovementDirection.cs | 27 ++++ .../MovementStrategy/ObjectParameters.cs | 66 ++++++++++ .../MovementStrategy/StrategyStatus.cs | 13 ++ 12 files changed, 511 insertions(+), 1 deletion(-) create mode 100644 ProjectCatamaran/ProjectCatamaran/MovementStrategy/AbstractStrategy.cs create mode 100644 ProjectCatamaran/ProjectCatamaran/MovementStrategy/IMoveableObjects.cs create mode 100644 ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs create mode 100644 ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToCenter.cs create mode 100644 ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveableCatamaranBase.cs create mode 100644 ProjectCatamaran/ProjectCatamaran/MovementStrategy/MovementDirection.cs create mode 100644 ProjectCatamaran/ProjectCatamaran/MovementStrategy/ObjectParameters.cs create mode 100644 ProjectCatamaran/ProjectCatamaran/MovementStrategy/StrategyStatus.cs diff --git a/ProjectCatamaran/ProjectCatamaran/Drawnings/DirectionType.cs b/ProjectCatamaran/ProjectCatamaran/Drawnings/DirectionType.cs index 6d2f75e..15c6362 100644 --- a/ProjectCatamaran/ProjectCatamaran/Drawnings/DirectionType.cs +++ b/ProjectCatamaran/ProjectCatamaran/Drawnings/DirectionType.cs @@ -8,6 +8,10 @@ namespace ProjectCatamaran.Drawnings; public enum DirectionType { + /// + /// неизвестное направление + /// + Unknown = -1, /// /// Вверх /// diff --git a/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningCatamaranBase.cs b/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningCatamaranBase.cs index 77c1556..9ce8fcd 100644 --- a/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningCatamaranBase.cs +++ b/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningCatamaranBase.cs @@ -37,6 +37,23 @@ public class DrawningCatamaranBase /// Высота прорисовки катамарана /// private readonly int _drawningCatamaranHeight = 25; + /// + /// координата х обьекта + /// + public int? GetPosX => _startPosX; + /// + /// координата Y обьекта + /// + public int? GetPosY => _startPosY; + /// + /// ширина обьекта + /// + public int GetWidth => _drawningCatamaranWidth; + /// + /// высота обьекта + /// + public int GetHeight => _drawningCatamaranHeight; + /// /// пустой конструктор /// diff --git a/ProjectCatamaran/ProjectCatamaran/FormCatamaran.Designer.cs b/ProjectCatamaran/ProjectCatamaran/FormCatamaran.Designer.cs index 4107701..3ceeaf4 100644 --- a/ProjectCatamaran/ProjectCatamaran/FormCatamaran.Designer.cs +++ b/ProjectCatamaran/ProjectCatamaran/FormCatamaran.Designer.cs @@ -35,6 +35,8 @@ buttonLeft = new Button(); buttonDown = new Button(); buttonCreateCatamaranBase = new Button(); + comboBoxStrategy = new ComboBox(); + buttonStrategyStep = new Button(); ((System.ComponentModel.ISupportInitialize)pictureBoxCatamaran).BeginInit(); SuspendLayout(); // @@ -117,11 +119,34 @@ buttonCreateCatamaranBase.UseVisualStyleBackColor = true; buttonCreateCatamaranBase.Click += ButtonCreateCatamaranBase_Click; // + // comboBoxStrategy + // + comboBoxStrategy.DropDownStyle = ComboBoxStyle.DropDownList; + comboBoxStrategy.FormattingEnabled = true; + comboBoxStrategy.Items.AddRange(new object[] { "К центру", "К краю" }); + comboBoxStrategy.Location = new Point(668, 12); + comboBoxStrategy.Name = "comboBoxStrategy"; + comboBoxStrategy.Size = new Size(121, 23); + comboBoxStrategy.TabIndex = 7; + // + // buttonStrategyStep + // + buttonStrategyStep.Location = new Point(709, 41); + buttonStrategyStep.Name = "buttonStrategyStep"; + buttonStrategyStep.RightToLeft = RightToLeft.Yes; + buttonStrategyStep.Size = new Size(75, 23); + buttonStrategyStep.TabIndex = 8; + buttonStrategyStep.Text = "Шаг"; + buttonStrategyStep.UseVisualStyleBackColor = true; + buttonStrategyStep.Click += ButtonStrategyStep_Click; + // // FormCatamaran // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; ClientSize = new Size(800, 450); + Controls.Add(buttonStrategyStep); + Controls.Add(comboBoxStrategy); Controls.Add(buttonCreateCatamaranBase); Controls.Add(buttonDown); Controls.Add(buttonLeft); @@ -144,5 +169,7 @@ private Button buttonLeft; private Button buttonDown; private Button buttonCreateCatamaranBase; + private ComboBox comboBoxStrategy; + private Button buttonStrategyStep; } } \ No newline at end of file diff --git a/ProjectCatamaran/ProjectCatamaran/FormCatamaran.cs b/ProjectCatamaran/ProjectCatamaran/FormCatamaran.cs index ba6fb78..d6ab145 100644 --- a/ProjectCatamaran/ProjectCatamaran/FormCatamaran.cs +++ b/ProjectCatamaran/ProjectCatamaran/FormCatamaran.cs @@ -9,15 +9,18 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; +using ProjectCatamaran.MovementStrategy; namespace ProjectCatamaran { public partial class FormCatamaran : Form { private DrawningCatamaranBase? _drawningCatamaranBase; + private AbstractStrategy? _strategy; public FormCatamaran() { InitializeComponent(); + _strategy = null; } private void Draw() @@ -81,8 +84,9 @@ namespace ProjectCatamaran } _drawningCatamaranBase.SetPictureSize(pictureBoxCatamaran.Width, pictureBoxCatamaran.Height); _drawningCatamaranBase.SetPosition(random.Next(10, 100), random.Next(10, 100)); + _strategy = null; + comboBoxStrategy.Enabled = true; Draw(); - } private void ButtonCreateCatamaran_Click(object sender, EventArgs e) { @@ -93,5 +97,44 @@ namespace ProjectCatamaran { CreateObject(nameof(DrawningCatamaranBase)); } + /// + /// Обработка нажатия кнопки "Шаг" + /// + /// + /// + private void ButtonStrategyStep_Click(object sender, EventArgs e) + { + if (_drawningCatamaranBase == null) + { + return; + } + if (comboBoxStrategy.Enabled) + { + _strategy = comboBoxStrategy.SelectedIndex switch + { + 0 => new MoveToCenter(), + 1 => new MoveToBorder(), + _ => null, + }; + if (_strategy == null) + { + return; + } + _strategy.SetData(new MoveableCatamaranBase(_drawningCatamaranBase), + pictureBoxCatamaran.Width, pictureBoxCatamaran.Height); + } + if (_strategy == null) + { + return; + } + comboBoxStrategy.Enabled = false; + _strategy.MakeStep(); + Draw(); + if (_strategy.GetStatus() == StrategyStatus.Finish) + { + comboBoxStrategy.Enabled = true; + _strategy = null; + } + } } } \ No newline at end of file diff --git a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/AbstractStrategy.cs b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/AbstractStrategy.cs new file mode 100644 index 0000000..d2395be --- /dev/null +++ b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/AbstractStrategy.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectCatamaran.MovementStrategy; +public abstract class AbstractStrategy +{ + /// + /// Перемещаемый объект + /// + private IMoveableObject? _moveableObject; + /// + /// Статус перемещения + /// + private StrategyStatus _state = StrategyStatus.NotInit; + /// + /// Ширина поля + /// + protected int FieldWidth { get; private set; } + /// + /// Высота поля + /// + protected int FieldHeight { get; private set; } + /// + /// Статус перемещения + /// + public StrategyStatus GetStatus() { return _state; } + /// + /// Установка данных + /// + /// Перемещаемый объект + /// Ширина поля + /// Высота поля + public void SetData(IMoveableObject moveableObject, int width, int height) + { + if (moveableObject == null) + { + _state = StrategyStatus.NotInit; + return; + } + _state = StrategyStatus.InProgress; + _moveableObject = moveableObject; + FieldWidth = width; + FieldHeight = height; + } + /// + /// Шаг перемещения + /// + public void MakeStep() + { + if (_state != StrategyStatus.InProgress) + { + return; + } + if (IsTargetDestination()) + { + _state = StrategyStatus.Finish; + return; + } + MoveToTarget(); + } + /// + /// Перемещение влево + /// + /// Результат перемещения (true - удалось переместиться, false - неудача) + protected bool MoveLeft() => MoveTo(MovementDirection.Left); + /// + /// Перемещение вправо + /// + /// Результат перемещения (true - удалось переместиться, false - неудача) + protected bool MoveRight() => MoveTo(MovementDirection.Right); + /// + /// Перемещение вверх + /// + /// Результат перемещения (true - удалось переместиться, false - неудача) + protected bool MoveUp() => MoveTo(MovementDirection.Up); + /// + /// Перемещение вниз + /// + /// Результат перемещения (true - удалось переместиться, false - неудача) + protected bool MoveDown() => MoveTo(MovementDirection.Down); + /// + /// Параметры объекта + /// + protected ObjectParameters? GetObjectParameters => + _moveableObject?.GetObjectPosition; + /// + /// Шаг объекта + /// + /// + protected int? GetStep() + { + if (_state != StrategyStatus.InProgress) + { + return null; + } + return _moveableObject?.GetStep; + } + /// + /// Перемещение к цели + /// + protected abstract void MoveToTarget(); + /// + /// Достигнута ли цель + /// + /// + protected abstract bool IsTargetDestination(); + /// + /// Попытка перемещения в требуемом направлении + /// + /// Направление + /// Результат попытки (true - удалось переместиться, false - неудача) + private bool MoveTo(MovementDirection movementDirection) + { + if (_state != StrategyStatus.InProgress) + { + return false; + } + return _moveableObject?.TryMoveObject(movementDirection) ?? false; + } +} + diff --git a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/IMoveableObjects.cs b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/IMoveableObjects.cs new file mode 100644 index 0000000..49cfdbe --- /dev/null +++ b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/IMoveableObjects.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectCatamaran.MovementStrategy; +public interface IMoveableObject +{ + /// + /// Получение координаты объекта + /// + ObjectParameters? GetObjectPosition { get; } + /// + /// Шаг объекта + /// + int GetStep { get; } + /// + /// Попытка переместить объект в указанном направлении + /// + /// Направление + /// true - объект перемещен, false - перемещение невозможно + bool TryMoveObject(MovementDirection direction); +} + diff --git a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs new file mode 100644 index 0000000..ba16109 --- /dev/null +++ b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs @@ -0,0 +1,37 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectCatamaran.MovementStrategy; +public class MoveToBorder : AbstractStrategy +{ + /// + /// движение до правого края + /// + protected override void MoveToTarget() + { + ObjectParameters? objParams = GetObjectParameters; + if (objParams == null) + return; + if (objParams.RightBorder + GetStep() < FieldWidth) + MoveRight(); + if (objParams.DownBorder + GetStep() < FieldHeight) + MoveDown(); + + } + /// + /// проверка достижения цели + /// + /// true - достиг , false - нет + protected override bool IsTargetDestination() + { + ObjectParameters? objParams = GetObjectParameters; + if (objParams == null) + return false; + return objParams.RightBorder + GetStep() >= FieldWidth && + objParams.DownBorder + GetStep() >= FieldHeight ; + } +} + diff --git a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToCenter.cs b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToCenter.cs new file mode 100644 index 0000000..280f6f3 --- /dev/null +++ b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToCenter.cs @@ -0,0 +1,60 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectCatamaran.MovementStrategy; +/// +/// стратегия перемещения обьекта в центр экрана +/// +public class MoveToCenter : AbstractStrategy +{ + protected override void MoveToTarget() + { + ObjectParameters? objParams = GetObjectParameters; + if (objParams == null) + { + return; + } + int diffX = objParams.ObjectMiddleHorizontal - FieldWidth / 2; + if (Math.Abs(diffX) > GetStep()) + { + if (diffX > 0) + { + MoveLeft(); + } + else + { + MoveRight(); + } + } + int diffY = objParams.ObjectMiddleVertical - FieldHeight / 2; + if (Math.Abs(diffY) > GetStep()) + { + if (diffY > 0) + { + MoveUp(); + } + else + { + MoveDown(); + } + } + } + + protected override bool IsTargetDestination() + { + ObjectParameters? objParams = GetObjectParameters; + if (objParams == null) + { + return false; + } + return objParams.ObjectMiddleHorizontal - GetStep() <= FieldWidth / 2 + && objParams.ObjectMiddleHorizontal + GetStep() >= FieldWidth / 2 && + objParams.ObjectMiddleVertical - GetStep() <= FieldHeight / 2 + && objParams.ObjectMiddleVertical + GetStep() >= FieldHeight / 2; + } + +} + diff --git a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveableCatamaranBase.cs b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveableCatamaranBase.cs new file mode 100644 index 0000000..d13cde3 --- /dev/null +++ b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveableCatamaranBase.cs @@ -0,0 +1,67 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using ProjectCatamaran.Drawnings; + +namespace ProjectCatamaran.MovementStrategy +{ + internal class MoveableCatamaranBase : IMoveableObject + { + /// + /// Поле-объект класса DrawningCatamaranBase или его наследника + /// + private DrawningCatamaranBase _catamaranBase = null; + /// + /// Конструктор + /// + /// Объект класса DrawningCatamaranBase + public MoveableCatamaranBase(DrawningCatamaranBase catamaranBase) + { + _catamaranBase = catamaranBase; + } + + public ObjectParameters? GetObjectPosition + { + get + { + if (_catamaranBase == null || _catamaranBase.EntityCatamaranBase == null || !_catamaranBase.GetPosX.HasValue + || !_catamaranBase.GetPosY.HasValue) + { + return null; + } + + return new ObjectParameters(_catamaranBase.GetPosX.Value, _catamaranBase.GetPosY.Value, + _catamaranBase.GetWidth, _catamaranBase.GetHeight); + } + } + + public int GetStep => (int)(_catamaranBase?.EntityCatamaranBase?.Step ?? 0); + public bool TryMoveObject(MovementDirection direction) + { + if (_catamaranBase == null || _catamaranBase.EntityCatamaranBase == null) + { + return false; + } + + return _catamaranBase.MoveTransport(GetDirectionType(direction)); + } + /// + /// Конвертация из MovementDirection в DirectionType + /// + /// + /// DirectionType + private static DirectionType GetDirectionType(MovementDirection direction) + { + return direction switch + { + MovementDirection.Left => DirectionType.Left, + MovementDirection.Right => DirectionType.Right, + MovementDirection.Up => DirectionType.Up, + MovementDirection.Down => DirectionType.Down, + _ => DirectionType.Unknown + }; + } + } +} diff --git a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MovementDirection.cs b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MovementDirection.cs new file mode 100644 index 0000000..0c99da6 --- /dev/null +++ b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MovementDirection.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectCatamaran.MovementStrategy; +public enum MovementDirection +{ + + /// + /// Вверх + /// + Up = 1, + /// + /// Вниз + /// + Down = 2, + /// + /// Влево + /// + Left = 3, + /// + /// Вправо + /// + Right = 4 +} diff --git a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/ObjectParameters.cs b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/ObjectParameters.cs new file mode 100644 index 0000000..b9d9e0b --- /dev/null +++ b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/ObjectParameters.cs @@ -0,0 +1,66 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectCatamaran.MovementStrategy; +public class ObjectParameters +{ + /// + /// Координата X + /// + private readonly int _x; + /// + /// Координата Y + /// + private readonly int _y; + /// + /// Ширина объекта + /// + private readonly int _width; + /// + /// Высота объекта + /// + private readonly int _height; + /// + /// Левая граница + /// + public int LeftBorder => _x; + /// + /// Верхняя граница + /// + public int TopBorder => _y; + /// + /// Правая граница + /// + public int RightBorder => _x + _width; + /// + /// Нижняя граница + /// + public int DownBorder => _y + _height; + /// + /// Середина объекта + /// + public int ObjectMiddleHorizontal => _x + _width / 2; + /// + /// Середина объекта + /// + public int ObjectMiddleVertical => _y + _height / 2; + /// + /// Конструктор + /// + /// Координата X + /// Координата Y + /// Ширина объекта + /// Высота объекта + public ObjectParameters(int x, int y, int width, int height) + { + _x = x; + _y = y; + _width = width; + _height = height; + } + +} + diff --git a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/StrategyStatus.cs b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/StrategyStatus.cs new file mode 100644 index 0000000..fe0389a --- /dev/null +++ b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/StrategyStatus.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectCatamaran.MovementStrategy; +public enum StrategyStatus +{ + NotInit, + InProgress, + Finish +} -- 2.25.1 From 19fd6bc82ddc4411dca514d12b6ed0446bc04ff4 Mon Sep 17 00:00:00 2001 From: Nikita Date: Sat, 15 Feb 2025 13:49:15 +0400 Subject: [PATCH 03/11] rename base classes --- ...awningCatamaranBase.cs => DrawningBoat.cs} | 34 +++++++++---------- .../Drawnings/DrawningCatamaran.cs | 6 ++-- .../{EntityCatamaranBase.cs => EntityBoat.cs} | 6 ++-- .../Entities/EntityCatamaran.cs | 2 +- .../FormCatamaran.Designer.cs | 26 +++++++------- .../ProjectCatamaran/FormCatamaran.cs | 34 +++++++++---------- ...veableCatamaranBase.cs => MoveableBoat.cs} | 26 +++++++------- 7 files changed, 67 insertions(+), 67 deletions(-) rename ProjectCatamaran/ProjectCatamaran/Drawnings/{DrawningCatamaranBase.cs => DrawningBoat.cs} (80%) rename ProjectCatamaran/ProjectCatamaran/Entities/{EntityCatamaranBase.cs => EntityBoat.cs} (85%) rename ProjectCatamaran/ProjectCatamaran/MovementStrategy/{MoveableCatamaranBase.cs => MoveableBoat.cs} (59%) diff --git a/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningCatamaranBase.cs b/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs similarity index 80% rename from ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningCatamaranBase.cs rename to ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs index 9ce8fcd..8bcf450 100644 --- a/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningCatamaranBase.cs +++ b/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs @@ -6,13 +6,13 @@ using System.Text; using System.Threading.Tasks; namespace ProjectCatamaran.Drawnings; -public class DrawningCatamaranBase +public class DrawningBoat { /// /// класс-сущность /// - public EntityCatamaranBase? EntityCatamaranBase { get; protected set; } + public EntityBoat? EntityBoat { get; protected set; } /// /// ширина окна /// @@ -57,7 +57,7 @@ public class DrawningCatamaranBase /// /// пустой конструктор /// - private DrawningCatamaranBase() + private DrawningBoat() { _pictureWidth = null; _pictureHeight = null; @@ -70,9 +70,9 @@ public class DrawningCatamaranBase /// Скорость /// Вес катера /// Основной цвет - public DrawningCatamaranBase(int speed, double weight, Color bodyColor) : this() + public DrawningBoat(int speed, double weight, Color bodyColor) : this() { - EntityCatamaranBase = new EntityCatamaranBase(speed, weight, bodyColor); + EntityBoat = new EntityBoat(speed, weight, bodyColor); } /// @@ -80,7 +80,7 @@ public class DrawningCatamaranBase /// /// Ширина катера /// высота катера - public DrawningCatamaranBase(int drawningCatamaranWidth, int drawningCatamaranHeight) : this() + public DrawningBoat(int drawningCatamaranWidth, int drawningCatamaranHeight) : this() { _drawningCatamaranWidth = drawningCatamaranWidth; _drawningCatamaranHeight = drawningCatamaranHeight; @@ -129,34 +129,34 @@ public class DrawningCatamaranBase /// true - перемещение выполнено , false - перемещение невозможно public bool MoveTransport(DirectionType direction) { - if (EntityCatamaranBase == null || !_startPosX.HasValue || !_startPosY.HasValue) + if (EntityBoat == null || !_startPosX.HasValue || !_startPosY.HasValue) { return false; } switch (direction) { case DirectionType.Left: - if (_startPosX.Value - EntityCatamaranBase.Step > 0) + if (_startPosX.Value - EntityBoat.Step > 0) { - _startPosX -= (int)EntityCatamaranBase.Step; + _startPosX -= (int)EntityBoat.Step; } return true; case DirectionType.Up: - if (_startPosY.Value - EntityCatamaranBase.Step > 0) + if (_startPosY.Value - EntityBoat.Step > 0) { - _startPosY -= (int)EntityCatamaranBase.Step; + _startPosY -= (int)EntityBoat.Step; } return true; case DirectionType.Right: - if (_startPosX.Value + (int)EntityCatamaranBase.Step + _drawningCatamaranWidth <= _pictureWidth) + if (_startPosX.Value + (int)EntityBoat.Step + _drawningCatamaranWidth <= _pictureWidth) { - _startPosX += (int)EntityCatamaranBase.Step; + _startPosX += (int)EntityBoat.Step; } return true; case DirectionType.Down: - if (_startPosY.Value + (int)EntityCatamaranBase.Step + _drawningCatamaranHeight <= _pictureHeight) + if (_startPosY.Value + (int)EntityBoat.Step + _drawningCatamaranHeight <= _pictureHeight) { - _startPosY += (int)EntityCatamaranBase.Step; + _startPosY += (int)EntityBoat.Step; } return true; default: @@ -169,11 +169,11 @@ public class DrawningCatamaranBase /// public virtual void DrawTransport(Graphics g) { - if (EntityCatamaranBase == null || !_startPosX.HasValue || !_startPosY.HasValue) + if (EntityBoat == null || !_startPosX.HasValue || !_startPosY.HasValue) { return; } - Brush brBody = new SolidBrush(EntityCatamaranBase.BodyColor); + Brush brBody = new SolidBrush(EntityBoat.BodyColor); g.FillRectangle(brBody, _startPosX.Value, _startPosY.Value, 40, 20); Point[] triangle = diff --git a/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningCatamaran.cs b/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningCatamaran.cs index 4eb33a4..523ff6e 100644 --- a/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningCatamaran.cs +++ b/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningCatamaran.cs @@ -9,7 +9,7 @@ namespace ProjectCatamaran.Drawnings; /// /// класс отвечающиай за перемещение и отрисовку /// -public class DrawningCatamaran : DrawningCatamaranBase +public class DrawningCatamaran : DrawningBoat { /// /// Конструктор @@ -23,12 +23,12 @@ public class DrawningCatamaran : DrawningCatamaranBase public DrawningCatamaran(int speed, double weight, Color bodyColor, Color additionalColor, bool floats, bool sail) : base(65,40) { - EntityCatamaranBase = new EntityCatamaran(speed, weight, bodyColor, additionalColor, floats, sail); + EntityBoat = new EntityCatamaran(speed, weight, bodyColor, additionalColor, floats, sail); } public override void DrawTransport(Graphics g) { - if (EntityCatamaranBase == null || EntityCatamaranBase is not EntityCatamaran catamaran || !_startPosX.HasValue || !_startPosY.HasValue) + if (EntityBoat == null || EntityBoat is not EntityCatamaran catamaran || !_startPosX.HasValue || !_startPosY.HasValue) { return; } diff --git a/ProjectCatamaran/ProjectCatamaran/Entities/EntityCatamaranBase.cs b/ProjectCatamaran/ProjectCatamaran/Entities/EntityBoat.cs similarity index 85% rename from ProjectCatamaran/ProjectCatamaran/Entities/EntityCatamaranBase.cs rename to ProjectCatamaran/ProjectCatamaran/Entities/EntityBoat.cs index 22064b0..ce7a393 100644 --- a/ProjectCatamaran/ProjectCatamaran/Entities/EntityCatamaranBase.cs +++ b/ProjectCatamaran/ProjectCatamaran/Entities/EntityBoat.cs @@ -7,9 +7,9 @@ using System.Threading.Tasks; namespace ProjectCatamaran.Entities; /// -/// класс-сущность "обычный катамаран" +/// класс-сущность "лодка" /// -public class EntityCatamaranBase +public class EntityBoat { /// /// Скорость @@ -34,7 +34,7 @@ public class EntityCatamaranBase /// Скорость /// Вес авто /// Основной цвет - public EntityCatamaranBase(int speed, double weight, Color bodyColor) + public EntityBoat(int speed, double weight, Color bodyColor) { Speed = speed; Weight = weight; diff --git a/ProjectCatamaran/ProjectCatamaran/Entities/EntityCatamaran.cs b/ProjectCatamaran/ProjectCatamaran/Entities/EntityCatamaran.cs index 022216d..b2cb8e6 100644 --- a/ProjectCatamaran/ProjectCatamaran/Entities/EntityCatamaran.cs +++ b/ProjectCatamaran/ProjectCatamaran/Entities/EntityCatamaran.cs @@ -2,7 +2,7 @@ /// /// Класс-сущность "Катамарана" /// -public class EntityCatamaran : EntityCatamaranBase +public class EntityCatamaran : EntityBoat { /// /// Дополнительный цвет(для опциональных элементов) diff --git a/ProjectCatamaran/ProjectCatamaran/FormCatamaran.Designer.cs b/ProjectCatamaran/ProjectCatamaran/FormCatamaran.Designer.cs index 3ceeaf4..5c03681 100644 --- a/ProjectCatamaran/ProjectCatamaran/FormCatamaran.Designer.cs +++ b/ProjectCatamaran/ProjectCatamaran/FormCatamaran.Designer.cs @@ -34,7 +34,7 @@ buttonRight = new Button(); buttonLeft = new Button(); buttonDown = new Button(); - buttonCreateCatamaranBase = new Button(); + buttonCreateBoat = new Button(); comboBoxStrategy = new ComboBox(); buttonStrategyStep = new Button(); ((System.ComponentModel.ISupportInitialize)pictureBoxCatamaran).BeginInit(); @@ -45,7 +45,7 @@ pictureBoxCatamaran.Dock = DockStyle.Fill; pictureBoxCatamaran.Location = new Point(0, 0); pictureBoxCatamaran.Name = "pictureBoxCatamaran"; - pictureBoxCatamaran.Size = new Size(800, 450); + pictureBoxCatamaran.Size = new Size(801, 450); pictureBoxCatamaran.TabIndex = 0; pictureBoxCatamaran.TabStop = false; // @@ -108,16 +108,16 @@ buttonDown.UseVisualStyleBackColor = true; buttonDown.Click += ButtonMove_Click; // - // buttonCreateCatamaranBase + // buttonCreateBoat // - buttonCreateCatamaranBase.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - buttonCreateCatamaranBase.Location = new Point(184, 402); - buttonCreateCatamaranBase.Name = "buttonCreateCatamaranBase"; - buttonCreateCatamaranBase.Size = new Size(166, 40); - buttonCreateCatamaranBase.TabIndex = 6; - buttonCreateCatamaranBase.Text = "Создать базовый катамаран"; - buttonCreateCatamaranBase.UseVisualStyleBackColor = true; - buttonCreateCatamaranBase.Click += ButtonCreateCatamaranBase_Click; + buttonCreateBoat.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonCreateBoat.Location = new Point(184, 402); + buttonCreateBoat.Name = "buttonCreateBoat"; + buttonCreateBoat.Size = new Size(166, 40); + buttonCreateBoat.TabIndex = 6; + buttonCreateBoat.Text = "Создать лодку"; + buttonCreateBoat.UseVisualStyleBackColor = true; + buttonCreateBoat.Click += ButtonCreateBoat_Click; // // comboBoxStrategy // @@ -147,7 +147,7 @@ ClientSize = new Size(800, 450); Controls.Add(buttonStrategyStep); Controls.Add(comboBoxStrategy); - Controls.Add(buttonCreateCatamaranBase); + Controls.Add(buttonCreateBoat); Controls.Add(buttonDown); Controls.Add(buttonLeft); Controls.Add(buttonRight); @@ -168,7 +168,7 @@ private Button buttonRight; private Button buttonLeft; private Button buttonDown; - private Button buttonCreateCatamaranBase; + private Button buttonCreateBoat; private ComboBox comboBoxStrategy; private Button buttonStrategyStep; } diff --git a/ProjectCatamaran/ProjectCatamaran/FormCatamaran.cs b/ProjectCatamaran/ProjectCatamaran/FormCatamaran.cs index d6ab145..e008569 100644 --- a/ProjectCatamaran/ProjectCatamaran/FormCatamaran.cs +++ b/ProjectCatamaran/ProjectCatamaran/FormCatamaran.cs @@ -15,7 +15,7 @@ namespace ProjectCatamaran { public partial class FormCatamaran : Form { - private DrawningCatamaranBase? _drawningCatamaranBase; + private DrawningBoat? _drawningBoat; private AbstractStrategy? _strategy; public FormCatamaran() { @@ -25,19 +25,19 @@ namespace ProjectCatamaran private void Draw() { - if (_drawningCatamaranBase == null) + if (_drawningBoat == null) { return; } Bitmap bmp = new(pictureBoxCatamaran.Width, pictureBoxCatamaran.Height); Graphics gr = Graphics.FromImage(bmp); - _drawningCatamaranBase.DrawTransport(gr); + _drawningBoat.DrawTransport(gr); pictureBoxCatamaran.Image = bmp; } private void ButtonMove_Click(object sender, EventArgs e) { - if (_drawningCatamaranBase == null) + if (_drawningBoat == null) { return; } @@ -46,16 +46,16 @@ namespace ProjectCatamaran switch (name) { case "buttonUp": - result = _drawningCatamaranBase.MoveTransport(DirectionType.Up); + result = _drawningBoat.MoveTransport(DirectionType.Up); break; case "buttonDown": - result = _drawningCatamaranBase.MoveTransport(DirectionType.Down); + result = _drawningBoat.MoveTransport(DirectionType.Down); break; case "buttonLeft": - result = _drawningCatamaranBase.MoveTransport(DirectionType.Left); + result = _drawningBoat.MoveTransport(DirectionType.Left); break; case "buttonRight": - result = _drawningCatamaranBase.MoveTransport(DirectionType.Right); + result = _drawningBoat.MoveTransport(DirectionType.Right); break; } if (result) @@ -69,12 +69,12 @@ namespace ProjectCatamaran Random random = new(); switch (type) { - case nameof(DrawningCatamaranBase): - _drawningCatamaranBase = new DrawningCatamaranBase(random.Next(100, 300), random.Next(1000, 3000), + case nameof(DrawningBoat): + _drawningBoat = new DrawningBoat(random.Next(100, 300), random.Next(1000, 3000), Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256))); break; case nameof(DrawningCatamaran): - _drawningCatamaranBase = new DrawningCatamaran(random.Next(100, 300), random.Next(1000, 3000), + _drawningBoat = new DrawningCatamaran(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))); @@ -82,8 +82,8 @@ namespace ProjectCatamaran default: return; } - _drawningCatamaranBase.SetPictureSize(pictureBoxCatamaran.Width, pictureBoxCatamaran.Height); - _drawningCatamaranBase.SetPosition(random.Next(10, 100), random.Next(10, 100)); + _drawningBoat.SetPictureSize(pictureBoxCatamaran.Width, pictureBoxCatamaran.Height); + _drawningBoat.SetPosition(random.Next(10, 100), random.Next(10, 100)); _strategy = null; comboBoxStrategy.Enabled = true; Draw(); @@ -93,9 +93,9 @@ namespace ProjectCatamaran CreateObject(nameof(DrawningCatamaran)); } - private void ButtonCreateCatamaranBase_Click(object sender, EventArgs e) + private void ButtonCreateBoat_Click(object sender, EventArgs e) { - CreateObject(nameof(DrawningCatamaranBase)); + CreateObject(nameof(DrawningBoat)); } /// /// Обработка нажатия кнопки "Шаг" @@ -104,7 +104,7 @@ namespace ProjectCatamaran /// private void ButtonStrategyStep_Click(object sender, EventArgs e) { - if (_drawningCatamaranBase == null) + if (_drawningBoat == null) { return; } @@ -120,7 +120,7 @@ namespace ProjectCatamaran { return; } - _strategy.SetData(new MoveableCatamaranBase(_drawningCatamaranBase), + _strategy.SetData(new MoveableBoat(_drawningBoat), pictureBoxCatamaran.Width, pictureBoxCatamaran.Height); } if (_strategy == null) diff --git a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveableCatamaranBase.cs b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveableBoat.cs similarity index 59% rename from ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveableCatamaranBase.cs rename to ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveableBoat.cs index d13cde3..b7b8f69 100644 --- a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveableCatamaranBase.cs +++ b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveableBoat.cs @@ -7,45 +7,45 @@ using ProjectCatamaran.Drawnings; namespace ProjectCatamaran.MovementStrategy { - internal class MoveableCatamaranBase : IMoveableObject + internal class MoveableBoat : IMoveableObject { /// - /// Поле-объект класса DrawningCatamaranBase или его наследника + /// Поле-объект класса DrawningBoat или его наследника /// - private DrawningCatamaranBase _catamaranBase = null; + private DrawningBoat _boat = null; /// /// Конструктор /// - /// Объект класса DrawningCatamaranBase - public MoveableCatamaranBase(DrawningCatamaranBase catamaranBase) + /// Объект класса DrawningBoat + public MoveableBoat(DrawningBoat boat) { - _catamaranBase = catamaranBase; + _boat = boat; } public ObjectParameters? GetObjectPosition { get { - if (_catamaranBase == null || _catamaranBase.EntityCatamaranBase == null || !_catamaranBase.GetPosX.HasValue - || !_catamaranBase.GetPosY.HasValue) + if (_boat == null || _boat.EntityBoat == null || !_boat.GetPosX.HasValue + || !_boat.GetPosY.HasValue) { return null; } - return new ObjectParameters(_catamaranBase.GetPosX.Value, _catamaranBase.GetPosY.Value, - _catamaranBase.GetWidth, _catamaranBase.GetHeight); + return new ObjectParameters(_boat.GetPosX.Value, _boat.GetPosY.Value, + _boat.GetWidth, _boat.GetHeight); } } - public int GetStep => (int)(_catamaranBase?.EntityCatamaranBase?.Step ?? 0); + public int GetStep => (int)(_boat?.EntityBoat?.Step ?? 0); public bool TryMoveObject(MovementDirection direction) { - if (_catamaranBase == null || _catamaranBase.EntityCatamaranBase == null) + if (_boat == null || _boat.EntityBoat == null) { return false; } - return _catamaranBase.MoveTransport(GetDirectionType(direction)); + return _boat.MoveTransport(GetDirectionType(direction)); } /// /// Конвертация из MovementDirection в DirectionType -- 2.25.1 From 432fe934aa34b9377b6d39dbdab382def2a6ae7f Mon Sep 17 00:00:00 2001 From: nikskob Date: Sat, 22 Feb 2025 15:37:03 +0400 Subject: [PATCH 04/11] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20ProjectCatamaran/ProjectCatamaran/MovementStrate?= =?UTF-8?q?gy/MoveableBoat.cs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix --- .../ProjectCatamaran/MovementStrategy/MoveableBoat.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveableBoat.cs b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveableBoat.cs index b7b8f69..bf63e73 100644 --- a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveableBoat.cs +++ b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveableBoat.cs @@ -12,7 +12,7 @@ namespace ProjectCatamaran.MovementStrategy /// /// Поле-объект класса DrawningBoat или его наследника /// - private DrawningBoat _boat = null; + private readonly DrawningBoat? _boat = null; /// /// Конструктор /// -- 2.25.1 From 7f00fa01bb5c7c71a659e9d74126b0d5624fb789 Mon Sep 17 00:00:00 2001 From: nikskob Date: Sat, 22 Feb 2025 17:35:05 +0400 Subject: [PATCH 05/11] somefixes --- ProjectCatamaran/ProjectCatamaran/Entities/EntityBoat.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ProjectCatamaran/ProjectCatamaran/Entities/EntityBoat.cs b/ProjectCatamaran/ProjectCatamaran/Entities/EntityBoat.cs index ce7a393..442dbc3 100644 --- a/ProjectCatamaran/ProjectCatamaran/Entities/EntityBoat.cs +++ b/ProjectCatamaran/ProjectCatamaran/Entities/EntityBoat.cs @@ -14,11 +14,11 @@ public class EntityBoat /// /// Скорость /// - public int Speed { get; set; } + public int Speed { get;private set; } /// /// Вес авто /// - public double Weight { get; set; } + public double Weight { get;private set; } /// /// Основной цвет /// -- 2.25.1 From 4a4c658554820c82099c5585384ad98bc3b844de Mon Sep 17 00:00:00 2001 From: Nikita Date: Sat, 22 Feb 2025 21:22:03 +0400 Subject: [PATCH 06/11] some fixes --- .../Drawnings/DrawningBoat.cs | 32 +++++++++---------- .../MovementStrategy/MoveToBorder.cs | 4 +-- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs b/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs index 8bcf450..34ae17d 100644 --- a/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs +++ b/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs @@ -32,11 +32,11 @@ public class DrawningBoat /// /// Ширина прорисовки катамарана /// - private readonly int _drawningCatamaranWidth = 60; + private readonly int _drawningBoatWidth = 60; /// /// Высота прорисовки катамарана /// - private readonly int _drawningCatamaranHeight = 25; + private readonly int _drawningBoatHeight = 22; /// /// координата х обьекта /// @@ -48,11 +48,11 @@ public class DrawningBoat /// /// ширина обьекта /// - public int GetWidth => _drawningCatamaranWidth; + public int GetWidth => _drawningBoatWidth; /// /// высота обьекта /// - public int GetHeight => _drawningCatamaranHeight; + public int GetHeight => _drawningBoatHeight; /// /// пустой конструктор @@ -78,12 +78,12 @@ public class DrawningBoat /// /// Конструктор /// - /// Ширина катера - /// высота катера - public DrawningBoat(int drawningCatamaranWidth, int drawningCatamaranHeight) : this() + /// Ширина катера + /// высота катера + public DrawningBoat(int drawningBoatWidth, int drawningBoatHeight) : this() { - _drawningCatamaranWidth = drawningCatamaranWidth; - _drawningCatamaranHeight = drawningCatamaranHeight; + _drawningBoatWidth = drawningBoatWidth; + _drawningBoatHeight = drawningBoatHeight; } /// @@ -94,7 +94,7 @@ public class DrawningBoat /// public bool SetPictureSize(int width, int height) { - if (_drawningCatamaranHeight < height && _drawningCatamaranWidth < width) + if (_drawningBoatHeight < height && _drawningBoatWidth < width) { _pictureHeight = height; _pictureWidth = width; @@ -113,12 +113,12 @@ public class DrawningBoat { return; } - if (x > _pictureWidth - _drawningCatamaranWidth || x < 0) - _startPosX = x < 0 ? 0 : _pictureWidth - _drawningCatamaranWidth; + if (x > _pictureWidth - _drawningBoatWidth || x < 0) + _startPosX = x < 0 ? 0 : _pictureWidth - _drawningBoatWidth; else _startPosX = x; - if (y > _pictureHeight - _drawningCatamaranHeight || y < 0) - _startPosY = y < 0 ? 0 : _pictureHeight - _drawningCatamaranHeight; + if (y > _pictureHeight - _drawningBoatHeight || y < 0) + _startPosY = y < 0 ? 0 : _pictureHeight - _drawningBoatHeight; else _startPosY = y; } @@ -148,13 +148,13 @@ public class DrawningBoat } return true; case DirectionType.Right: - if (_startPosX.Value + (int)EntityBoat.Step + _drawningCatamaranWidth <= _pictureWidth) + if (_startPosX.Value + (int)EntityBoat.Step + _drawningBoatWidth <= _pictureWidth) { _startPosX += (int)EntityBoat.Step; } return true; case DirectionType.Down: - if (_startPosY.Value + (int)EntityBoat.Step + _drawningCatamaranHeight <= _pictureHeight) + if (_startPosY.Value + (int)EntityBoat.Step + _drawningBoatHeight <= _pictureHeight) { _startPosY += (int)EntityBoat.Step; } diff --git a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs index ba16109..188f4f3 100644 --- a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs +++ b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs @@ -15,9 +15,9 @@ public class MoveToBorder : AbstractStrategy ObjectParameters? objParams = GetObjectParameters; if (objParams == null) return; - if (objParams.RightBorder + GetStep() < FieldWidth) + if (objParams.RightBorder + GetStep() <= FieldWidth) MoveRight(); - if (objParams.DownBorder + GetStep() < FieldHeight) + if (objParams.DownBorder + GetStep() <= FieldHeight) MoveDown(); } -- 2.25.1 From 9fe56faa90fb90ad42a1fbdb5e25b227a04d4f49 Mon Sep 17 00:00:00 2001 From: Nikita Date: Sat, 22 Feb 2025 21:23:34 +0400 Subject: [PATCH 07/11] fixes --- .../ProjectCatamaran/MovementStrategy/MoveableBoat.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveableBoat.cs b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveableBoat.cs index b7b8f69..bf63e73 100644 --- a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveableBoat.cs +++ b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveableBoat.cs @@ -12,7 +12,7 @@ namespace ProjectCatamaran.MovementStrategy /// /// Поле-объект класса DrawningBoat или его наследника /// - private DrawningBoat _boat = null; + private readonly DrawningBoat? _boat = null; /// /// Конструктор /// -- 2.25.1 From d9dff2745f04b46b1be795219fbdca59c50decb3 Mon Sep 17 00:00:00 2001 From: Nikita Date: Sat, 22 Feb 2025 22:43:37 +0400 Subject: [PATCH 08/11] Revert "some fixes" This reverts commit 4a4c658554820c82099c5585384ad98bc3b844de. --- .../Drawnings/DrawningBoat.cs | 32 +++++++++---------- .../MovementStrategy/MoveToBorder.cs | 4 +-- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs b/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs index 34ae17d..8bcf450 100644 --- a/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs +++ b/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs @@ -32,11 +32,11 @@ public class DrawningBoat /// /// Ширина прорисовки катамарана /// - private readonly int _drawningBoatWidth = 60; + private readonly int _drawningCatamaranWidth = 60; /// /// Высота прорисовки катамарана /// - private readonly int _drawningBoatHeight = 22; + private readonly int _drawningCatamaranHeight = 25; /// /// координата х обьекта /// @@ -48,11 +48,11 @@ public class DrawningBoat /// /// ширина обьекта /// - public int GetWidth => _drawningBoatWidth; + public int GetWidth => _drawningCatamaranWidth; /// /// высота обьекта /// - public int GetHeight => _drawningBoatHeight; + public int GetHeight => _drawningCatamaranHeight; /// /// пустой конструктор @@ -78,12 +78,12 @@ public class DrawningBoat /// /// Конструктор /// - /// Ширина катера - /// высота катера - public DrawningBoat(int drawningBoatWidth, int drawningBoatHeight) : this() + /// Ширина катера + /// высота катера + public DrawningBoat(int drawningCatamaranWidth, int drawningCatamaranHeight) : this() { - _drawningBoatWidth = drawningBoatWidth; - _drawningBoatHeight = drawningBoatHeight; + _drawningCatamaranWidth = drawningCatamaranWidth; + _drawningCatamaranHeight = drawningCatamaranHeight; } /// @@ -94,7 +94,7 @@ public class DrawningBoat /// public bool SetPictureSize(int width, int height) { - if (_drawningBoatHeight < height && _drawningBoatWidth < width) + if (_drawningCatamaranHeight < height && _drawningCatamaranWidth < width) { _pictureHeight = height; _pictureWidth = width; @@ -113,12 +113,12 @@ public class DrawningBoat { return; } - if (x > _pictureWidth - _drawningBoatWidth || x < 0) - _startPosX = x < 0 ? 0 : _pictureWidth - _drawningBoatWidth; + if (x > _pictureWidth - _drawningCatamaranWidth || x < 0) + _startPosX = x < 0 ? 0 : _pictureWidth - _drawningCatamaranWidth; else _startPosX = x; - if (y > _pictureHeight - _drawningBoatHeight || y < 0) - _startPosY = y < 0 ? 0 : _pictureHeight - _drawningBoatHeight; + if (y > _pictureHeight - _drawningCatamaranHeight || y < 0) + _startPosY = y < 0 ? 0 : _pictureHeight - _drawningCatamaranHeight; else _startPosY = y; } @@ -148,13 +148,13 @@ public class DrawningBoat } return true; case DirectionType.Right: - if (_startPosX.Value + (int)EntityBoat.Step + _drawningBoatWidth <= _pictureWidth) + if (_startPosX.Value + (int)EntityBoat.Step + _drawningCatamaranWidth <= _pictureWidth) { _startPosX += (int)EntityBoat.Step; } return true; case DirectionType.Down: - if (_startPosY.Value + (int)EntityBoat.Step + _drawningBoatHeight <= _pictureHeight) + if (_startPosY.Value + (int)EntityBoat.Step + _drawningCatamaranHeight <= _pictureHeight) { _startPosY += (int)EntityBoat.Step; } diff --git a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs index 188f4f3..ba16109 100644 --- a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs +++ b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs @@ -15,9 +15,9 @@ public class MoveToBorder : AbstractStrategy ObjectParameters? objParams = GetObjectParameters; if (objParams == null) return; - if (objParams.RightBorder + GetStep() <= FieldWidth) + if (objParams.RightBorder + GetStep() < FieldWidth) MoveRight(); - if (objParams.DownBorder + GetStep() <= FieldHeight) + if (objParams.DownBorder + GetStep() < FieldHeight) MoveDown(); } -- 2.25.1 From eca2103158cadf22982328a63fa868a05beb1c92 Mon Sep 17 00:00:00 2001 From: Nikita Date: Sat, 22 Feb 2025 22:52:54 +0400 Subject: [PATCH 09/11] test1 --- .../Drawnings/DrawningBoat.cs | 30 +++++++++---------- .../MovementStrategy/MoveToBorder.cs | 4 +-- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs b/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs index 8bcf450..19fd8ee 100644 --- a/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs +++ b/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs @@ -30,13 +30,13 @@ public class DrawningBoat /// protected int? _startPosY; /// - /// Ширина прорисовки катамарана + /// Ширина прорисовки лодки /// - private readonly int _drawningCatamaranWidth = 60; + private readonly int _drawningBoatWidth = 60; /// - /// Высота прорисовки катамарана + /// Высота прорисовки лодки /// - private readonly int _drawningCatamaranHeight = 25; + private readonly int _drawningBoatHeight = 22; /// /// координата х обьекта /// @@ -48,11 +48,11 @@ public class DrawningBoat /// /// ширина обьекта /// - public int GetWidth => _drawningCatamaranWidth; + public int GetWidth => _drawningBoatWidth; /// /// высота обьекта /// - public int GetHeight => _drawningCatamaranHeight; + public int GetHeight => _drawningBoatHeight; /// /// пустой конструктор @@ -82,8 +82,8 @@ public class DrawningBoat /// высота катера public DrawningBoat(int drawningCatamaranWidth, int drawningCatamaranHeight) : this() { - _drawningCatamaranWidth = drawningCatamaranWidth; - _drawningCatamaranHeight = drawningCatamaranHeight; + _drawningBoatWidth = drawningCatamaranWidth; + _drawningBoatHeight = drawningCatamaranHeight; } /// @@ -94,7 +94,7 @@ public class DrawningBoat /// public bool SetPictureSize(int width, int height) { - if (_drawningCatamaranHeight < height && _drawningCatamaranWidth < width) + if (_drawningBoatHeight < height && _drawningBoatWidth < width) { _pictureHeight = height; _pictureWidth = width; @@ -113,12 +113,12 @@ public class DrawningBoat { return; } - if (x > _pictureWidth - _drawningCatamaranWidth || x < 0) - _startPosX = x < 0 ? 0 : _pictureWidth - _drawningCatamaranWidth; + if (x > _pictureWidth - _drawningBoatWidth || x < 0) + _startPosX = x < 0 ? 0 : _pictureWidth - _drawningBoatWidth; else _startPosX = x; - if (y > _pictureHeight - _drawningCatamaranHeight || y < 0) - _startPosY = y < 0 ? 0 : _pictureHeight - _drawningCatamaranHeight; + if (y > _pictureHeight - _drawningBoatHeight || y < 0) + _startPosY = y < 0 ? 0 : _pictureHeight - _drawningBoatHeight; else _startPosY = y; } @@ -148,13 +148,13 @@ public class DrawningBoat } return true; case DirectionType.Right: - if (_startPosX.Value + (int)EntityBoat.Step + _drawningCatamaranWidth <= _pictureWidth) + if (_startPosX.Value + (int)EntityBoat.Step + _drawningBoatWidth <= _pictureWidth) { _startPosX += (int)EntityBoat.Step; } return true; case DirectionType.Down: - if (_startPosY.Value + (int)EntityBoat.Step + _drawningCatamaranHeight <= _pictureHeight) + if (_startPosY.Value + (int)EntityBoat.Step + _drawningBoatHeight <= _pictureHeight) { _startPosY += (int)EntityBoat.Step; } diff --git a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs index ba16109..188f4f3 100644 --- a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs +++ b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs @@ -15,9 +15,9 @@ public class MoveToBorder : AbstractStrategy ObjectParameters? objParams = GetObjectParameters; if (objParams == null) return; - if (objParams.RightBorder + GetStep() < FieldWidth) + if (objParams.RightBorder + GetStep() <= FieldWidth) MoveRight(); - if (objParams.DownBorder + GetStep() < FieldHeight) + if (objParams.DownBorder + GetStep() <= FieldHeight) MoveDown(); } -- 2.25.1 From a7aa7c41bc30a2752fe0b787619fddfa77934365 Mon Sep 17 00:00:00 2001 From: Nikita Date: Sat, 22 Feb 2025 22:59:39 +0400 Subject: [PATCH 10/11] rename params in ctor --- ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs b/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs index 19fd8ee..34b2b2c 100644 --- a/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs +++ b/ProjectCatamaran/ProjectCatamaran/Drawnings/DrawningBoat.cs @@ -80,10 +80,10 @@ public class DrawningBoat /// /// Ширина катера /// высота катера - public DrawningBoat(int drawningCatamaranWidth, int drawningCatamaranHeight) : this() + public DrawningBoat(int drawningBoatWidth, int drawningBoatHeight) : this() { - _drawningBoatWidth = drawningCatamaranWidth; - _drawningBoatHeight = drawningCatamaranHeight; + _drawningBoatWidth = drawningBoatWidth; + _drawningBoatHeight = drawningBoatHeight; } /// -- 2.25.1 From e7566e6360406f2ce84667e20e4e02266c7afc56 Mon Sep 17 00:00:00 2001 From: Nikita Date: Mon, 24 Feb 2025 19:53:08 +0400 Subject: [PATCH 11/11] changed logic movetoborder --- .../ProjectCatamaran/MovementStrategy/MoveToBorder.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs index 188f4f3..da1d690 100644 --- a/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs +++ b/ProjectCatamaran/ProjectCatamaran/MovementStrategy/MoveToBorder.cs @@ -30,8 +30,8 @@ public class MoveToBorder : AbstractStrategy ObjectParameters? objParams = GetObjectParameters; if (objParams == null) return false; - return objParams.RightBorder + GetStep() >= FieldWidth && - objParams.DownBorder + GetStep() >= FieldHeight ; + return objParams.RightBorder + GetStep() > FieldWidth && + objParams.DownBorder + GetStep() > FieldHeight ; } } -- 2.25.1