DozorovaA.A_EightLabWork #11
@ -6,7 +6,7 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace ArmoredVehicle
|
||||
{
|
||||
internal abstract class AbstractMap
|
||||
internal abstract class AbstractMap:IEquatable<AbstractMap>
|
||||
{
|
||||
private IDrawningObject _drawningObject = null;
|
||||
protected int[,] _map = null;
|
||||
@ -225,5 +225,11 @@ namespace ArmoredVehicle
|
||||
protected abstract void GenerateMap();
|
||||
protected abstract void DrawRoadPart(Graphics g, int i, int j);
|
||||
protected abstract void DrawBarrierPart(Graphics g, int i, int j);
|
||||
|
||||
public bool Equals(AbstractMap? other)
|
||||
{
|
||||
return this == other && this._width == other._width &&
|
||||
this._height == other._height && this._map == other._map && this._drawningObject == other._drawningObject;
|
||||
}
|
||||
}
|
||||
}
|
@ -8,6 +8,7 @@
|
||||
{
|
||||
_machine = machine;
|
||||
}
|
||||
public DrawingArmoredVehicle GetMachine => _machine;
|
||||
|
||||
public float Step => _machine?.ArmoredVehicle?.Step ?? 0;
|
||||
|
||||
@ -69,7 +70,7 @@
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}else return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
50
ArmoredVehicle/FormMapWithSetMachine.Designer.cs
generated
50
ArmoredVehicle/FormMapWithSetMachine.Designer.cs
generated
@ -52,6 +52,8 @@
|
||||
this.LoadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||
this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
|
||||
this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
|
||||
this.SortBuTypeButton = new System.Windows.Forms.Button();
|
||||
this.SortByColorButton = new System.Windows.Forms.Button();
|
||||
this.groupBoxInstruments.SuspendLayout();
|
||||
this.groupBoxMap.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBoxImage)).BeginInit();
|
||||
@ -60,6 +62,8 @@
|
||||
//
|
||||
// groupBoxInstruments
|
||||
//
|
||||
this.groupBoxInstruments.Controls.Add(this.SortByColorButton);
|
||||
this.groupBoxInstruments.Controls.Add(this.SortBuTypeButton);
|
||||
this.groupBoxInstruments.Controls.Add(this.groupBoxMap);
|
||||
this.groupBoxInstruments.Controls.Add(this.maskedTextBoxPosition);
|
||||
this.groupBoxInstruments.Controls.Add(this.ButtonDown);
|
||||
@ -73,7 +77,7 @@
|
||||
this.groupBoxInstruments.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.groupBoxInstruments.Location = new System.Drawing.Point(964, 33);
|
||||
this.groupBoxInstruments.Name = "groupBoxInstruments";
|
||||
this.groupBoxInstruments.Size = new System.Drawing.Size(300, 877);
|
||||
this.groupBoxInstruments.Size = new System.Drawing.Size(300, 1003);
|
||||
this.groupBoxInstruments.TabIndex = 0;
|
||||
this.groupBoxInstruments.TabStop = false;
|
||||
this.groupBoxInstruments.Text = "Инструменты";
|
||||
@ -147,7 +151,7 @@
|
||||
//
|
||||
// maskedTextBoxPosition
|
||||
//
|
||||
this.maskedTextBoxPosition.Location = new System.Drawing.Point(10, 506);
|
||||
this.maskedTextBoxPosition.Location = new System.Drawing.Point(10, 613);
|
||||
this.maskedTextBoxPosition.Mask = "00";
|
||||
this.maskedTextBoxPosition.Name = "maskedTextBoxPosition";
|
||||
this.maskedTextBoxPosition.Size = new System.Drawing.Size(270, 31);
|
||||
@ -158,7 +162,7 @@
|
||||
this.ButtonDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ButtonDown.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("ButtonDown.BackgroundImage")));
|
||||
this.ButtonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
|
||||
this.ButtonDown.Location = new System.Drawing.Point(129, 821);
|
||||
this.ButtonDown.Location = new System.Drawing.Point(129, 947);
|
||||
this.ButtonDown.Name = "ButtonDown";
|
||||
this.ButtonDown.Size = new System.Drawing.Size(40, 36);
|
||||
this.ButtonDown.TabIndex = 17;
|
||||
@ -170,7 +174,7 @@
|
||||
this.ButtonRight.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ButtonRight.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("ButtonRight.BackgroundImage")));
|
||||
this.ButtonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
|
||||
this.ButtonRight.Location = new System.Drawing.Point(172, 774);
|
||||
this.ButtonRight.Location = new System.Drawing.Point(172, 900);
|
||||
this.ButtonRight.Name = "ButtonRight";
|
||||
this.ButtonRight.Size = new System.Drawing.Size(40, 36);
|
||||
this.ButtonRight.TabIndex = 16;
|
||||
@ -182,7 +186,7 @@
|
||||
this.ButtonLeft.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ButtonLeft.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("ButtonLeft.BackgroundImage")));
|
||||
this.ButtonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
|
||||
this.ButtonLeft.Location = new System.Drawing.Point(89, 776);
|
||||
this.ButtonLeft.Location = new System.Drawing.Point(89, 902);
|
||||
this.ButtonLeft.Name = "ButtonLeft";
|
||||
this.ButtonLeft.Size = new System.Drawing.Size(40, 36);
|
||||
this.ButtonLeft.TabIndex = 15;
|
||||
@ -194,7 +198,7 @@
|
||||
this.ButtonUp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.ButtonUp.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("ButtonUp.BackgroundImage")));
|
||||
this.ButtonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
|
||||
this.ButtonUp.Location = new System.Drawing.Point(129, 726);
|
||||
this.ButtonUp.Location = new System.Drawing.Point(129, 852);
|
||||
this.ButtonUp.Name = "ButtonUp";
|
||||
this.ButtonUp.Size = new System.Drawing.Size(40, 36);
|
||||
this.ButtonUp.TabIndex = 14;
|
||||
@ -203,7 +207,7 @@
|
||||
//
|
||||
// buttonMap
|
||||
//
|
||||
this.buttonMap.Location = new System.Drawing.Point(18, 680);
|
||||
this.buttonMap.Location = new System.Drawing.Point(18, 787);
|
||||
this.buttonMap.Name = "buttonMap";
|
||||
this.buttonMap.Size = new System.Drawing.Size(262, 34);
|
||||
this.buttonMap.TabIndex = 5;
|
||||
@ -213,7 +217,7 @@
|
||||
//
|
||||
// buttonStore
|
||||
//
|
||||
this.buttonStore.Location = new System.Drawing.Point(16, 614);
|
||||
this.buttonStore.Location = new System.Drawing.Point(16, 721);
|
||||
this.buttonStore.Name = "buttonStore";
|
||||
this.buttonStore.Size = new System.Drawing.Size(264, 34);
|
||||
this.buttonStore.TabIndex = 4;
|
||||
@ -223,7 +227,7 @@
|
||||
//
|
||||
// buttonDelete
|
||||
//
|
||||
this.buttonDelete.Location = new System.Drawing.Point(12, 561);
|
||||
this.buttonDelete.Location = new System.Drawing.Point(12, 668);
|
||||
this.buttonDelete.Name = "buttonDelete";
|
||||
this.buttonDelete.Size = new System.Drawing.Size(268, 34);
|
||||
this.buttonDelete.TabIndex = 3;
|
||||
@ -233,7 +237,7 @@
|
||||
//
|
||||
// buttonAdd
|
||||
//
|
||||
this.buttonAdd.Location = new System.Drawing.Point(5, 444);
|
||||
this.buttonAdd.Location = new System.Drawing.Point(5, 551);
|
||||
this.buttonAdd.Name = "buttonAdd";
|
||||
this.buttonAdd.Size = new System.Drawing.Size(275, 34);
|
||||
this.buttonAdd.TabIndex = 1;
|
||||
@ -246,7 +250,7 @@
|
||||
this.pictureBoxImage.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.pictureBoxImage.Location = new System.Drawing.Point(0, 33);
|
||||
this.pictureBoxImage.Name = "pictureBoxImage";
|
||||
this.pictureBoxImage.Size = new System.Drawing.Size(964, 877);
|
||||
this.pictureBoxImage.Size = new System.Drawing.Size(964, 1003);
|
||||
this.pictureBoxImage.TabIndex = 1;
|
||||
this.pictureBoxImage.TabStop = false;
|
||||
//
|
||||
@ -292,11 +296,31 @@
|
||||
//
|
||||
this.saveFileDialog.Filter = "text file | *.txt";
|
||||
//
|
||||
// SortBuTypeButton
|
||||
//
|
||||
this.SortBuTypeButton.Location = new System.Drawing.Point(20, 454);
|
||||
this.SortBuTypeButton.Name = "SortBuTypeButton";
|
||||
this.SortBuTypeButton.Size = new System.Drawing.Size(246, 34);
|
||||
this.SortBuTypeButton.TabIndex = 20;
|
||||
this.SortBuTypeButton.Text = "Сортировать по типу";
|
||||
this.SortBuTypeButton.UseVisualStyleBackColor = true;
|
||||
this.SortBuTypeButton.Click += new System.EventHandler(this.SortBuTypeButton_Click);
|
||||
//
|
||||
// SortByColorButton
|
||||
//
|
||||
this.SortByColorButton.Location = new System.Drawing.Point(25, 503);
|
||||
this.SortByColorButton.Name = "SortByColorButton";
|
||||
this.SortByColorButton.Size = new System.Drawing.Size(243, 34);
|
||||
this.SortByColorButton.TabIndex = 21;
|
||||
this.SortByColorButton.Text = "Сортировать по цвету";
|
||||
this.SortByColorButton.UseVisualStyleBackColor = true;
|
||||
this.SortByColorButton.Click += new System.EventHandler(this.SortByColorButton_Click);
|
||||
//
|
||||
// FormMapWithSetMachine
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(10F, 25F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(1264, 910);
|
||||
this.ClientSize = new System.Drawing.Size(1264, 1036);
|
||||
this.Controls.Add(this.pictureBoxImage);
|
||||
this.Controls.Add(this.groupBoxInstruments);
|
||||
this.Controls.Add(this.menuStrip);
|
||||
@ -340,5 +364,7 @@
|
||||
private ToolStripMenuItem LoadToolStripMenuItem;
|
||||
private OpenFileDialog openFileDialog;
|
||||
private SaveFileDialog saveFileDialog;
|
||||
private Button SortByColorButton;
|
||||
private Button SortBuTypeButton;
|
||||
}
|
||||
}
|
@ -157,8 +157,8 @@ namespace ArmoredVehicle
|
||||
}
|
||||
if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] + new DrawningObject(machine) != -1)
|
||||
{
|
||||
MessageBox.Show("Объект добавлен");
|
||||
pictureBoxImage.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet();
|
||||
MessageBox.Show("Объект добавлен");
|
||||
_logger.LogInformation($"Добавлен объект {machine} на карту ");
|
||||
}
|
||||
else
|
||||
@ -322,5 +322,28 @@ namespace ArmoredVehicle
|
||||
|
||||
}
|
||||
}
|
||||
/// Сортировка по типу
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void SortBuTypeButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listBoxMaps.SelectedIndex == -1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].Sort(new MachineCompareByType());
|
||||
pictureBoxImage.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet();
|
||||
}
|
||||
|
||||
private void SortByColorButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listBoxMaps.SelectedIndex == -1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].Sort(new MachineCompareByColor());
|
||||
pictureBoxImage.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
51
ArmoredVehicle/MachineCompareByColor.cs
Normal file
51
ArmoredVehicle/MachineCompareByColor.cs
Normal file
@ -0,0 +1,51 @@
|
||||
namespace ArmoredVehicle
|
||||
{
|
||||
internal class MachineCompareByColor : IComparer<IDrawningObject>
|
||||
{
|
||||
public int Compare(IDrawningObject? x, IDrawningObject? y)
|
||||
{
|
||||
if (x == null && y == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (x == null && y != null)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
if (x != null && y == null)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
var xCar = x as DrawningObject;
|
||||
var yCar = y as DrawningObject;
|
||||
if (xCar == null && yCar == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (xCar == null && yCar != null)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
if (xCar != null && yCar == null)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
if (xCar.GetMachine.ArmoredVehicle.BodyColor == yCar.GetMachine.ArmoredVehicle.BodyColor)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (xCar.GetMachine.ArmoredVehicle.BodyColor.R > yCar.GetMachine.ArmoredVehicle.BodyColor.R)
|
||||
{
|
||||
if (xCar.GetMachine.ArmoredVehicle.BodyColor.G > yCar.GetMachine.ArmoredVehicle.BodyColor.G)
|
||||
{
|
||||
if (xCar.GetMachine.ArmoredVehicle.BodyColor.B > yCar.GetMachine.ArmoredVehicle.BodyColor.B)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else return -1;
|
||||
}
|
||||
else return -1;
|
||||
} else return -1;
|
||||
}
|
||||
}
|
||||
}
|
49
ArmoredVehicle/MachineCompareByType.cs
Normal file
49
ArmoredVehicle/MachineCompareByType.cs
Normal file
@ -0,0 +1,49 @@
|
||||
namespace ArmoredVehicle
|
||||
{
|
||||
internal class MachineCompareByType : IComparer<IDrawningObject>
|
||||
{
|
||||
public int Compare(IDrawningObject? x, IDrawningObject? y)
|
||||
{
|
||||
if (x == null && y == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (x == null && y != null)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
if (x != null && y == null)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
var xMachine= x as DrawningObject;
|
||||
var yMachine = y as DrawningObject;
|
||||
if (xMachine == null && yMachine == null)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (xMachine == null && yMachine != null)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
if (xMachine != null && yMachine == null)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
if (xMachine.GetMachine.GetType().Name != yMachine.GetMachine.GetType().Name)
|
||||
{
|
||||
if (xMachine.GetMachine.GetType().Name == "DrawningCar")
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
var speedCompare = xMachine.GetMachine.ArmoredVehicle.Speed.CompareTo(yMachine.GetMachine.ArmoredVehicle.Speed);
|
||||
if (speedCompare != 0)
|
||||
{
|
||||
return speedCompare;
|
||||
}
|
||||
return xMachine.GetMachine.ArmoredVehicle.Weight.CompareTo(yMachine.GetMachine.ArmoredVehicle.Weight);
|
||||
}
|
||||
}
|
||||
}
|
@ -133,7 +133,10 @@
|
||||
_setMachines.Insert(DrawningObject.Create(rec) as T);
|
||||
}
|
||||
}
|
||||
|
||||
public void Sort(IComparer<T> comparer)
|
||||
{
|
||||
_setMachines.SortSet(comparer);
|
||||
}
|
||||
/// <summary>
|
||||
/// "Взбалтываем" набор, чтобы все элементы оказались в начале
|
||||
/// </summary>
|
||||
|
@ -49,9 +49,9 @@
|
||||
if (position >= _maxCount) throw new StorageOverflowException(_maxCount);
|
||||
|
||||
_places.Insert(position, machine);
|
||||
return position;
|
||||
}
|
||||
|
||||
return position;
|
||||
return -1;
|
||||
}
|
||||
/// <summary>
|
||||
/// Удаление объекта из набора с конкретной позиции
|
||||
@ -117,6 +117,17 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Сортировка набора объектов
|
||||
/// </summary>
|
||||
/// <param name="comparer"></param>
|
||||
public void SortSet(IComparer<T> comparer)
|
||||
{
|
||||
if (comparer == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_places.Sort(comparer);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user