Лаб 3 финал
This commit is contained in:
parent
a98774d0c4
commit
8f08604a56
@ -10,6 +10,7 @@ using System.Windows.Forms;
|
||||
using SelfPropelledArtilleryUnit.DrawningObjects;
|
||||
using SelfPropelledArtilleryUnit.MovementStrategy;
|
||||
using SelfPropelledArtilleryUnit.Generics;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
|
||||
|
||||
namespace SelfPropelledArtilleryUnit
|
||||
{
|
||||
@ -18,6 +19,7 @@ namespace SelfPropelledArtilleryUnit
|
||||
/// </summary>
|
||||
public partial class FormSPAUCollection : Form
|
||||
{
|
||||
readonly int countPlaces = 11;
|
||||
/// <summary>
|
||||
/// Набор объектов
|
||||
/// </summary>
|
||||
@ -40,7 +42,9 @@ namespace SelfPropelledArtilleryUnit
|
||||
FormSPAU form = new();
|
||||
if (form.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
if (_SPAUs + form.SelectedSPAU)
|
||||
int addedIndex = _SPAUs + form.SelectedSPAU;
|
||||
if (addedIndex != -1 && addedIndex <= countPlaces)
|
||||
|
||||
{
|
||||
MessageBox.Show("Объект добавлен");
|
||||
pictureBoxCollection.Image = _SPAUs.ShowSPAUs();
|
||||
|
@ -56,14 +56,13 @@ namespace SelfPropelledArtilleryUnit.Generics
|
||||
/// <param name="collect"></param>
|
||||
/// <param name="obj"></param>
|
||||
/// <returns></returns>
|
||||
public static bool operator +(SPAUGenericCollection<T, U> collect, T? obj)
|
||||
public static int operator +(SPAUGenericCollection<T, U> collect, T? obj)
|
||||
{
|
||||
if (obj == null)
|
||||
{
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
collect?._collection.Insert(obj);
|
||||
return true;
|
||||
return collect._collection.Insert(obj);
|
||||
}
|
||||
/// <summary>
|
||||
/// Перегрузка оператора вычитания
|
||||
|
@ -35,20 +35,9 @@ namespace SelfPropelledArtilleryUnit.Generics
|
||||
/// </summary>
|
||||
/// <param name="spau">Добавляемый автомобиль</param>
|
||||
/// <returns></returns>
|
||||
public bool Insert(T spau)
|
||||
public int Insert(T spau)
|
||||
{
|
||||
try
|
||||
{
|
||||
for (int i = _places.Length - 1; i > 0; i--)
|
||||
{
|
||||
_places[i] = _places[i - 1];
|
||||
}
|
||||
_places[0] = spau;
|
||||
return true;
|
||||
}
|
||||
catch {
|
||||
return false;
|
||||
}
|
||||
return Insert(spau, 0);
|
||||
}
|
||||
/// <summary>
|
||||
/// Добавление объекта в набор на конкретную позицию
|
||||
@ -56,26 +45,37 @@ namespace SelfPropelledArtilleryUnit.Generics
|
||||
/// <param name="car">Добавляемый автомобиль</param>
|
||||
/// <param name="position">Позиция</param>
|
||||
/// <returns></returns>
|
||||
public bool Insert(T spau, int position)
|
||||
public int Insert(T spau, int position)
|
||||
{
|
||||
if (position < 0 || position >= _places.Count() || spau == null)
|
||||
if (position < 0 || spau == null)
|
||||
{
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
if (_places[position] == null)
|
||||
if (position >= Count)
|
||||
{
|
||||
return false;
|
||||
|
||||
return -1;
|
||||
}
|
||||
// Ищем первую пустую позицию начиная с указанной позиции
|
||||
int positionNull = Array.FindIndex(_places, position, x => x == null);
|
||||
if (positionNull == -1)
|
||||
return false;
|
||||
|
||||
if (positionNull == -1 && _places[Count - 1] != null)
|
||||
{
|
||||
// Если пустых позиций нет и последняя позиция в массиве занята
|
||||
return -1;
|
||||
}
|
||||
else if (positionNull == -1)
|
||||
{
|
||||
// Если позиция для вставки пустая, а пустых позиций больше нет
|
||||
positionNull = Count - 1;
|
||||
}
|
||||
// Сдвигаем элементы вправо, начиная с первой пустой позиции и заканчивая указанной позицией
|
||||
for (int i = positionNull; i > position; i--)
|
||||
{
|
||||
_places[i] = _places[i - 1];
|
||||
}
|
||||
// Вставка по позиции
|
||||
_places[position] = spau;
|
||||
return true;
|
||||
return position;
|
||||
}
|
||||
/// <summary>
|
||||
/// Удаление объекта из набора с конкретной позиции
|
||||
@ -84,7 +84,7 @@ namespace SelfPropelledArtilleryUnit.Generics
|
||||
/// <returns></returns>
|
||||
public bool Remove(int position)
|
||||
{
|
||||
if (position < 0 || position >= _places.Count())
|
||||
if (position < 0 || position >= Count)
|
||||
return false;
|
||||
|
||||
_places[position] = null;
|
||||
@ -98,7 +98,7 @@ namespace SelfPropelledArtilleryUnit.Generics
|
||||
/// <returns></returns>
|
||||
public T? Get(int position)
|
||||
{
|
||||
if (position < 0 || position >= _places.Count())
|
||||
if (position < 0 || position >= Count)
|
||||
return null;
|
||||
return _places[position];
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user