diff --git a/AntiAircraftGun/AntiAircraftGun/MapWithSetAntiAircraftGunsGeneric.cs b/AntiAircraftGun/AntiAircraftGun/MapWithSetAntiAircraftGunsGeneric.cs
index a877ef6..ae58bf9 100644
--- a/AntiAircraftGun/AntiAircraftGun/MapWithSetAntiAircraftGunsGeneric.cs
+++ b/AntiAircraftGun/AntiAircraftGun/MapWithSetAntiAircraftGunsGeneric.cs
@@ -26,7 +26,7 @@ namespace AntiAircraftGun
///
/// Размер занимаемого объектом места (ширина)
///
- private readonly int _placeSizeWidth = 210;
+ private readonly int _placeSizeWidth = 150;
///
/// Размер занимаемого объектом места (высота)
///
@@ -58,7 +58,7 @@ namespace AntiAircraftGun
/// Перегрузка оператора сложения
///
///
- ///
+ ///
///
public static bool operator +(MapWithSetAntiAircraftGunsGeneric map, T antiAircraftGuns)
{
@@ -83,7 +83,7 @@ namespace AntiAircraftGun
Bitmap bmp = new(_pictureWidth, _pictureHeight);
Graphics gr = Graphics.FromImage(bmp);
DrawBackground(gr);
- DrawCars(gr);
+ DrawAntiAircraftGuns(gr);
return bmp;
}
///
@@ -95,10 +95,10 @@ namespace AntiAircraftGun
Shaking();
for (int i = 0; i < _setAntiAircraftGuns.Count; i++)
{
- var car = _setAntiAircraftGuns.Get(i);
- if (car != null)
+ var antiAircraftGun = _setAntiAircraftGuns.Get(i);
+ if (antiAircraftGun != null)
{
- return _map.CreateMap(_pictureWidth, _pictureHeight, car);
+ return _map.CreateMap(_pictureWidth, _pictureHeight, antiAircraftGun);
}
}
return new(_pictureWidth, _pictureHeight);
@@ -128,10 +128,10 @@ namespace AntiAircraftGun
{
for (; j > i; j--)
{
- var car = _setAntiAircraftGuns.Get(j);
- if (car != null)
+ var antiAircraftGun = _setAntiAircraftGuns.Get(j);
+ if (antiAircraftGun != null)
{
- _setAntiAircraftGuns.Insert(car, i);
+ _setAntiAircraftGuns.Insert(antiAircraftGun, i);
_setAntiAircraftGuns.Remove(j);
break;
}
@@ -150,20 +150,22 @@ namespace AntiAircraftGun
private void DrawBackground(Graphics g)
{
Pen pen = new(Color.Black, 3);
+ Brush brushGreen = new SolidBrush(Color.Green);
+ Brush brushLightGray = new SolidBrush(Color.LightGray);
for (int i = 0; i < _pictureWidth / _placeSizeWidth; i++)
{
- for (int j = 0; j < _pictureHeight / _placeSizeHeight + 1; ++j)
- {//линия рамзетки места
- g.DrawLine(pen, i * _placeSizeWidth, j * _placeSizeHeight, i * _placeSizeWidth + _placeSizeWidth / 2, j * _placeSizeHeight);
+ for (int j = 0; j < _pictureHeight / _placeSizeHeight; ++j)
+ {
+ g.FillRectangle(brushGreen, i * _placeSizeWidth, j * _placeSizeHeight, _placeSizeWidth, _placeSizeHeight);
+ g.FillRectangle(brushLightGray, i * _placeSizeWidth + _placeSizeWidth / 10, j * _placeSizeHeight + _placeSizeHeight / 10, _placeSizeWidth * 8 / 10, _placeSizeHeight * 8 / 10);
}
- g.DrawLine(pen, i * _placeSizeWidth, 0, i * _placeSizeWidth, (_pictureHeight / _placeSizeHeight) * _placeSizeHeight);
}
}
///
/// Метод прорисовки объектов
///
///
- private void DrawCars(Graphics g)
+ private void DrawAntiAircraftGuns(Graphics g)
{
for (int i = 0; i < _setAntiAircraftGuns.Count; i++)
{
diff --git a/AntiAircraftGun/AntiAircraftGun/SetAntiAircraftGunsGeneric.cs b/AntiAircraftGun/AntiAircraftGun/SetAntiAircraftGunsGeneric.cs
index 1f4fa88..56639ce 100644
--- a/AntiAircraftGun/AntiAircraftGun/SetAntiAircraftGunsGeneric.cs
+++ b/AntiAircraftGun/AntiAircraftGun/SetAntiAircraftGunsGeneric.cs
@@ -32,12 +32,21 @@ namespace AntiAircraftGun
///
/// Добавление объекта в набор
///
- /// Добавляемый автомобиль
+ /// Добавляемый автомобиль
///
public bool Insert(T antiAircraftGun)
{
// TODO вставка в начало набора
- return true;
+ if (_places[Count - 1] == null)
+ {
+ for(int i = Count - 1; i > 0; i--)
+ {
+ _places[i] = _places[i - 1];
+ }
+ _places[0] = antiAircraftGun;
+ return true;
+ }
+ return false;
}
///
/// Добавление объекта в набор на конкретную позицию
@@ -47,13 +56,25 @@ namespace AntiAircraftGun
///
public bool Insert(T antiAircraftGun, int position)
{
- // TODO проверка позиции
- // TODO проверка, что элемент массива по этой позиции пустой, если нет, то
- // проверка, что после вставляемого элемента в массиве есть пустой элемент
- // сдвиг всех объектов, находящихся справа от позиции до первого пустого элемента
- // TODO вставка по позиции
- _places[position] = antiAircraftGun;
- return true;
+ if (position < 0 || position >= Count) return false;
+ if (_places[position] == null)
+ {
+ _places[position] = antiAircraftGun;
+ return true;
+ }
+ else
+ {
+ if (_places[Count - 1] == null)
+ {
+ for (int i = Count - 1; i > position; i--)
+ {
+ _places[i] = _places[i - 1];
+ }
+ _places[position] = antiAircraftGun;
+ return true;
+ }
+ return false;
+ }
}
///
/// Удаление объекта из набора с конкретной позиции
@@ -62,9 +83,13 @@ namespace AntiAircraftGun
///
public bool Remove(int position)
{
- // TODO проверка позиции
- // TODO удаление объекта из массива, присовив элементу массива значение null
- return true;
+ if (position < 0 || position >= Count) return false;
+ if (_places[position] != null)
+ {
+ _places[position] = null;
+ return true;
+ }
+ return false;
}
///
/// Получение объекта из набора по позиции
@@ -73,7 +98,7 @@ namespace AntiAircraftGun
///
public T Get(int position)
{
- // TODO проверка позиции
+ if (position < 0 || position >= Count) return null;
return _places[position];
}
}