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