Правки в лабораторной 3
This commit is contained in:
parent
a17318de92
commit
b54059d598
2
Tank/Tank/CollectionsFrame.Designer.cs
generated
2
Tank/Tank/CollectionsFrame.Designer.cs
generated
@ -70,7 +70,7 @@
|
|||||||
DeleteButton.TabIndex = 3;
|
DeleteButton.TabIndex = 3;
|
||||||
DeleteButton.Text = "Удалить технику";
|
DeleteButton.Text = "Удалить технику";
|
||||||
DeleteButton.UseVisualStyleBackColor = true;
|
DeleteButton.UseVisualStyleBackColor = true;
|
||||||
DeleteButton.Click += ButtonRemoveCar_Click;
|
DeleteButton.Click += ButtonRemoveTank_Click;
|
||||||
//
|
//
|
||||||
// AddButton
|
// AddButton
|
||||||
//
|
//
|
||||||
|
@ -31,7 +31,7 @@ namespace Tank
|
|||||||
if (_tanks + form.SelectedCar != -1)
|
if (_tanks + form.SelectedCar != -1)
|
||||||
{
|
{
|
||||||
MessageBox.Show("Объект добавлен");
|
MessageBox.Show("Объект добавлен");
|
||||||
DrawTank.Image = _tanks.ShowCars();
|
DrawTank.Image = _tanks.ShowTanks();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -39,7 +39,7 @@ namespace Tank
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
private void ButtonRemoveCar_Click(object sender, EventArgs e)
|
private void ButtonRemoveTank_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (MessageBox.Show("Удалить объект?", "Удаление",
|
if (MessageBox.Show("Удалить объект?", "Удаление",
|
||||||
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
|
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
|
||||||
@ -55,7 +55,7 @@ namespace Tank
|
|||||||
if (_tanks - pos)
|
if (_tanks - pos)
|
||||||
{
|
{
|
||||||
MessageBox.Show("Объект удален");
|
MessageBox.Show("Объект удален");
|
||||||
DrawTank.Image = _tanks.ShowCars();
|
DrawTank.Image = _tanks.ShowTanks();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -65,7 +65,7 @@ namespace Tank
|
|||||||
|
|
||||||
private void ButtonRefreshCollection_Click(object sender, EventArgs e)
|
private void ButtonRefreshCollection_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
DrawTank.Image = _tanks.ShowCars();
|
DrawTank.Image = _tanks.ShowTanks();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -8,15 +8,19 @@ namespace Tank
|
|||||||
{
|
{
|
||||||
internal class SetGeneric<T> where T : class
|
internal class SetGeneric<T> where T : class
|
||||||
{
|
{
|
||||||
|
// Массив объектов, которые храним
|
||||||
private readonly T?[] _places;
|
private readonly T?[] _places;
|
||||||
|
|
||||||
|
// Количество объектов в массиве
|
||||||
public int Count => _places.Length;
|
public int Count => _places.Length;
|
||||||
|
|
||||||
|
// Конструктор
|
||||||
public SetGeneric(int count)
|
public SetGeneric(int count)
|
||||||
{
|
{
|
||||||
_places = new T?[count];
|
_places = new T?[count];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Добавление объекта в набор
|
||||||
public int Insert(T car)
|
public int Insert(T car)
|
||||||
{
|
{
|
||||||
int index = -1;
|
int index = -1;
|
||||||
@ -39,6 +43,7 @@ namespace Tank
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Добавление объекта в набор на конкретную позицию
|
||||||
public int Insert(T car, int position)
|
public int Insert(T car, int position)
|
||||||
{
|
{
|
||||||
if (position < 0 || position >= Count)
|
if (position < 0 || position >= Count)
|
||||||
@ -66,6 +71,7 @@ namespace Tank
|
|||||||
return position;
|
return position;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Удаление объекта из набора с конкретной позиции
|
||||||
public bool Remove(int position)
|
public bool Remove(int position)
|
||||||
{
|
{
|
||||||
if (position < 0 || position >= Count)
|
if (position < 0 || position >= Count)
|
||||||
@ -74,6 +80,7 @@ namespace Tank
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Получение объекта из набора по позиции
|
||||||
public T? Get(int position)
|
public T? Get(int position)
|
||||||
{
|
{
|
||||||
if (position < 0 || position >= Count)
|
if (position < 0 || position >= Count)
|
||||||
|
@ -13,12 +13,18 @@ namespace Tank.Generics
|
|||||||
where T : DrawArmoVehicle
|
where T : DrawArmoVehicle
|
||||||
where U : IMoveableObject
|
where U : IMoveableObject
|
||||||
{
|
{
|
||||||
|
// Ширина и высота окна прорисовки
|
||||||
private readonly int _pictureWidth;
|
private readonly int _pictureWidth;
|
||||||
private readonly int _pictureHeight;
|
private readonly int _pictureHeight;
|
||||||
|
|
||||||
|
// Размеры занимаемого объектом места
|
||||||
private readonly int _placeSizeWidth = 180;
|
private readonly int _placeSizeWidth = 180;
|
||||||
private readonly int _placeSizeHeight = 90;
|
private readonly int _placeSizeHeight = 90;
|
||||||
|
|
||||||
|
// Набор объектов
|
||||||
private readonly SetGeneric<T> _collection;
|
private readonly SetGeneric<T> _collection;
|
||||||
|
|
||||||
|
// Конструктор
|
||||||
public TanksGenericCollection(int pictureWidth, int pictureHeight)
|
public TanksGenericCollection(int pictureWidth, int pictureHeight)
|
||||||
{
|
{
|
||||||
int width = pictureWidth / _placeSizeWidth;
|
int width = pictureWidth / _placeSizeWidth;
|
||||||
@ -28,6 +34,7 @@ namespace Tank.Generics
|
|||||||
_collection = new SetGeneric<T>(width * height);
|
_collection = new SetGeneric<T>(width * height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Перегрузка оператора сложения
|
||||||
public static int? operator +(TanksGenericCollection<T, U> collect, T? obj)
|
public static int? operator +(TanksGenericCollection<T, U> collect, T? obj)
|
||||||
{
|
{
|
||||||
if (obj == null)
|
if (obj == null)
|
||||||
@ -37,6 +44,7 @@ namespace Tank.Generics
|
|||||||
return collect?._collection.Insert(obj);
|
return collect?._collection.Insert(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Перегрузка оператора вычитания
|
||||||
public static bool operator -(TanksGenericCollection<T, U> collect, int pos)
|
public static bool operator -(TanksGenericCollection<T, U> collect, int pos)
|
||||||
{
|
{
|
||||||
T? obj = collect._collection.Get(pos);
|
T? obj = collect._collection.Get(pos);
|
||||||
@ -47,12 +55,14 @@ namespace Tank.Generics
|
|||||||
return collect._collection.Remove(pos);
|
return collect._collection.Remove(pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Получение объекта IMoveableObject
|
||||||
public U? GetU(int pos)
|
public U? GetU(int pos)
|
||||||
{
|
{
|
||||||
return (U?)_collection.Get(pos)?.GetMoveableObject;
|
return (U?)_collection.Get(pos)?.GetMoveableObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Bitmap ShowCars()
|
// Вывод всего набора объектов
|
||||||
|
public Bitmap ShowTanks()
|
||||||
{
|
{
|
||||||
Bitmap bmp = new(_pictureWidth, _pictureHeight);
|
Bitmap bmp = new(_pictureWidth, _pictureHeight);
|
||||||
Graphics gr = Graphics.FromImage(bmp);
|
Graphics gr = Graphics.FromImage(bmp);
|
||||||
@ -61,6 +71,7 @@ namespace Tank.Generics
|
|||||||
return bmp;
|
return bmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Метод отрисовки фона
|
||||||
private void DrawBackground(Graphics g)
|
private void DrawBackground(Graphics g)
|
||||||
{
|
{
|
||||||
Pen pen = new(Color.Black, 3);
|
Pen pen = new(Color.Black, 3);
|
||||||
@ -78,6 +89,7 @@ namespace Tank.Generics
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Метод прорисовки объектов
|
||||||
private void DrawObjects(Graphics g)
|
private void DrawObjects(Graphics g)
|
||||||
{
|
{
|
||||||
int width = _pictureWidth / _placeSizeWidth;
|
int width = _pictureWidth / _placeSizeWidth;
|
||||||
|
Loading…
Reference in New Issue
Block a user