diff --git a/ProjectBomber/ProjectBomber/CollectionGenericObject/ICollectionGenericObject.cs b/ProjectBomber/ProjectBomber/CollectionGenericObject/ICollectionGenericObject.cs new file mode 100644 index 0000000..bc55e51 --- /dev/null +++ b/ProjectBomber/ProjectBomber/CollectionGenericObject/ICollectionGenericObject.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectAirBomber.CollectionGenericObject; + +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 - удаление не удалось + T? Remove(int position); + /// + /// Получение объекта по позиции + /// + /// Позиция + /// Объект + T? Get(int position); +} \ No newline at end of file diff --git a/ProjectBomber/ProjectBomber/CollectionGenericObject/MassivegenericObjects.cs b/ProjectBomber/ProjectBomber/CollectionGenericObject/MassivegenericObjects.cs new file mode 100644 index 0000000..638c7ff --- /dev/null +++ b/ProjectBomber/ProjectBomber/CollectionGenericObject/MassivegenericObjects.cs @@ -0,0 +1,98 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectAirBomber.CollectionGenericObject; + +public class MassiveGenericObjects : ICollectionGenericObjects +where T : class +{ + /// + /// Массив объектов, которые храним + /// + private T?[] _collection; + public int Count => _collection.Length; + public int SetMaxCount + { + set + { + if (value > 0) + { + if (_collection.Length > 0) + { + Array.Resize(ref _collection, value); + } + else + { + _collection = new T?[value]; + } + } + } + } + /// + /// Конструктор + /// + public MassiveGenericObjects() + { + _collection = Array.Empty(); + } + public T? Get(int position) // получение с позиции + { + if (position < 0 || position >= _collection.Length) // если позиция передано неправильно + return null; + return _collection[position]; + } + public bool Insert(T obj) // вставка объекта на свободное место + { + for (int i = 0; i < _collection.Length; ++i) + { + if (_collection[i] == null) + { + _collection[i] = obj; + return true; + } + } + return false; + } + public bool? Insert(T obj, int position) // вставка объекта на место + { + if (position < 0 || position >= _collection.Length) // если позиция переданна неправильно + return false; + if (_collection[position] == null)//если позиция пуста + { + _collection[position] = obj; + return true; + } + else + { + for (int i = position; i < _collection.Length; ++i) //ищем свободное место справа + { + if (_collection[i] == null) + { + _collection[i] = obj; + return true; + } + } + for (int i = 0; i < position; ++i) // иначе слева + { + if (_collection[i] == null) + { + _collection[i] = obj; + return true; + } + } + } + return false; + } + public T? Remove(int position) // удаление объекта, зануляя его + { + if (position < 0 || position >= _collection.Length || _collection[position] == null) + return null; + T? temp = _collection[position]; + _collection[position] = null; + return temp; + } + +} \ No newline at end of file diff --git a/ProjectBomber/ProjectBomber/Drawnings/DrawningAirBomber.cs b/ProjectBomber/ProjectBomber/Drawnings/DrawningAirBomber.cs index 07ac006..4ee79df 100644 --- a/ProjectBomber/ProjectBomber/Drawnings/DrawningAirBomber.cs +++ b/ProjectBomber/ProjectBomber/Drawnings/DrawningAirBomber.cs @@ -20,7 +20,7 @@ public class DrawingAirBomber : DrawningPlane /// Дополнительный цвет /// Дополнительный цвет public DrawingAirBomber(int speed, double weight, Color bodyColor, Color - additionalColor, bool engine, bool bomb) : base(100, 130) + additionalColor, bool engine, bool bomb) : base(125, 155) { EntityPlane = new EntityAirBomber(speed, weight, bodyColor, additionalColor, diff --git a/ProjectBomber/ProjectBomber/Drawnings/DrawningPlane.cs b/ProjectBomber/ProjectBomber/Drawnings/DrawningPlane.cs index ba88f1f..c7d2ec4 100644 --- a/ProjectBomber/ProjectBomber/Drawnings/DrawningPlane.cs +++ b/ProjectBomber/ProjectBomber/Drawnings/DrawningPlane.cs @@ -32,11 +32,11 @@ public class DrawningPlane /// /// Ширина прорисовки самолета /// - private readonly int _drawningPlaneWidth = 95; + private readonly int _drawningPlaneWidth = 130; /// /// Высота прорисовки самолета /// - private readonly int _drawningPlaneHeight = 130; + private readonly int _drawningPlaneHeight = 150; /// /// Координата X ///