Исправление ошибок

This commit is contained in:
ENDORFIT 2024-03-11 15:22:10 +04:00
parent 27d06f5bbc
commit 3ce36fbe16
5 changed files with 33 additions and 31 deletions

View File

@ -31,7 +31,7 @@ namespace ProjectMonorail
switch (comboBoxSelectorCompany.Text) switch (comboBoxSelectorCompany.Text)
{ {
case "Хранилище": case "Хранилище":
_company = new MonorailSharingService(pictureBox.Width, pictureBox.Height, new MassiveGenericObjects<DrawingMonorail>()); _company = new DepotSharingService(pictureBox.Width, pictureBox.Height, new MassiveGenericObjects<DrawingMonorail>());
break; break;
} }
} }
@ -60,7 +60,7 @@ namespace ProjectMonorail
return; return;
} }
if (_company + drawningMonorail) if (_company + drawningMonorail != -1)
{ {
MessageBox.Show("Объект добавлен"); MessageBox.Show("Объект добавлен");
pictureBox.Image = _company.Show(); pictureBox.Image = _company.Show();
@ -107,7 +107,7 @@ namespace ProjectMonorail
int position = Convert.ToInt32(maskedTextBox.Text); int position = Convert.ToInt32(maskedTextBox.Text);
if (_company - position) if (_company - position != null)
{ {
MessageBox.Show("Объект удален"); MessageBox.Show("Объект удален");
pictureBox.Image = _company.Show(); pictureBox.Image = _company.Show();

View File

@ -10,7 +10,7 @@ namespace ProjectMonorail.Scripts.Monorail.CollectionGenericObjects
/// <summary> /// <summary>
/// Размер места (ширина) /// Размер места (ширина)
/// </summary> /// </summary>
protected readonly int _placeSizeWidth = 210; protected readonly int _placeSizeWidth = 240;
/// <summary> /// <summary>
/// Размер места (высота) /// Размер места (высота)
@ -57,9 +57,9 @@ namespace ProjectMonorail.Scripts.Monorail.CollectionGenericObjects
/// <param name="company">Компания</param> /// <param name="company">Компания</param>
/// <param name="monorail">Добавляемый объект</param> /// <param name="monorail">Добавляемый объект</param>
/// <returns></returns> /// <returns></returns>
public static bool operator +(AbstractCompany company, DrawingMonorail monorail) public static int operator +(AbstractCompany company, DrawingMonorail monorail)
{ {
return company._collection?.Insert(monorail) ?? false; return company._collection?.Insert(monorail) ?? -1;
} }
/// <summary> /// <summary>
@ -68,9 +68,9 @@ namespace ProjectMonorail.Scripts.Monorail.CollectionGenericObjects
/// <param name="company">Компания</param> /// <param name="company">Компания</param>
/// <param name="position">Номер удаляемого объекта</param> /// <param name="position">Номер удаляемого объекта</param>
/// <returns></returns> /// <returns></returns>
public static bool operator -(AbstractCompany company, int position) public static DrawingMonorail operator -(AbstractCompany company, int position)
{ {
return company._collection?.Remove(position) ?? false; return company._collection?.Remove(position) ?? null;
} }
/// <summary> /// <summary>

View File

@ -4,9 +4,9 @@ using System.Drawing;
namespace ProjectMonorail.Scripts.Monorail.CollectionGenericObjects namespace ProjectMonorail.Scripts.Monorail.CollectionGenericObjects
{ {
public class MonorailSharingService : AbstractCompany public class DepotSharingService : AbstractCompany
{ {
public MonorailSharingService(int pictureWidth, int pictureHeight, ICollectionGenericObjects<DrawingMonorail> collection) : base(pictureWidth, pictureHeight, collection) {} public DepotSharingService(int pictureWidth, int pictureHeight, ICollectionGenericObjects<DrawingMonorail> collection) : base(pictureWidth, pictureHeight, collection) {}
private int maxCountX; private int maxCountX;
private int maxCountY; private int maxCountY;
@ -39,13 +39,12 @@ namespace ProjectMonorail.Scripts.Monorail.CollectionGenericObjects
int boarderOffsetX = 20; int boarderOffsetX = 20;
int boarderOffsetY = 20; int boarderOffsetY = 20;
int currentIndex = -1; int currentIndex = 0;
for (int j = 0; j < maxCountY; j++) for (int j = maxCountY - 1; j >= 0; j--)
{ {
for (int i = 0; i < maxCountX; i++) for (int i = 0; i < maxCountX; i++, currentIndex++)
{ {
currentIndex++;
if (_collection.Get(currentIndex) == null) continue; if (_collection.Get(currentIndex) == null) continue;
_collection.Get(currentIndex).SetPictureSize(_pictureWidth, _pictureHeight); _collection.Get(currentIndex).SetPictureSize(_pictureWidth, _pictureHeight);

View File

@ -1,4 +1,6 @@
namespace ProjectMonorail.Scripts.Monorail.CollectionGenericObjects using ProjectMonorail.Scripts.Monorail.Drawnings;
namespace ProjectMonorail.Scripts.Monorail.CollectionGenericObjects
{ {
/// <summary> /// <summary>
/// Интерфейс описания действий для набора хранимых объектов /// Интерфейс описания действий для набора хранимых объектов
@ -22,7 +24,7 @@
/// </summary> /// </summary>
/// <param name="obj">Добавляемый объект</param> /// <param name="obj">Добавляемый объект</param>
/// <returns>true - вставка прошла удачно, false - вставка не удалась</returns> /// <returns>true - вставка прошла удачно, false - вставка не удалась</returns>
bool Insert(T obj); int Insert(T obj);
/// <summary> /// <summary>
/// Добавление объекта в коллекцию на конкретную позицию /// Добавление объекта в коллекцию на конкретную позицию
@ -30,14 +32,14 @@
/// <param name="obj">Добавляемый объект</param> /// <param name="obj">Добавляемый объект</param>
/// <param name="position">Позиция</param> /// <param name="position">Позиция</param>
/// <returns>true - вставка прошла удачно, false - вставка не удалась</returns> /// <returns>true - вставка прошла удачно, false - вставка не удалась</returns>
bool Insert(T obj, int position); int Insert(T obj, int position);
/// <summary> /// <summary>
/// Удаление объекта из коллекции с конкретной позиции /// Удаление объекта из коллекции с конкретной позиции
/// </summary> /// </summary>
/// <param name="position">Позиция</param> /// <param name="position">Позиция</param>
/// <returns>true - удаление прошло удачно, false - удаление не удалось</returns> /// <returns>true - удаление прошло удачно, false - удаление не удалось</returns>
bool Remove(int position); T? Remove(int position);
/// <summary> /// <summary>
/// Получение объекта по позиции /// Получение объекта по позиции

View File

@ -43,54 +43,55 @@ namespace ProjectMonorail.Scripts.Monorail.CollectionGenericObjects
public T? Get(int position) public T? Get(int position)
{ {
// TODO проверка позиции // TODO проверка позиции
if (_collection[position] == null) return null; if (!(position >= 0 && position < Count) || _collection[position] == null) return null;
return _collection[position]; return _collection[position];
} }
public bool Insert(T obj) public int Insert(T obj)
{ {
// TODO вставка в свободное место набора // TODO вставка в свободное место набора
for (int i = 0; i < Count; i++) for (int i = 0; i < Count; i++)
{ {
if (InsertingElementCollection(i, obj)) return true; if (InsertingElementCollection(i, obj)) return i;
} }
return false; return -1;
} }
public bool Insert(T obj, int position) public int Insert(T obj, int position)
{ {
// TODO проверка позиции // TODO проверка позиции
// TODO проверка, что элемент массива по этой позиции пустой, если нет, то // TODO проверка, что элемент массива по этой позиции пустой, если нет, то
// ищется свободное место после этой позиции и идет вставка туда // ищется свободное место после этой позиции и идет вставка туда
// если нет после, ищем до // если нет после, ищем до
// TODO вставка // TODO вставка
if (!(position >= 0 && position < Count)) return -1;
if (InsertingElementCollection(position, obj)) return true; if (InsertingElementCollection(position, obj)) return position;
for (int i = position + 1; i < Count; i++) for (int i = position + 1; i < Count; i++)
{ {
if (InsertingElementCollection(i, obj)) return true; if (InsertingElementCollection(i, obj)) return i;
} }
for (int i = position - 1; i >= 0; i--) for (int i = position - 1; i >= 0; i--)
{ {
if (InsertingElementCollection(i, obj)) return true; if (InsertingElementCollection(i, obj)) return i;
} }
return false; return -1;
} }
public bool Remove(int position) public T Remove(int position)
{ {
// TODO проверка позиции // TODO проверка позиции
// TODO удаление объекта из массива, присвоив элементу массива значение null // TODO удаление объекта из массива, присвоив элементу массива значение null
if (_collection[position] == null) return false; if (!(position >= 0 && position < Count) || _collection[position] == null) return null;
T obj = _collection[position];
_collection[position] = null; _collection[position] = null;
return true; return obj;
} }
/// <summary> /// <summary>