Коллекции объектов
This commit is contained in:
parent
3d5082eb78
commit
de00b215e2
@ -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<T>
|
||||||
|
where T : class
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Количество объектов в коллекции
|
||||||
|
/// </summary>
|
||||||
|
int Count { get; }
|
||||||
|
/// <summary>
|
||||||
|
/// Установка максимального количества элементов
|
||||||
|
/// </summary>
|
||||||
|
int SetMaxCount { set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Добавление объекта в коллекцию
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="obj">Добавляемый объект</param>
|
||||||
|
/// <returns>true - вставка прошла удачно, false - вставка не удалась</returns>
|
||||||
|
bool Insert(T obj);
|
||||||
|
/// <summary>
|
||||||
|
/// Добавление объекта в коллекцию на конкретную позицию
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="obj">Добавляемый объект</param>
|
||||||
|
/// <param name="position">Позиция</param>
|
||||||
|
/// <returns>true - вставка прошла удачно, false - вставка не удалась</returns>
|
||||||
|
bool? Insert(T obj, int position);
|
||||||
|
/// <summary>
|
||||||
|
/// Удаление объекта из коллекции с конкретной позиции
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="position">Позиция</param>
|
||||||
|
/// <returns>true - удаление прошло удачно, false - удаление не удалось</returns>
|
||||||
|
T? Remove(int position);
|
||||||
|
/// <summary>
|
||||||
|
/// Получение объекта по позиции
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="position">Позиция</param>
|
||||||
|
/// <returns>Объект</returns>
|
||||||
|
T? Get(int position);
|
||||||
|
}
|
@ -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<T> : ICollectionGenericObjects<T>
|
||||||
|
where T : class
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Массив объектов, которые храним
|
||||||
|
/// </summary>
|
||||||
|
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];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Конструктор
|
||||||
|
/// </summary>
|
||||||
|
public MassiveGenericObjects()
|
||||||
|
{
|
||||||
|
_collection = Array.Empty<T?>();
|
||||||
|
}
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -20,7 +20,7 @@ public class DrawingAirBomber : DrawningPlane
|
|||||||
/// <param name="engine">Дополнительный цвет</param>
|
/// <param name="engine">Дополнительный цвет</param>
|
||||||
/// <param name="bomb">Дополнительный цвет</param>
|
/// <param name="bomb">Дополнительный цвет</param>
|
||||||
public DrawingAirBomber(int speed, double weight, Color bodyColor, Color
|
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,
|
EntityPlane = new EntityAirBomber(speed, weight, bodyColor, additionalColor,
|
||||||
|
@ -32,11 +32,11 @@ public class DrawningPlane
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ширина прорисовки самолета
|
/// Ширина прорисовки самолета
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly int _drawningPlaneWidth = 95;
|
private readonly int _drawningPlaneWidth = 130;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Высота прорисовки самолета
|
/// Высота прорисовки самолета
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly int _drawningPlaneHeight = 130;
|
private readonly int _drawningPlaneHeight = 150;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Координата X
|
/// Координата X
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
Loading…
Reference in New Issue
Block a user