From b54059d598d6e6299b825e20caeb2a6b8f360dd2 Mon Sep 17 00:00:00 2001 From: "nikbel2004@outlook.com" Date: Sat, 21 Oct 2023 14:36:51 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=B2=D0=BA=D0=B8=20=D0=B2?= =?UTF-8?q?=20=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82=D0=BE=D1=80=D0=BD?= =?UTF-8?q?=D0=BE=D0=B9=203?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tank/Tank/CollectionsFrame.Designer.cs | 2 +- Tank/Tank/CollectionsFrame.cs | 8 ++++---- Tank/Tank/DrawArmoVehicle.cs | 2 +- Tank/Tank/MoveToBorder.cs | 2 +- Tank/Tank/SetGeneric.cs | 9 ++++++++- Tank/Tank/TanksGenericCollection.cs | 14 +++++++++++++- 6 files changed, 28 insertions(+), 9 deletions(-) diff --git a/Tank/Tank/CollectionsFrame.Designer.cs b/Tank/Tank/CollectionsFrame.Designer.cs index fe910b7..1b61167 100644 --- a/Tank/Tank/CollectionsFrame.Designer.cs +++ b/Tank/Tank/CollectionsFrame.Designer.cs @@ -70,7 +70,7 @@ DeleteButton.TabIndex = 3; DeleteButton.Text = "Удалить технику"; DeleteButton.UseVisualStyleBackColor = true; - DeleteButton.Click += ButtonRemoveCar_Click; + DeleteButton.Click += ButtonRemoveTank_Click; // // AddButton // diff --git a/Tank/Tank/CollectionsFrame.cs b/Tank/Tank/CollectionsFrame.cs index c458979..34742e1 100644 --- a/Tank/Tank/CollectionsFrame.cs +++ b/Tank/Tank/CollectionsFrame.cs @@ -31,7 +31,7 @@ namespace Tank if (_tanks + form.SelectedCar != -1) { MessageBox.Show("Объект добавлен"); - DrawTank.Image = _tanks.ShowCars(); + DrawTank.Image = _tanks.ShowTanks(); } else { @@ -39,7 +39,7 @@ namespace Tank } } } - private void ButtonRemoveCar_Click(object sender, EventArgs e) + private void ButtonRemoveTank_Click(object sender, EventArgs e) { if (MessageBox.Show("Удалить объект?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) @@ -55,7 +55,7 @@ namespace Tank if (_tanks - pos) { MessageBox.Show("Объект удален"); - DrawTank.Image = _tanks.ShowCars(); + DrawTank.Image = _tanks.ShowTanks(); } else { @@ -65,7 +65,7 @@ namespace Tank private void ButtonRefreshCollection_Click(object sender, EventArgs e) { - DrawTank.Image = _tanks.ShowCars(); + DrawTank.Image = _tanks.ShowTanks(); } } diff --git a/Tank/Tank/DrawArmoVehicle.cs b/Tank/Tank/DrawArmoVehicle.cs index 9036694..2446515 100644 --- a/Tank/Tank/DrawArmoVehicle.cs +++ b/Tank/Tank/DrawArmoVehicle.cs @@ -128,4 +128,4 @@ namespace Tank public IMoveableObject GetMoveableObject => new DrawingObjectTank(this); } -} +} \ No newline at end of file diff --git a/Tank/Tank/MoveToBorder.cs b/Tank/Tank/MoveToBorder.cs index 4d98eb6..1e8627f 100644 --- a/Tank/Tank/MoveToBorder.cs +++ b/Tank/Tank/MoveToBorder.cs @@ -44,4 +44,4 @@ namespace Tank.MovementStrategy } } } -} +} \ No newline at end of file diff --git a/Tank/Tank/SetGeneric.cs b/Tank/Tank/SetGeneric.cs index e4be151..30f9822 100644 --- a/Tank/Tank/SetGeneric.cs +++ b/Tank/Tank/SetGeneric.cs @@ -8,15 +8,19 @@ namespace Tank { internal class SetGeneric where T : class { + // Массив объектов, которые храним private readonly T?[] _places; + // Количество объектов в массиве public int Count => _places.Length; + // Конструктор public SetGeneric(int count) { _places = new T?[count]; } + //Добавление объекта в набор public int Insert(T car) { int index = -1; @@ -39,6 +43,7 @@ namespace Tank return 0; } + // Добавление объекта в набор на конкретную позицию public int Insert(T car, int position) { if (position < 0 || position >= Count) @@ -66,6 +71,7 @@ namespace Tank return position; } + // Удаление объекта из набора с конкретной позиции public bool Remove(int position) { if (position < 0 || position >= Count) @@ -74,6 +80,7 @@ namespace Tank return true; } + // Получение объекта из набора по позиции public T? Get(int position) { if (position < 0 || position >= Count) @@ -81,4 +88,4 @@ namespace Tank return _places[position]; } } -} +} \ No newline at end of file diff --git a/Tank/Tank/TanksGenericCollection.cs b/Tank/Tank/TanksGenericCollection.cs index 851d5fb..f1d5b0c 100644 --- a/Tank/Tank/TanksGenericCollection.cs +++ b/Tank/Tank/TanksGenericCollection.cs @@ -13,12 +13,18 @@ namespace Tank.Generics where T : DrawArmoVehicle where U : IMoveableObject { + // Ширина и высота окна прорисовки private readonly int _pictureWidth; private readonly int _pictureHeight; + + // Размеры занимаемого объектом места private readonly int _placeSizeWidth = 180; private readonly int _placeSizeHeight = 90; + + // Набор объектов private readonly SetGeneric _collection; + // Конструктор public TanksGenericCollection(int pictureWidth, int pictureHeight) { int width = pictureWidth / _placeSizeWidth; @@ -28,6 +34,7 @@ namespace Tank.Generics _collection = new SetGeneric(width * height); } + // Перегрузка оператора сложения public static int? operator +(TanksGenericCollection collect, T? obj) { if (obj == null) @@ -37,6 +44,7 @@ namespace Tank.Generics return collect?._collection.Insert(obj); } + // Перегрузка оператора вычитания public static bool operator -(TanksGenericCollection collect, int pos) { T? obj = collect._collection.Get(pos); @@ -47,12 +55,14 @@ namespace Tank.Generics return collect._collection.Remove(pos); } + // Получение объекта IMoveableObject public U? GetU(int pos) { return (U?)_collection.Get(pos)?.GetMoveableObject; } - public Bitmap ShowCars() + // Вывод всего набора объектов + public Bitmap ShowTanks() { Bitmap bmp = new(_pictureWidth, _pictureHeight); Graphics gr = Graphics.FromImage(bmp); @@ -61,6 +71,7 @@ namespace Tank.Generics return bmp; } + // Метод отрисовки фона private void DrawBackground(Graphics g) { Pen pen = new(Color.Black, 3); @@ -78,6 +89,7 @@ namespace Tank.Generics } } + // Метод прорисовки объектов private void DrawObjects(Graphics g) { int width = _pictureWidth / _placeSizeWidth;