diff --git a/WarmlyShip/WarmlyShip/FormMapWithSetWarmlyShip.cs b/WarmlyShip/WarmlyShip/FormMapWithSetWarmlyShip.cs
index 5e5f9bd..fbaf5a2 100644
--- a/WarmlyShip/WarmlyShip/FormMapWithSetWarmlyShip.cs
+++ b/WarmlyShip/WarmlyShip/FormMapWithSetWarmlyShip.cs
@@ -68,7 +68,7 @@ namespace WarmlyShip
if (form.ShowDialog() == DialogResult.OK)
{
DrawningObjectShip car = new(form.SelectedShip);
- if (_mapWarmlyShipCollectionGeneric + car)
+ if ((_mapWarmlyShipCollectionGeneric + car) > -1)
{
MessageBox.Show("Объект добавлен");
pictureBox1.Image = _mapWarmlyShipCollectionGeneric.ShowSet();
@@ -98,7 +98,7 @@ namespace WarmlyShip
return;
}
int pos = Convert.ToInt32(maskedTextBoxPosition.Text);
- if (_mapWarmlyShipCollectionGeneric - pos)
+ if ((_mapWarmlyShipCollectionGeneric - pos) != null)
{
MessageBox.Show("Объект удален");
pictureBox1.Image = _mapWarmlyShipCollectionGeneric.ShowSet();
@@ -107,7 +107,6 @@ namespace WarmlyShip
{
MessageBox.Show("Не удалось удалить объект");
}
-
}
///
diff --git a/WarmlyShip/WarmlyShip/MapWithSetWarmlyShipGeneric.cs b/WarmlyShip/WarmlyShip/MapWithSetWarmlyShipGeneric.cs
index 1f628f0..56b40bc 100644
--- a/WarmlyShip/WarmlyShip/MapWithSetWarmlyShipGeneric.cs
+++ b/WarmlyShip/WarmlyShip/MapWithSetWarmlyShipGeneric.cs
@@ -26,11 +26,11 @@ namespace WarmlyShip
///
/// Размер занимаемого объектом места (ширина)
///
- private readonly int _placeSizeWidth = 210;
+ private readonly int _placeSizeWidth = 140;
///
/// Размер занимаемого объектом места (высота)
///
- private readonly int _placeSizeHeight = 90;
+ private readonly int _placeSizeHeight = 80;
///
/// Набор объектов
///
@@ -60,7 +60,7 @@ namespace WarmlyShip
///
///
///
- public static bool operator +(MapWithSetWarmlyShipGeneric map, T ship)
+ public static int operator +(MapWithSetWarmlyShipGeneric map, T ship)
{
return map._setWarmlyShip.Insert(ship);
}
@@ -70,7 +70,7 @@ namespace WarmlyShip
///
///
///
- public static bool operator -(MapWithSetWarmlyShipGeneric map, int position)
+ public static T operator -(MapWithSetWarmlyShipGeneric map, int position)
{
return map._setWarmlyShip.Remove(position);
}
@@ -83,7 +83,7 @@ namespace WarmlyShip
Bitmap bmp = new(_pictureWidth, _pictureHeight);
Graphics gr = Graphics.FromImage(bmp);
DrawBackground(gr);
- DrawCars(gr);
+ DrawWarmlyShip(gr);
return bmp;
}
///
@@ -155,7 +155,7 @@ namespace WarmlyShip
for (int j = 0; j < _pictureHeight / _placeSizeHeight + 1; ++j)
{//линия рамзетки места
g.DrawLine(pen, i * _placeSizeWidth, j * _placeSizeHeight, i *
- _placeSizeWidth + _placeSizeWidth / 2, j * _placeSizeHeight);
+ _placeSizeWidth + _placeSizeWidth / 2 , j * _placeSizeHeight);
}
g.DrawLine(pen, i * _placeSizeWidth, 0, i * _placeSizeWidth,
(_pictureHeight / _placeSizeHeight) * _placeSizeHeight);
@@ -165,12 +165,25 @@ namespace WarmlyShip
/// Метод прорисовки объектов
///
///
- private void DrawCars(Graphics g)
+ private void DrawWarmlyShip(Graphics g)
{
- for (int i = 0; i < _setWarmlyShip.Count; i++)
+ // TODO установка позиции
+ int i = 0;
+ int j = 0;
+ for (int k = 0; k < _setWarmlyShip.Count; k++)
{
- // TODO установка позиции
- _setWarmlyShip.Get(i)?.DrawningObject(g);
+ _setWarmlyShip.Get(k)?.SetObject(j + 10, i + 20, _pictureWidth, _pictureHeight);
+ _setWarmlyShip.Get(k)?.DrawningObject(g);
+
+ if (j >= _pictureWidth - 2 * _placeSizeWidth)
+ {
+ j = 0;
+ i += _placeSizeHeight;
+ }
+ else
+ {
+ j += _placeSizeWidth;
+ }
}
}
}
diff --git a/WarmlyShip/WarmlyShip/SetWarmlyShipGeneric.cs b/WarmlyShip/WarmlyShip/SetWarmlyShipGeneric.cs
index d441cb0..a7edbcd 100644
--- a/WarmlyShip/WarmlyShip/SetWarmlyShipGeneric.cs
+++ b/WarmlyShip/WarmlyShip/SetWarmlyShipGeneric.cs
@@ -34,10 +34,19 @@ namespace WarmlyShip
///
/// Добавляемый корабль
///
- public bool Insert(T ship)
+ public int Insert(T ship)
{
// TODO вставка в начало набора
- return true;
+ if (ship == null)
+ {
+ return -1;
+ }
+ for (int i = Count - 1; i > 0; i--)
+ {
+ _places[i] = _places[i - 1];
+ }
+ _places[0] = ship;
+ return 0;
}
///
/// Добавление объекта в набор на конкретную позицию
@@ -45,26 +54,50 @@ namespace WarmlyShip
/// Добавляемый автомобиль
/// Позиция
///
- public bool Insert(T ship, int position)
+ public int Insert(T ship, int position)
{
// TODO проверка позиции
// TODO проверка, что элемент массива по этой позиции пустой, если нет, то
// проверка, что после вставляемого элемента в массиве есть пустой элемент
// сдвиг всех объектов, находящихся справа от позиции до первого пустого элемента
// TODO вставка по позиции
- _places[position] = ship;
- return true;
+ if (position < 0 || position > Count)
+ {
+ return -1;
+ }
+ int firstNullElementIndex = position; //индекс первого нулевого элемента
+ while (_places[firstNullElementIndex] != null)
+ {
+ if (firstNullElementIndex >= Count)
+ {
+ return -1;
+ }
+ firstNullElementIndex++;
+ }
+ for (int i = firstNullElementIndex; i > position; i--)
+ {
+ _places[i] = _places[i - 1];
+ }
+
+ _places[position] = ship;
+ return 0;
}
///
/// Удаление объекта из набора с конкретной позиции
///
///
///
- public bool Remove(int position)
+ public T Remove(int position)
{
// TODO проверка позиции
// TODO удаление объекта из массива, присовив элементу массива значение null
- return true;
+ if (_places[position] == null)
+ {
+ return null;
+ }
+ var result = _places[position];
+ _places[position] = null;
+ return result;
}
///
/// Получение объекта из набора по позиции
@@ -73,9 +106,11 @@ namespace WarmlyShip
///
public T Get(int position)
{
- // TODO проверка позиции
- return _places[position];
+ if (_places[position] != null)
+ {
+ return _places[position];
+ }
+ return null;
}
-
}
}