Всё готово
This commit is contained in:
parent
5172ab0e40
commit
e28f874853
@ -103,9 +103,9 @@ namespace Cars
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = left; i < right; i++)
|
for (int i = left; i < right && i < _map.GetLength(0); i++)
|
||||||
{
|
{
|
||||||
for (int j = top; j < bottom; j++)
|
for (int j = top; j < bottom && j < _map.GetLength(1); j++)
|
||||||
{
|
{
|
||||||
if (_map[i, j] == _barrier)
|
if (_map[i, j] == _barrier)
|
||||||
{
|
{
|
||||||
|
@ -32,6 +32,12 @@ namespace Stormtrooper
|
|||||||
case "Простая карта":
|
case "Простая карта":
|
||||||
map = new SimpleMap();
|
map = new SimpleMap();
|
||||||
break;
|
break;
|
||||||
|
case "Опасная карта":
|
||||||
|
map = new DangerMap();
|
||||||
|
break;
|
||||||
|
case "Облачная карта":
|
||||||
|
map = new CloudMap();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
if (map != null)
|
if (map != null)
|
||||||
{
|
{
|
||||||
@ -57,8 +63,10 @@ namespace Stormtrooper
|
|||||||
MainForm form = new();
|
MainForm form = new();
|
||||||
if (form.ShowDialog() == DialogResult.OK)
|
if (form.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
DrawningObject airplane = new(form.SelectedAirplane);
|
if(form.SelectedAirplane != null)
|
||||||
if (_mapAirsCollectionGeneric + airplane)
|
{
|
||||||
|
DrawningObject airplane = new (form.SelectedAirplane);
|
||||||
|
if (_mapAirsCollectionGeneric + airplane != -1)
|
||||||
{
|
{
|
||||||
MessageBox.Show("Объект добавлен");
|
MessageBox.Show("Объект добавлен");
|
||||||
pictureBox.Image = _mapAirsCollectionGeneric.ShowSet();
|
pictureBox.Image = _mapAirsCollectionGeneric.ShowSet();
|
||||||
@ -68,6 +76,12 @@ namespace Stormtrooper
|
|||||||
MessageBox.Show("Не удалось добавить объект");
|
MessageBox.Show("Не удалось добавить объект");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show("Объект не создан");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Удаление объекта
|
/// Удаление объекта
|
||||||
@ -85,7 +99,7 @@ namespace Stormtrooper
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int pos = Convert.ToInt32(maskedTextBoxPosition.Text);
|
int pos = Convert.ToInt32(maskedTextBoxPosition.Text);
|
||||||
if (_mapAirsCollectionGeneric - pos)
|
if (_mapAirsCollectionGeneric - pos != null)
|
||||||
{
|
{
|
||||||
MessageBox.Show("Объект удален");
|
MessageBox.Show("Объект удален");
|
||||||
pictureBox.Image = _mapAirsCollectionGeneric.ShowSet();
|
pictureBox.Image = _mapAirsCollectionGeneric.ShowSet();
|
||||||
|
@ -29,9 +29,10 @@ namespace Stormtrooper
|
|||||||
}
|
}
|
||||||
private void buttonCreate_Click(object sender, EventArgs e)
|
private void buttonCreate_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Random random = new Random();
|
Random rnd = new Random();
|
||||||
|
|
||||||
_airplane = new DrawningMilitaryAirplane(10, 50);
|
_airplane = new DrawningMilitaryAirplane(10, 50);
|
||||||
_airplane.SetPosition(random.Next(100,150), random.Next(100,150), pictureBoxAirplane.Width, pictureBoxAirplane.Height);
|
_airplane.SetPosition(rnd.Next(100,150), rnd.Next(100,150), pictureBoxAirplane.Width, pictureBoxAirplane.Height);
|
||||||
SetData();
|
SetData();
|
||||||
Draw();
|
Draw();
|
||||||
}
|
}
|
||||||
@ -74,8 +75,14 @@ namespace Stormtrooper
|
|||||||
{
|
{
|
||||||
|
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
|
Color color = Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256));
|
||||||
|
ColorDialog dialog = new();
|
||||||
|
if (dialog.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
color = dialog.Color;
|
||||||
|
}
|
||||||
_airplane = new DrawningStormtrooper(random.Next(10,100),random.Next(50,250),random.Next(1,100),
|
_airplane = new DrawningStormtrooper(random.Next(10,100),random.Next(50,250),random.Next(1,100),
|
||||||
Color.FromArgb(random.Next(0,256), random.Next(0, 256), random.Next(0, 256)),
|
color,
|
||||||
Convert.ToBoolean(random.Next(0,2)), Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)));
|
Convert.ToBoolean(random.Next(0,2)), Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)));
|
||||||
_airplane.SetPosition(random.Next(100, 150), random.Next(100, 150), pictureBoxAirplane.Width, pictureBoxAirplane.Height);
|
_airplane.SetPosition(random.Next(100, 150), random.Next(100, 150), pictureBoxAirplane.Width, pictureBoxAirplane.Height);
|
||||||
SetData();
|
SetData();
|
||||||
|
@ -26,7 +26,7 @@ namespace Stormtrooper
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Размер занимаемого объектом места (высота)
|
/// Размер занимаемого объектом места (высота)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private readonly int _placeSizeHeight = 90;
|
private readonly int _placeSizeHeight = 110;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Набор объектов
|
/// Набор объектов
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -56,9 +56,9 @@ namespace Stormtrooper
|
|||||||
/// <param name="map"></param>
|
/// <param name="map"></param>
|
||||||
/// <param name="car"></param>
|
/// <param name="car"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static bool operator +(MapWithSetAirplaneGeneric<T, U> map, T car)
|
public static int operator +(MapWithSetAirplaneGeneric<T, U> map, T air)
|
||||||
{
|
{
|
||||||
return map._setAirs.Insert(car);
|
return map._setAirs.Insert(air);
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Перегрузка оператора вычитания
|
/// Перегрузка оператора вычитания
|
||||||
@ -66,7 +66,7 @@ namespace Stormtrooper
|
|||||||
/// <param name="map"></param>
|
/// <param name="map"></param>
|
||||||
/// <param name="position"></param>
|
/// <param name="position"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static bool operator -(MapWithSetAirplaneGeneric<T, U> map, int position)
|
public static T operator -(MapWithSetAirplaneGeneric<T, U> map, int position)
|
||||||
{
|
{
|
||||||
return map._setAirs.Remove(position);
|
return map._setAirs.Remove(position);
|
||||||
}
|
}
|
||||||
@ -147,10 +147,14 @@ namespace Stormtrooper
|
|||||||
private void DrawBackground(Graphics g)
|
private void DrawBackground(Graphics g)
|
||||||
{
|
{
|
||||||
Pen pen = new(Color.Black, 3);
|
Pen pen = new(Color.Black, 3);
|
||||||
|
g.FillRectangle(new SolidBrush(Color.DarkGray),0,0,_pictureWidth, _pictureHeight);
|
||||||
|
|
||||||
for (int i = 0; i < _pictureWidth / _placeSizeWidth; i++)
|
for (int i = 0; i < _pictureWidth / _placeSizeWidth; i++)
|
||||||
{
|
{
|
||||||
for (int j = 0; j < _pictureHeight / _placeSizeHeight + 1; ++j)
|
g.FillRectangle(new SolidBrush(Color.Gray), i * _placeSizeWidth, 0, _placeSizeWidth / 2, _placeSizeHeight * (_pictureHeight / _placeSizeHeight));
|
||||||
{//линия рамзетки места
|
for (int j = 0; j < _pictureHeight / _placeSizeHeight+1; ++j)
|
||||||
|
{
|
||||||
|
|
||||||
g.DrawLine(pen, i * _placeSizeWidth, j * _placeSizeHeight, i * _placeSizeWidth + _placeSizeWidth / 2, j * _placeSizeHeight);
|
g.DrawLine(pen, i * _placeSizeWidth, j * _placeSizeHeight, i * _placeSizeWidth + _placeSizeWidth / 2, j * _placeSizeHeight);
|
||||||
}
|
}
|
||||||
g.DrawLine(pen, i * _placeSizeWidth, 0, i * _placeSizeWidth, (_pictureHeight / _placeSizeHeight) * _placeSizeHeight);
|
g.DrawLine(pen, i * _placeSizeWidth, 0, i * _placeSizeWidth, (_pictureHeight / _placeSizeHeight) * _placeSizeHeight);
|
||||||
@ -162,10 +166,28 @@ namespace Stormtrooper
|
|||||||
/// <param name="g"></param>
|
/// <param name="g"></param>
|
||||||
private void DrawAirs(Graphics g)
|
private void DrawAirs(Graphics g)
|
||||||
{
|
{
|
||||||
|
int width = _pictureWidth / _placeSizeWidth;
|
||||||
|
int height = _pictureHeight / _placeSizeHeight;
|
||||||
|
|
||||||
|
int currentWidth = width - 1;
|
||||||
|
int currentHeight = 0;
|
||||||
|
|
||||||
for (int i = 0; i < _setAirs.Count; i++)
|
for (int i = 0; i < _setAirs.Count; i++)
|
||||||
{
|
{
|
||||||
// TODO установка позиции
|
|
||||||
|
_setAirs.Get(i)?.SetObject(currentWidth * _placeSizeWidth,
|
||||||
|
currentHeight * _placeSizeHeight,
|
||||||
|
_pictureWidth, _pictureHeight);
|
||||||
_setAirs.Get(i)?.DrawningObject(g);
|
_setAirs.Get(i)?.DrawningObject(g);
|
||||||
|
|
||||||
|
if (currentWidth > 0)
|
||||||
|
currentWidth--;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
currentWidth = width - 1;
|
||||||
|
currentHeight++;
|
||||||
|
}
|
||||||
|
if (currentHeight > height) return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,11 +30,10 @@ namespace Stormtrooper
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="airplane">Добавляемый самолёт</param>
|
/// <param name="airplane">Добавляемый самолёт</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool Insert(T airplane)
|
public int Insert(T airplane)
|
||||||
{
|
{
|
||||||
_places[0] = airplane;
|
Insert(airplane, 0);
|
||||||
// TODO вставка в начало набора
|
return 0;
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Добавление объекта в набор на конкретную позицию
|
/// Добавление объекта в набор на конкретную позицию
|
||||||
@ -42,26 +41,60 @@ namespace Stormtrooper
|
|||||||
/// <param name="airplane">Добавляемый самолёт</param>
|
/// <param name="airplane">Добавляемый самолёт</param>
|
||||||
/// <param name="position">Позиция</param>
|
/// <param name="position">Позиция</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool Insert(T airplane, int position)
|
public int Insert(T airplane, int position)
|
||||||
|
{
|
||||||
|
if (position < 0 || position >= Count)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (_places[position] == null || _places[position] == default(T))
|
||||||
{
|
{
|
||||||
// TODO проверка позиции
|
|
||||||
// TODO проверка, что элемент массива по этой позиции пустой, если нет, то
|
|
||||||
// проверка, что после вставляемого элемента в массиве есть пустой элемент
|
|
||||||
// сдвиг всех объектов, находящихся справа от позиции до первого пустого элемента
|
|
||||||
// TODO вставка по позиции
|
|
||||||
_places[position] = airplane;
|
_places[position] = airplane;
|
||||||
return true;
|
return position;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
bool hasEmptySpace = false;
|
||||||
|
int indexOfEmptyPlace = 0;
|
||||||
|
for (int i = position + 1; i < Count; ++i)
|
||||||
|
{
|
||||||
|
if (_places[i] == null || _places[i] == default(T))
|
||||||
|
{
|
||||||
|
hasEmptySpace = true;
|
||||||
|
indexOfEmptyPlace = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (hasEmptySpace)
|
||||||
|
{
|
||||||
|
for (int i = indexOfEmptyPlace; i > position; --i)
|
||||||
|
{
|
||||||
|
_places[i] = _places[i - 1];
|
||||||
|
}
|
||||||
|
_places[position] = airplane;
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Удаление объекта из набора с конкретной позиции
|
/// Удаление объекта из набора с конкретной позиции
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="position"></param>
|
/// <param name="position"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool Remove(int position)
|
public T Remove(int position)
|
||||||
{
|
{
|
||||||
// TODO проверка позиции
|
if (position < 0 || position >= Count)
|
||||||
// TODO удаление объекта из массива, присовив элементу массива значение null
|
{
|
||||||
return true;
|
return null;
|
||||||
|
}
|
||||||
|
T memoryObj = _places[position];
|
||||||
|
_places[position] = null;
|
||||||
|
return memoryObj;
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Получение объекта из набора по позиции
|
/// Получение объекта из набора по позиции
|
||||||
@ -70,7 +103,10 @@ namespace Stormtrooper
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public T Get(int position)
|
public T Get(int position)
|
||||||
{
|
{
|
||||||
// TODO проверка позиции
|
if (position < 0 || position >= Count)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
return _places[position];
|
return _places[position];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user