Этап 1. Смена массива на список.

This commit is contained in:
Programmist73 2022-10-11 10:15:58 +04:00
parent 1e66082200
commit b091beba51
2 changed files with 60 additions and 27 deletions

View File

@ -69,14 +69,9 @@ namespace Airbus
{ {
Shaking(); Shaking();
for(int i = 0; i < _setPlanes.Count; i++) foreach(var plane in _setPlanes.GetAirbus())
{ {
var plane = _setPlanes.Get(i); return _map.CreateMap(_pictureWidth, _pictureHeight, plane);
if(plane != null)
{
return _map.CreateMap(_pictureWidth, _pictureHeight, plane);
}
} }
return new(_pictureWidth, _pictureHeight); return new(_pictureWidth, _pictureHeight);
@ -100,11 +95,11 @@ namespace Airbus
for (int i = 0; i < _setPlanes.Count; i++) for (int i = 0; i < _setPlanes.Count; i++)
{ {
if (_setPlanes.Get(i) == null) if (_setPlanes[i] == null)
{ {
for (; j > i; j--) for (; j > i; j--)
{ {
var plane = _setPlanes.Get(j); var plane = _setPlanes[j];
if (plane != null) if (plane != null)
{ {
@ -186,13 +181,20 @@ namespace Airbus
public void DrawPlanes(Graphics g) public void DrawPlanes(Graphics g)
{ {
int position = 0; int position = 0;
int index = 0;
int currentWidth = 1; int currentWidth = 1;
int currentHeight = 5; int currentHeight = 5;
for (int i = 0; i < _setPlanes.Count; i++) // for (int i = 0; i < _setPlanes.Count; i++)
//_setPlanes[index]?.SetObject(currentWidth * _placeSizeWidth + 20, currentHeight * _placeSizeHeight + 20, _pictureWidth, _pictureHeight);
//_setPlanes[index]?.DrawningObject(g);
foreach (var plane in _setPlanes.GetAirbus())
{ {
_setPlanes.Get(i)?.SetObject(currentWidth * _placeSizeWidth + 20, currentHeight * _placeSizeHeight + 20, _pictureWidth, _pictureHeight); plane.SetObject(currentWidth * _placeSizeWidth + 20, currentHeight * _placeSizeHeight + 20, _pictureWidth, _pictureHeight);
_setPlanes.Get(i)?.DrawningObject(g); plane.DrawningObject(g);
index++;
if(position % 2 == 0) if(position % 2 == 0)
{ {

View File

@ -9,21 +9,28 @@ namespace Airbus
internal class SetPlanesGeneric<T> internal class SetPlanesGeneric<T>
where T: class where T: class
{ {
//массив объектов, которые храним //список объектов, которые храним
private readonly T[] _places; private readonly List<T> _places;
//количество объектов в массиве //количество объектов в массиве
public int Count => _places.Length; public int Count => _places.Count;
//ограничение по кол-ву объектов
private readonly int _maxCount;
//конструктор //конструктор
public SetPlanesGeneric(int count) public SetPlanesGeneric(int count)
{ {
_places = new T[count]; _maxCount = count;
_places = new List<T>();
} }
//добавление объекта в набор //добавление объекта в набор
public int Insert(T plane) public int Insert(T plane)
{ {
//вставка в начало набора
//проверка на максим. кол-во////////////////////////////////////////////////////////////
return Insert(plane, 0); return Insert(plane, 0);
} }
@ -31,7 +38,7 @@ namespace Airbus
public int Insert(T plane, int position) public int Insert(T plane, int position)
{ {
// проверка позиции // проверка позиции
if (position >= _places.Length || position < 0) if (position >= _places.Count || position < 0)
{ {
return -1; return -1;
} }
@ -76,7 +83,7 @@ namespace Airbus
public T Remove(int position) public T Remove(int position)
{ {
// проверка позиции // проверка позиции
if (position >= _places.Length || position < 0) if (position >= _places.Count || position < 0)
{ {
return null; return null;
} }
@ -89,18 +96,42 @@ namespace Airbus
} }
//получение объекта из набора по позиции //получение объекта из набора по позиции
public T Get(int position) public T this[int position]
{ {
if (position >= _places.Length || position < 0) get
{ {
return null; if (position >= _places.Count || position < 0)
} {
else if (_places[position] == null) return null;
{ }
return null; else if (_places[position] == null)
} {
return null;
}
return _places[position]; return _places[position];
}
set
{
//TODO проверка позиции
//TODO вставка в список по позиции
}
}
//проход по набору до первого пустого
public IEnumerable<T> GetAirbus()
{
foreach(var plane in _places)
{
if(plane != null)
{
yield return plane;
}
else
{
yield break;
}
}
} }
} }
} }