Добавление отображения карты на FormMapWithSetPlannes и начало размещения объектов.
This commit is contained in:
parent
a62a94f1d1
commit
9bba0b1a34
11
Airbus/Airbus/FormMapWithSetPlanes.Designer.cs
generated
11
Airbus/Airbus/FormMapWithSetPlanes.Designer.cs
generated
@ -73,6 +73,7 @@
|
|||||||
this.buttonRight.Size = new System.Drawing.Size(45, 45);
|
this.buttonRight.Size = new System.Drawing.Size(45, 45);
|
||||||
this.buttonRight.TabIndex = 9;
|
this.buttonRight.TabIndex = 9;
|
||||||
this.buttonRight.UseVisualStyleBackColor = true;
|
this.buttonRight.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonRight.Click += new System.EventHandler(this.ButtonMove_Click);
|
||||||
//
|
//
|
||||||
// buttonDown
|
// buttonDown
|
||||||
//
|
//
|
||||||
@ -83,6 +84,7 @@
|
|||||||
this.buttonDown.Size = new System.Drawing.Size(45, 45);
|
this.buttonDown.Size = new System.Drawing.Size(45, 45);
|
||||||
this.buttonDown.TabIndex = 8;
|
this.buttonDown.TabIndex = 8;
|
||||||
this.buttonDown.UseVisualStyleBackColor = true;
|
this.buttonDown.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonDown.Click += new System.EventHandler(this.ButtonMove_Click);
|
||||||
//
|
//
|
||||||
// buttonLeft
|
// buttonLeft
|
||||||
//
|
//
|
||||||
@ -93,6 +95,7 @@
|
|||||||
this.buttonLeft.Size = new System.Drawing.Size(45, 45);
|
this.buttonLeft.Size = new System.Drawing.Size(45, 45);
|
||||||
this.buttonLeft.TabIndex = 7;
|
this.buttonLeft.TabIndex = 7;
|
||||||
this.buttonLeft.UseVisualStyleBackColor = true;
|
this.buttonLeft.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonLeft.Click += new System.EventHandler(this.ButtonMove_Click);
|
||||||
//
|
//
|
||||||
// buttonUp
|
// buttonUp
|
||||||
//
|
//
|
||||||
@ -113,7 +116,7 @@
|
|||||||
this.buttonShowOnMap.TabIndex = 5;
|
this.buttonShowOnMap.TabIndex = 5;
|
||||||
this.buttonShowOnMap.Text = "Посмотреть карту";
|
this.buttonShowOnMap.Text = "Посмотреть карту";
|
||||||
this.buttonShowOnMap.UseVisualStyleBackColor = true;
|
this.buttonShowOnMap.UseVisualStyleBackColor = true;
|
||||||
this.buttonShowOnMap.Click += new System.EventHandler(this.buttonShowOnMap_Click);
|
this.buttonShowOnMap.Click += new System.EventHandler(this.ButtonShowOnMap_Click);
|
||||||
//
|
//
|
||||||
// buttonShowStorage
|
// buttonShowStorage
|
||||||
//
|
//
|
||||||
@ -123,7 +126,7 @@
|
|||||||
this.buttonShowStorage.TabIndex = 4;
|
this.buttonShowStorage.TabIndex = 4;
|
||||||
this.buttonShowStorage.Text = "Посмотреть хранилище";
|
this.buttonShowStorage.Text = "Посмотреть хранилище";
|
||||||
this.buttonShowStorage.UseVisualStyleBackColor = true;
|
this.buttonShowStorage.UseVisualStyleBackColor = true;
|
||||||
this.buttonShowStorage.Click += new System.EventHandler(this.buttonShowStorage_Click);
|
this.buttonShowStorage.Click += new System.EventHandler(this.ButtonShowStorage_Click);
|
||||||
//
|
//
|
||||||
// buttonRemovePlane
|
// buttonRemovePlane
|
||||||
//
|
//
|
||||||
@ -156,6 +159,10 @@
|
|||||||
// comboBoxSelectorMap
|
// comboBoxSelectorMap
|
||||||
//
|
//
|
||||||
this.comboBoxSelectorMap.FormattingEnabled = true;
|
this.comboBoxSelectorMap.FormattingEnabled = true;
|
||||||
|
this.comboBoxSelectorMap.Items.AddRange(new object[] {
|
||||||
|
"Простая карта",
|
||||||
|
"Буря в пустыне",
|
||||||
|
"Звёздные войны"});
|
||||||
this.comboBoxSelectorMap.Location = new System.Drawing.Point(20, 37);
|
this.comboBoxSelectorMap.Location = new System.Drawing.Point(20, 37);
|
||||||
this.comboBoxSelectorMap.Name = "comboBoxSelectorMap";
|
this.comboBoxSelectorMap.Name = "comboBoxSelectorMap";
|
||||||
this.comboBoxSelectorMap.Size = new System.Drawing.Size(218, 28);
|
this.comboBoxSelectorMap.Size = new System.Drawing.Size(218, 28);
|
||||||
|
@ -30,6 +30,12 @@ namespace Airbus
|
|||||||
case "Простая карта":
|
case "Простая карта":
|
||||||
map = new SimpleMap();
|
map = new SimpleMap();
|
||||||
break;
|
break;
|
||||||
|
case "Буря в пустыне":
|
||||||
|
map = new DesertStormMap();
|
||||||
|
break;
|
||||||
|
case "Звёздные войны":
|
||||||
|
map = new StarWarsMap();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(map != null)
|
if(map != null)
|
||||||
@ -69,6 +75,7 @@ namespace Airbus
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//удаление объекта
|
||||||
private void ButtonRemovePlane_Click(object sender, EventArgs e)
|
private void ButtonRemovePlane_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(maskedTextBoxPosition.Text))
|
if (string.IsNullOrEmpty(maskedTextBoxPosition.Text))
|
||||||
@ -96,7 +103,7 @@ namespace Airbus
|
|||||||
}
|
}
|
||||||
|
|
||||||
//вывод набора
|
//вывод набора
|
||||||
private void buttonShowStorage_Click(object sender, EventArgs e)
|
private void ButtonShowStorage_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if(_mapPlanesCollectionGeneric == null)
|
if(_mapPlanesCollectionGeneric == null)
|
||||||
{
|
{
|
||||||
@ -107,7 +114,7 @@ namespace Airbus
|
|||||||
}
|
}
|
||||||
|
|
||||||
//вывод карты
|
//вывод карты
|
||||||
private void buttonShowOnMap_Click(object sender, EventArgs e)
|
private void ButtonShowOnMap_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (_mapPlanesCollectionGeneric == null)
|
if (_mapPlanesCollectionGeneric == null)
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using System.Numerics;
|
||||||
|
using System.Runtime.Intrinsics.Arm;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
@ -43,13 +45,30 @@ namespace Airbus
|
|||||||
//пеергрузка оператора сложения
|
//пеергрузка оператора сложения
|
||||||
public static bool operator +(MapWithSetPlanesGeneric<T, U> map, T plane)
|
public static bool operator +(MapWithSetPlanesGeneric<T, U> map, T plane)
|
||||||
{
|
{
|
||||||
return map._setPlanes.Insert(plane);
|
if (map._setPlanes.Insert(plane) != -1)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
//return map._setPlanes.Insert(plane);
|
||||||
}
|
}
|
||||||
|
|
||||||
//перегрузка оператора вычитания
|
//перегрузка оператора вычитания
|
||||||
public static bool operator -(MapWithSetPlanesGeneric<T, U> map, int position)
|
public static bool operator -(MapWithSetPlanesGeneric<T, U> map, int position)
|
||||||
{
|
{
|
||||||
return map._setPlanes.Remove(position);
|
if (map._setPlanes.Remove(position) != null)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
//return map._setPlanes.Remove(position);
|
||||||
}
|
}
|
||||||
|
|
||||||
//вывод всего набора объектов
|
//вывод всего набора объектов
|
||||||
@ -124,25 +143,97 @@ namespace Airbus
|
|||||||
public void DrawBackground(Graphics g)
|
public void DrawBackground(Graphics g)
|
||||||
{
|
{
|
||||||
Pen pen = new(Color.Black, 3);
|
Pen pen = new(Color.Black, 3);
|
||||||
|
Pen marcupPen = new(Color.White, 5);
|
||||||
|
Pen signalFirePen = new(Color.OrangeRed, 5);
|
||||||
|
Brush concreteBrush = new SolidBrush(Color.LightGray);
|
||||||
|
Brush asphaltBrush = new SolidBrush(Color.DarkGray);
|
||||||
|
Brush marcupBrush = new SolidBrush(Color.White);
|
||||||
|
|
||||||
for(int i = 0; i < _pictureWidth / _placeSizeWidth; i++)
|
g.FillRectangle(concreteBrush, 0, 0, _pictureWidth, _pictureHeight); //заливаем область в цвет бетона
|
||||||
|
|
||||||
|
for(int i = 0; i < _pictureWidth / _placeSizeWidth - 1; i++)
|
||||||
{
|
{
|
||||||
for(int j = 0; j < _pictureHeight / _placeSizeHeight + 1; ++j)
|
for(int j = 2; j < _pictureHeight / _placeSizeHeight + 1; ++j)
|
||||||
{//линия разметки места
|
{//линия разметки места
|
||||||
g.DrawLine(pen, i * _placeSizeWidth, j * _placeSizeHeight, i * _placeSizeWidth + _placeSizeWidth / 2, j * _placeSizeHeight);
|
g.DrawLine(pen, i * _placeSizeWidth + 5, j * _placeSizeHeight, i * _placeSizeWidth + _placeSizeWidth / 2 + 5, j * _placeSizeHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
g.DrawLine(pen, i * _placeSizeWidth, 0, i * _placeSizeWidth, (_pictureHeight / _placeSizeHeight) * _placeSizeHeight);
|
g.DrawLine(pen, i * _placeSizeWidth + 5, _placeSizeHeight * 2, i * _placeSizeWidth + 5, (_pictureHeight / _placeSizeHeight) * _placeSizeHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
//отрисовка разметки взлётной полосы
|
||||||
|
g.FillRectangle(marcupBrush, _placeSizeWidth * 2 + 30, 0, 185, _pictureHeight);
|
||||||
|
g.FillRectangle(asphaltBrush, _placeSizeWidth * 2 + 35, 0, 175, _pictureHeight);
|
||||||
|
g.DrawLine(marcupPen, _placeSizeWidth * 2 + 210, 0, _placeSizeWidth * 2 + 210, _pictureHeight);
|
||||||
|
g.DrawLine(marcupPen, _placeSizeWidth * 2 + 35, 0, _placeSizeWidth * 2 + 35, _pictureHeight);
|
||||||
|
g.DrawLine(marcupPen, _placeSizeWidth * 2 + 215, 0, _placeSizeWidth * 2 + 215, _pictureHeight);
|
||||||
|
g.DrawLine(marcupPen, _placeSizeWidth * 2 + 30, 0, _placeSizeWidth * 2 + 30, _pictureHeight);
|
||||||
|
|
||||||
|
for (int i = 0; i < _pictureHeight / _placeSizeHeight; ++i)
|
||||||
|
{
|
||||||
|
g.DrawLine(marcupPen, _placeSizeWidth * 2 + 125, 20 + i * _placeSizeHeight, _placeSizeWidth * 2 + 125, (i + 1) * _placeSizeHeight - 20);
|
||||||
|
}
|
||||||
|
|
||||||
|
for(int i = 0; i < _pictureHeight / 20; i++)
|
||||||
|
{
|
||||||
|
g.DrawLine(signalFirePen, _placeSizeWidth * 2 + 15, 20 + i * _placeSizeHeight / 2, _placeSizeWidth * 2 + 15, (i + 1) * _placeSizeHeight / 2 - 20);
|
||||||
|
g.DrawLine(signalFirePen, _placeSizeWidth * 3 + 20, 20 + i * _placeSizeHeight / 2, _placeSizeWidth * 3 + 20, (i + 1) * _placeSizeHeight / 2 - 20);
|
||||||
|
}
|
||||||
|
|
||||||
|
//отрисовка сочков
|
||||||
|
Brush pinkBrush = new SolidBrush(Color.LightPink);
|
||||||
|
for(int i = 1; i < 6; i++)
|
||||||
|
{
|
||||||
|
Point[] point = new Point[]
|
||||||
|
{
|
||||||
|
new Point((i * 70 - 10) + 45, 30),
|
||||||
|
new Point(i * 70 - 10, 50),
|
||||||
|
new Point( i * 70 - 10 , 10)
|
||||||
|
};
|
||||||
|
g.FillPolygon(pinkBrush, point);
|
||||||
|
|
||||||
|
g.DrawLine(pen, i * 70 - 10, 10, i * 70 - 10, 80);
|
||||||
|
g.DrawLine(pen, i * 70 - 10, 10, (i * 70 - 10) + 45, 30);
|
||||||
|
g.DrawLine(pen, i * 70 - 10, 50, (i * 70 - 10) + 45, 30);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//метод прорисовки объеков
|
//метод прорисовки объеков
|
||||||
public void DrawPlanes(Graphics g)
|
public void DrawPlanes(Graphics g)
|
||||||
{
|
{
|
||||||
|
int width = _pictureWidth / _placeSizeWidth;
|
||||||
|
int height = _pictureHeight / _placeSizeHeight;
|
||||||
|
|
||||||
|
int currentWidth = 0;
|
||||||
|
int currentHeight = 0;
|
||||||
|
|
||||||
for(int i = 0; i < _setPlanes.Count; i++)
|
for(int i = 0; i < _setPlanes.Count; i++)
|
||||||
{
|
{
|
||||||
//TODO установка позиции
|
int bias = 0; //величина смещения
|
||||||
|
|
||||||
|
if (currentWidth > 0 && currentHeight > 0)
|
||||||
|
{
|
||||||
|
bias = width;
|
||||||
|
}
|
||||||
|
|
||||||
|
_setPlanes.Get(i)?.SetObject(_pictureWidth - currentWidth, _pictureHeight - height * currentHeight, _pictureWidth, _pictureHeight);
|
||||||
_setPlanes.Get(i)?.DrawningObject(g);
|
_setPlanes.Get(i)?.DrawningObject(g);
|
||||||
|
|
||||||
|
if (currentWidth < width - 1)
|
||||||
|
{
|
||||||
|
currentWidth++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
currentWidth = 0;
|
||||||
|
currentHeight++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (currentHeight > height)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,38 +22,79 @@ namespace Airbus
|
|||||||
}
|
}
|
||||||
|
|
||||||
//добавление объекта в набор
|
//добавление объекта в набор
|
||||||
public bool Insert(T plane)
|
public int Insert(T plane)
|
||||||
{
|
{
|
||||||
//TODO вставка в начало набора
|
return Insert(plane, 0);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//добавление объекта в набор на конкретную позицию
|
//добавление объекта в набор на конкретную позицию
|
||||||
public bool Insert(T plane, int position)
|
public int Insert(T plane, int position)
|
||||||
{
|
{
|
||||||
//TODO проверка позиции
|
// проверка позиции
|
||||||
//TODO проверка, что элемент массива на этой позиции пустой, если нет, то
|
if (position >= _places.Length || position < 0)
|
||||||
// проверка, что после вставляемого элемента в массиве есть пустой элемент
|
{
|
||||||
// сдвиг всех элементов, находящихся справа от позиции до первого пустого элемента
|
return -1;
|
||||||
//TODO втсавка по позиции
|
}
|
||||||
|
|
||||||
|
//проверка, что элемент массива по этой позиции пустой, если нет, то
|
||||||
|
if (_places[position] == null)
|
||||||
|
{
|
||||||
|
_places[position] = plane;
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
|
||||||
|
//проверка, что после вставляемого элемента в массиве есть пустой элемент
|
||||||
|
int findEmptyPos = -1;
|
||||||
|
|
||||||
|
for (int i = position + 1; i < Count; i++)
|
||||||
|
{
|
||||||
|
if (_places[i] == null)
|
||||||
|
{
|
||||||
|
findEmptyPos = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (findEmptyPos < 0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//сдвиг всех объектов, находящихся справа от позиции до первого пустого элемента
|
||||||
|
for (int i = findEmptyPos; i > position; i--)
|
||||||
|
{
|
||||||
|
_places[i] = _places[i - 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
// вставка по позиции
|
||||||
_places[position] = plane;
|
_places[position] = plane;
|
||||||
return true;
|
|
||||||
|
return position;
|
||||||
}
|
}
|
||||||
|
|
||||||
//удаление объекта из набора с конкретной позиции
|
//удаление объекта из набора с конкретной позиции
|
||||||
public bool Remove(int position)
|
public T Remove(int position)
|
||||||
{
|
{
|
||||||
//TODO проверка позиции
|
// проверка позиции
|
||||||
//TODO удаление объекта из массива, присвоив элементу массива значение null
|
if (position >= _places.Length || position < 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
// удаление объекта из массива, присовив элементу массива значение null
|
||||||
|
T temp = _places[position];
|
||||||
|
_places[position] = null;
|
||||||
|
|
||||||
|
return temp;
|
||||||
}
|
}
|
||||||
|
|
||||||
//получение объекта из набора по позиции
|
//получение объекта из набора по позиции
|
||||||
public T Get(int position)
|
public T Get(int position)
|
||||||
{
|
{
|
||||||
//TODO проверка позиции
|
if (position >= _places.Length || position < 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
return _places[position];
|
return _places[position];
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user