Реализована логика в классе SetGeneric

This commit is contained in:
Никита Потапов 2023-10-08 13:22:30 +04:00
parent 3c728ee2e1
commit 5287002a6f
3 changed files with 65 additions and 12 deletions

View File

@ -37,6 +37,7 @@
buttonCreatePlane = new Button();
comboBoxStrategy = new ComboBox();
buttonStep = new Button();
buttonSelectPlane = new Button();
((System.ComponentModel.ISupportInitialize)pictureBoxStormtrooper).BeginInit();
SuspendLayout();
//
@ -140,11 +141,22 @@
buttonStep.UseVisualStyleBackColor = true;
buttonStep.Click += buttonStep_Click;
//
// buttonSelectPlane
//
buttonSelectPlane.Location = new Point(537, 412);
buttonSelectPlane.Name = "buttonSelectPlane";
buttonSelectPlane.Size = new Size(137, 29);
buttonSelectPlane.TabIndex = 9;
buttonSelectPlane.Text = "Выбрать";
buttonSelectPlane.UseVisualStyleBackColor = true;
buttonSelectPlane.Click += ButtonSelectPlane_Click;
//
// FormStormtrooper
//
AutoScaleDimensions = new SizeF(8F, 20F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(882, 453);
Controls.Add(buttonSelectPlane);
Controls.Add(buttonStep);
Controls.Add(comboBoxStrategy);
Controls.Add(buttonCreatePlane);
@ -173,5 +185,6 @@
private Button buttonCreatePlane;
private ComboBox comboBoxStrategy;
private Button buttonStep;
private Button buttonSelectPlane;
}
}

View File

@ -149,7 +149,7 @@ namespace ProjectStormtrooper
{
return;
}
_strategy.SetData(new DrawingObjectPlane(_drawingPlane), pictureBoxStormtrooper.Width, pictureBoxStormtrooper.Height);
_strategy.SetData(new DrawingObjectPlane(_drawingPlane), pictureBoxStormtrooper.Width, pictureBoxStormtrooper.Height);
}
if (_strategy == null)
{

View File

@ -33,9 +33,8 @@ namespace ProjectStormtrooper
/// <param name="plane"></param>
/// <returns></returns>
public bool Insert(T plane)
{
// TODO: вставка в начало набора
return true;
{
return Insert(plane, 0);
}
/// <summary>
/// Добавление объекта в набор на конкретную позицию
@ -45,11 +44,38 @@ namespace ProjectStormtrooper
/// <returns></returns>
public bool Insert(T plane, int position)
{
// TODO проверка позиции
// TODO проверка, что элемент массива по этой позиции пустой, если нет, то
// проверка, что после вставляемого элемента в массиве есть пустой элемент
// сдвиг всех объектов, находящихся справа от позиции до первого пустого элемента
// TODO вставка по позиции
// Проверка позиции
if (position < 0 || position > Count - 1)
{
return false;
}
// Проверка, что элемент массива по этой позиции пустой
if (_places[position] != null)
{
// Проверка, что после вставляемого элемента в массиве есть пустой элемент
int nullIndex = -1;
for (int i = position + 1; i < Count; i++)
{
if (_places[i] == null)
{
nullIndex = i;
break;
}
}
// Если пустого элемента нет, то выходим
if (nullIndex < 0)
{
return false;
}
// Сдвиг всех объектов, находящихся справа от позиции до первого пустого элемента
int i = nullIndex - 1;
while (i >= position)
{
_places[i + 1] = _places[i];
i--;
}
}
// Вставка по позиции
_places[position] = plane;
return true;
}
@ -60,8 +86,18 @@ namespace ProjectStormtrooper
/// <returns></returns>
public bool Remove(int position)
{
// TODO проверка позиции
// TODO удаление объекта из массива, присвоив элементу массива значение null
// Проверка позиции
if (position < 0 || position > Count - 1)
{
return false;
}
// Нельзя удалить пустой элемент
if (_places[position] == null)
{
return false;
}
// Удаление объекта из массива, присвоив элементу массива значение null
_places[position] = null;
return true;
}
/// <summary>
@ -71,7 +107,11 @@ namespace ProjectStormtrooper
/// <returns></returns>
public T? Get(int position)
{
// TODO проверка позиции
// Проверка позиции
if (position < 0 || position > Count - 1)
{
return null;
}
return _places[position];
}
}