From 0a462ea5594137df30859dd1486c7402f61d5db6 Mon Sep 17 00:00:00 2001 From: cleverman1337 <74911264+cleverman1337@users.noreply.github.com> Date: Wed, 1 May 2024 15:34:16 +0400 Subject: [PATCH] =?UTF-8?q?=D0=9A=D0=BE=D0=BB=D0=BB=D0=B5=D0=BA=D1=86?= =?UTF-8?q?=D0=B8=D0=B8=20=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ICollectionGenericObjects.cs | 54 +++++++++++++++++ .../MassiveGenericObjects.cs | 58 +++++++++++++++++++ .../Drawnings/DrawningArtillery.cs | 2 +- .../MovementStrategy/IMoveableObjectcs.cs | 2 +- 4 files changed, 114 insertions(+), 2 deletions(-) create mode 100644 SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/CollectionGenericObjects/ICollectionGenericObjects.cs create mode 100644 SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/CollectionGenericObjects/MassiveGenericObjects.cs diff --git a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/CollectionGenericObjects/ICollectionGenericObjects.cs b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/CollectionGenericObjects/ICollectionGenericObjects.cs new file mode 100644 index 0000000..38d2d77 --- /dev/null +++ b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/CollectionGenericObjects/ICollectionGenericObjects.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SelfPropelledArtilleryUnit.CollectionGenericObjects; + +/// +/// Интерфейс описания действий для набора хранимых объектов +/// +/// Параметр: ограничение - ссылочный тип +public interface ICollectionGenericObjects + where T : class +{ + /// + /// Количество объектов в коллекции + /// + int Count { get; } + + /// + /// Установка максимального количества элементов + /// + int SetMaxCount { set; } + + /// + /// Добавление объекта в коллекцию + /// + /// Добавляемый объект + /// true - вставка прошла удачно, false - вставка не удалась + bool Insert(T obj); + + /// + /// Добавление объекта в коллекцию на конкретную позицию + /// + /// Добавляемый объект + /// Позиция + /// true - вставка прошла удачно, false - вставка не удалась + bool Insert(T obj, int position); + + /// + /// Удаление объекта из коллекции с конкретной позиции + /// + /// Позиция + /// true - удаление прошло удачно, false - удаление не удалось + bool Remove(int position); + + /// + /// Получение объекта по позиции + /// + /// Позиция + /// Объект + T? Get(int position); +} diff --git a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/CollectionGenericObjects/MassiveGenericObjects.cs b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/CollectionGenericObjects/MassiveGenericObjects.cs new file mode 100644 index 0000000..124d931 --- /dev/null +++ b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/CollectionGenericObjects/MassiveGenericObjects.cs @@ -0,0 +1,58 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SelfPropelledArtilleryUnit.CollectionGenericObjects; + +public class MassiveGenericObjects : ICollectionGenericObjects + where T : class +{ + /// + /// Массив объектов, которые храним + /// + private T?[] _collection; + + public int Count => _collection.Length; + + public int SetMaxCount { set { if (value > 0) { _collection = new T?[value]; } } } + + + /// + /// Конструктор + /// + public MassiveGenericObjects() + { + _collection = Array.Empty(); + } + + public T? Get(int position) + { + // TODO проверка позиции + return _collection[position]; + } + + public bool Insert(T obj) + { + // TODO вставка в свободное место набора + return false; + } + + public bool Insert(T obj, int position) + { + // TODO проверка позиции + // TODO проверка, что элемент массива по этой позиции пустой, если нет, то + // ищется свободное место после этой позиции и идет вставка туда + // если нет после, ищем до + // TODO вставка + return false; + } + + public bool Remove(int position) + { + // TODO проверка позиции + // TODO удаление объекта из массива, присвоив элементу массива значение null + return true; + } +} diff --git a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/Drawnings/DrawningArtillery.cs b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/Drawnings/DrawningArtillery.cs index ee46f1e..be34f15 100644 --- a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/Drawnings/DrawningArtillery.cs +++ b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/Drawnings/DrawningArtillery.cs @@ -40,7 +40,7 @@ public class DrawningArtillery : DrawningTank g.DrawRectangle(pen, _startPosX.Value + 80, _startPosY.Value + 25, 50, 5); } //установка - if (artillery.Cannon) + if (artillery.Rocket) { //колонна g.FillRectangle(additionalBrush, _startPosX.Value + 5, _startPosY.Value + 10, 5, 30); diff --git a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/MovementStrategy/IMoveableObjectcs.cs b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/MovementStrategy/IMoveableObjectcs.cs index 89758de..68b6189 100644 --- a/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/MovementStrategy/IMoveableObjectcs.cs +++ b/SelfPropelledArtilleryUnit/SelfPropelledArtilleryUnit/MovementStrategy/IMoveableObjectcs.cs @@ -18,7 +18,7 @@ public interface IMoveableObject /// /// Шаг объекта - /// + /// int GetStep { get; } ///