Решение "ToDo"
This commit is contained in:
parent
73d5bf2ccf
commit
54e29c6e9a
@ -109,7 +109,7 @@
|
||||
this.buttonAddMap.Location = new System.Drawing.Point(0, 90);
|
||||
this.buttonAddMap.Name = "buttonAddMap";
|
||||
this.buttonAddMap.Size = new System.Drawing.Size(238, 29);
|
||||
this.buttonAddMap.TabIndex = 1;
|
||||
this.buttonAddMap.TabIndex = 2;
|
||||
this.buttonAddMap.Text = "Добавить карту";
|
||||
this.buttonAddMap.UseVisualStyleBackColor = true;
|
||||
this.buttonAddMap.Click += new System.EventHandler(this.ButtonAddMap_Click);
|
||||
@ -123,15 +123,14 @@
|
||||
//
|
||||
// comboBoxSelectorMap
|
||||
//
|
||||
this.comboBoxSelectorMap.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.comboBoxSelectorMap.FormattingEnabled = true;
|
||||
this.comboBoxSelectorMap.Items.AddRange(new object[] {
|
||||
"Простая карта",
|
||||
"Океан"});
|
||||
"Простая карта"});
|
||||
this.comboBoxSelectorMap.Location = new System.Drawing.Point(3, 56);
|
||||
this.comboBoxSelectorMap.Name = "comboBoxSelectorMap";
|
||||
this.comboBoxSelectorMap.Size = new System.Drawing.Size(235, 28);
|
||||
this.comboBoxSelectorMap.TabIndex = 0;
|
||||
this.comboBoxSelectorMap.SelectedIndexChanged += new System.EventHandler(this.ComboBoxSelectorMap_SelectedIndexChanged);
|
||||
this.comboBoxSelectorMap.Size = new System.Drawing.Size(232, 28);
|
||||
this.comboBoxSelectorMap.TabIndex = 1;
|
||||
//
|
||||
// buttonLeft
|
||||
//
|
||||
|
@ -17,7 +17,8 @@ namespace WarmlyShip
|
||||
/// </summary>
|
||||
private readonly Dictionary<string, AbstractMap> _mapsDict = new()
|
||||
{
|
||||
{ "Простая карта", new SimpleMap() }
|
||||
{ "Простая карта", new SimpleMap() },
|
||||
{ "Океан", new OceanMap() }
|
||||
};
|
||||
/// <summary>
|
||||
/// Объект от коллекции карт
|
||||
@ -101,10 +102,6 @@ namespace WarmlyShip
|
||||
_mapsCollection.DelMap(listBoxMaps.SelectedItem?.ToString() ?? string.Empty);
|
||||
ReloadMaps();
|
||||
}
|
||||
}
|
||||
private void ComboBoxSelectorMap_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// Добавление объекта
|
||||
@ -121,7 +118,7 @@ namespace WarmlyShip
|
||||
if (form.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
DrawningObjectShip ship = new(form.SelectedShip);
|
||||
if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] + ship)
|
||||
if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] + ship != -1)
|
||||
{
|
||||
MessageBox.Show("Объект добавлен");
|
||||
pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet();
|
||||
@ -139,20 +136,13 @@ namespace WarmlyShip
|
||||
/// <param name="e"></param>
|
||||
private void ButtonRemoveShip_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listBoxMaps.SelectedIndex == -1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (string.IsNullOrEmpty(maskedTextBoxPosition.Text))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (MessageBox.Show("Удалить объект?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
|
||||
if (listBoxMaps.SelectedIndex == -1 || string.IsNullOrEmpty(maskedTextBoxPosition.Text) ||
|
||||
MessageBox.Show("Удалить объект?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
|
||||
{
|
||||
return;
|
||||
}
|
||||
int pos = Convert.ToInt32(maskedTextBoxPosition.Text);
|
||||
if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] - pos)
|
||||
if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] - pos != null)
|
||||
{
|
||||
MessageBox.Show("Объект удален");
|
||||
pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet();
|
||||
|
@ -55,7 +55,7 @@ namespace WarmlyShip
|
||||
/// <param name="map"></param>
|
||||
/// <param name="ship"></param>
|
||||
/// <returns></returns>
|
||||
public static bool operator +(MapWithSetShipsGeneric<T, U> map, T ship)
|
||||
public static int operator +(MapWithSetShipsGeneric<T, U> map, T ship)
|
||||
{
|
||||
return map._setShips.Insert(ship);
|
||||
}
|
||||
@ -65,7 +65,7 @@ namespace WarmlyShip
|
||||
/// <param name="map"></param>
|
||||
/// <param name="position"></param>
|
||||
/// <returns></returns>
|
||||
public static bool operator -(MapWithSetShipsGeneric<T, U> map, int position)
|
||||
public static T operator -(MapWithSetShipsGeneric<T, U> map, int position)
|
||||
{
|
||||
return map._setShips.Remove(position);
|
||||
}
|
||||
@ -166,7 +166,7 @@ namespace WarmlyShip
|
||||
{
|
||||
int countInLine = _pictureWidth / _placeSizeWidth;
|
||||
int maxLeft = (countInLine - 1) * _placeSizeWidth;
|
||||
foreach (var ship in _setShips.GetShips())
|
||||
for (int i = 0; i < _setShips.Count; i++)
|
||||
{
|
||||
var ship = _setShips[i];
|
||||
ship?.SetObject(maxLeft - i % countInLine * _placeSizeWidth, i / countInLine * _placeSizeHeight + 3, _pictureWidth, _pictureHeight);
|
||||
|
@ -42,7 +42,7 @@ namespace WarmlyShip
|
||||
/// <param name="map">Карта</param>
|
||||
public void AddMap(string name, AbstractMap map)
|
||||
{
|
||||
// TODO Прописать логику для добавления
|
||||
_mapStorages.Add(name, new(_pictureWidth, _pictureHeight, map));
|
||||
}
|
||||
/// <summary>
|
||||
/// Удаление карты
|
||||
@ -50,7 +50,7 @@ namespace WarmlyShip
|
||||
/// <param name="name">Название карты</param>
|
||||
public void DelMap(string name)
|
||||
{
|
||||
// TODO Прописать логику для удаления
|
||||
_mapStorages.Remove(name);
|
||||
}
|
||||
/// <summary>
|
||||
/// Доступ к парковке
|
||||
@ -61,8 +61,8 @@ namespace WarmlyShip
|
||||
{
|
||||
get
|
||||
{
|
||||
// TODO Продумать логику получения объекта
|
||||
return null;
|
||||
_mapStorages.TryGetValue(ind, out var mapWithSetShipsGeneric);
|
||||
return mapWithSetShipsGeneric;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -33,14 +33,14 @@ namespace WarmlyShip
|
||||
/// </summary>
|
||||
/// <param name="ship">Добавляемый корабль</param>
|
||||
/// <returns></returns>
|
||||
public bool Insert(T ship)
|
||||
public int Insert(T ship)
|
||||
{
|
||||
//проверка на макс каунт
|
||||
return Insert(ship, 0);
|
||||
}
|
||||
|
||||
private bool isCorrectPosition(int position)
|
||||
{
|
||||
return 0 <= position && position < Count;
|
||||
return 0 <= position && position < _maxCount;
|
||||
}
|
||||
/// <summary>
|
||||
/// Добавление объекта в набор на конкретную позицию
|
||||
@ -48,37 +48,27 @@ namespace WarmlyShip
|
||||
/// <param name="ship">Добавляемый корабль</param>
|
||||
/// <param name="position">Позиция</param>
|
||||
/// <returns></returns>
|
||||
public bool Insert(T ship, int position)
|
||||
public int Insert(T airplane, int position)
|
||||
{
|
||||
int positionNullElement = position;
|
||||
while (Get(positionNullElement) != null)
|
||||
if (!isCorrectPosition(position))
|
||||
{
|
||||
positionNullElement++;
|
||||
return -1;
|
||||
}
|
||||
// Если изначальная позиция была некорректной или пустых элементов справа не оказалось возвращаем false
|
||||
if (!isCorrectPosition(positionNullElement))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
while (positionNullElement != position) // Смещение вправо
|
||||
{
|
||||
_places[positionNullElement] = _places[positionNullElement - 1];
|
||||
positionNullElement--;
|
||||
}
|
||||
_places[position] = ship;
|
||||
return true;
|
||||
_places.Insert(position, airplane);
|
||||
return position;
|
||||
}
|
||||
/// <summary>
|
||||
/// Удаление объекта из набора с конкретной позиции
|
||||
/// </summary>
|
||||
/// <param name="position"></param>
|
||||
/// <returns></returns>
|
||||
public bool Remove(int position)
|
||||
{
|
||||
public T Remove(int position)
|
||||
{
|
||||
if (!isCorrectPosition(position))
|
||||
return false;
|
||||
_places[position-1] = null;
|
||||
return true;
|
||||
return null;
|
||||
var result = _places[position];
|
||||
_places.RemoveAt(position);
|
||||
return result;
|
||||
}
|
||||
/// <summary>
|
||||
/// Получение объекта из набора по позиции
|
||||
@ -89,13 +79,11 @@ namespace WarmlyShip
|
||||
{
|
||||
get
|
||||
{
|
||||
// TODO проверка позиции
|
||||
return _places[position];
|
||||
return isCorrectPosition(position) && position < Count ? _places[position] : null;
|
||||
}
|
||||
set
|
||||
{
|
||||
// TODO проверка позиции
|
||||
// TODO вставка в список по позиции
|
||||
Insert(value, position);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
|
Loading…
Reference in New Issue
Block a user