Compare commits
7 Commits
main
...
ISEbd-21.G
Author | SHA1 | Date | |
---|---|---|---|
|
660f9be57c | ||
|
4120e4751f | ||
|
06859bbd85 | ||
b8e8988f4d | |||
05ea4c6edb | |||
53d159876e | |||
|
35cc4284cb |
@ -8,4 +8,19 @@
|
|||||||
<ImplicitUsings>enable</ImplicitUsings>
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Compile Update="Properties\Resources.Designer.cs">
|
||||||
|
<DesignTime>True</DesignTime>
|
||||||
|
<AutoGen>True</AutoGen>
|
||||||
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<EmbeddedResource Update="Properties\Resources.resx">
|
||||||
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
</EmbeddedResource>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
21
Bulldoser/Bulldoser/Direction.cs
Normal file
21
Bulldoser/Bulldoser/Direction.cs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Bulldoser
|
||||||
|
{
|
||||||
|
public enum Direction
|
||||||
|
{
|
||||||
|
|
||||||
|
Up = 1,
|
||||||
|
|
||||||
|
Down = 2,
|
||||||
|
|
||||||
|
Left = 3,
|
||||||
|
|
||||||
|
Right = 4
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
50
Bulldoser/Bulldoser/Drawings/DrawingBulldoser.cs
Normal file
50
Bulldoser/Bulldoser/Drawings/DrawingBulldoser.cs
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Bulldoser.Entities;
|
||||||
|
using static System.Runtime.InteropServices.JavaScript.JSType;
|
||||||
|
|
||||||
|
namespace Bulldoser.Drawings
|
||||||
|
{
|
||||||
|
public class DrawingBulldoser : DrawingTractor
|
||||||
|
{
|
||||||
|
public DrawingBulldoser(int speed, double weight, Color bodyColor, Color additionalColor,
|
||||||
|
bool otval, bool seifBatteries, int width, int height) : base(speed, weight, bodyColor, width, height, 180, 120)
|
||||||
|
{
|
||||||
|
if (EntityTractor != null)
|
||||||
|
{
|
||||||
|
EntityTractor = new EntityBulldoser(speed, width, bodyColor, additionalColor, otval, seifBatteries);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public override void DrawTransport(Graphics g)
|
||||||
|
{
|
||||||
|
if (EntityTractor is not EntityBulldoser Bulldoser)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Pen pen = new(Color.Black);
|
||||||
|
Brush blackBrush = new SolidBrush(Color.Black);
|
||||||
|
Brush windows = new SolidBrush(Color.LightBlue);
|
||||||
|
Brush bodyColor = new SolidBrush(Bulldoser.BodyColor);
|
||||||
|
Brush additionalBrush = new SolidBrush(Bulldoser.AdditionalColor);
|
||||||
|
Brush grayBrush = new SolidBrush(Color.Gray);
|
||||||
|
if (Bulldoser.Otval)
|
||||||
|
{
|
||||||
|
g.FillRectangle(blackBrush, _startPosX + 20, _startPosY + 55, 15, 5);
|
||||||
|
g.FillRectangle(blackBrush, _startPosX + 10, _startPosY + 35, 10, 70);
|
||||||
|
g.FillRectangle(blackBrush, _startPosX + 0, _startPosY + 100, 10, 5);
|
||||||
|
}
|
||||||
|
if (Bulldoser.SeifBatteries)
|
||||||
|
{
|
||||||
|
g.FillRectangle(blackBrush, _startPosX + 155, _startPosY + 65, 40, 10);
|
||||||
|
g.FillRectangle(blackBrush, _startPosX + 185, _startPosY + 75, 5, 30);
|
||||||
|
g.FillRectangle(blackBrush, _startPosX + 175, _startPosY + 75, 5, 30);
|
||||||
|
}
|
||||||
|
|
||||||
|
base.DrawTransport(g);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
164
Bulldoser/Bulldoser/Drawings/DrawingTractor.cs
Normal file
164
Bulldoser/Bulldoser/Drawings/DrawingTractor.cs
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
using Bulldoser.Entities;
|
||||||
|
using Bulldoser.MovementStrategy;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Bulldoser.Drawings
|
||||||
|
{
|
||||||
|
public class DrawingTractor
|
||||||
|
{
|
||||||
|
public EntityTractor? EntityTractor { get; protected set; }
|
||||||
|
|
||||||
|
protected int _pictureWidth;
|
||||||
|
|
||||||
|
protected int _pictureHeight;
|
||||||
|
|
||||||
|
protected int _startPosX;
|
||||||
|
|
||||||
|
protected int _startPosY;
|
||||||
|
|
||||||
|
private int tractWidth;
|
||||||
|
protected readonly int _tractWidth = 140;
|
||||||
|
|
||||||
|
protected readonly int _tractHeight = 123;
|
||||||
|
public int GetPosX => _startPosX;
|
||||||
|
public int GetPosY => _startPosY;
|
||||||
|
public int GetWidth => _tractWidth;
|
||||||
|
public int GetHeight => _tractHeight;
|
||||||
|
|
||||||
|
public IMoveableObject GetMoveableObject => new DrawingObjectTractor(this);
|
||||||
|
|
||||||
|
public DrawingTractor(int speed, double weight, Color bodyColor, int width, int heigth)
|
||||||
|
{
|
||||||
|
if (width < _tractWidth || heigth < _tractHeight)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_pictureWidth = width;
|
||||||
|
_pictureHeight = heigth;
|
||||||
|
EntityTractor = new EntityTractor(speed, weight, bodyColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected DrawingTractor(int speed, double weight, Color bodyColor, int width,
|
||||||
|
int height, int tractWidth, int tractHeight)
|
||||||
|
{
|
||||||
|
if (width < _tractWidth || height < _tractHeight)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_pictureWidth = width;
|
||||||
|
_pictureHeight = height;
|
||||||
|
_tractWidth = tractWidth;
|
||||||
|
_tractHeight = tractHeight;
|
||||||
|
EntityTractor = new EntityTractor(speed, weight, bodyColor);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Установка позиции
|
||||||
|
public void SetPosition(int x, int y)
|
||||||
|
{
|
||||||
|
if (x < 0 || x + _tractWidth > _pictureWidth)
|
||||||
|
{
|
||||||
|
x = _pictureWidth - tractWidth;
|
||||||
|
}
|
||||||
|
if (y < 0 || y + _tractHeight > _pictureHeight)
|
||||||
|
{
|
||||||
|
y = _pictureHeight - _tractHeight;
|
||||||
|
}
|
||||||
|
_startPosX = x;
|
||||||
|
_startPosY = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void MoveTransport(Direction direction)
|
||||||
|
{
|
||||||
|
if (EntityTractor == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (direction)
|
||||||
|
{
|
||||||
|
case Direction.Left:
|
||||||
|
if (_startPosX - EntityTractor.Step > 0)
|
||||||
|
{
|
||||||
|
_startPosX -= (int)EntityTractor.Step;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Direction.Up:
|
||||||
|
if (_startPosY - EntityTractor.Step > 0)
|
||||||
|
{
|
||||||
|
_startPosY -= (int)EntityTractor.Step;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Direction.Right:
|
||||||
|
if (_startPosX + EntityTractor.Step + _tractWidth < _pictureWidth)
|
||||||
|
{
|
||||||
|
_startPosX += (int)EntityTractor.Step;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case Direction.Down:
|
||||||
|
if (_startPosY + EntityTractor.Step + _tractHeight < _pictureHeight)
|
||||||
|
{
|
||||||
|
_startPosY += (int)EntityTractor.Step;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void DrawTransport(Graphics g)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
if (EntityTractor == null) return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Pen pen = new(Color.Black);
|
||||||
|
Brush brownBrush = new SolidBrush(Color.Brown);
|
||||||
|
Brush windows = new SolidBrush(Color.LightYellow);
|
||||||
|
Brush bodyColor = new SolidBrush(EntityTractor.BodyColor);
|
||||||
|
Brush blackBrush = new SolidBrush(Color.Black);
|
||||||
|
Brush grayBrush = new SolidBrush(Color.Gray);
|
||||||
|
|
||||||
|
//кузов
|
||||||
|
g.FillRectangle(bodyColor, _startPosX + 35, _startPosY + 35, 120, 40);
|
||||||
|
g.FillRectangle(bodyColor, _startPosX + 95, _startPosY + 0, 5, 35);
|
||||||
|
g.FillRectangle(bodyColor, _startPosX + 150, _startPosY + 0, 5, 35);
|
||||||
|
g.FillRectangle(bodyColor, _startPosX + 95, _startPosY + 0, 60, 5);
|
||||||
|
//труба
|
||||||
|
g.FillRectangle(bodyColor, _startPosX + 55, _startPosY + 5, 10, 30);
|
||||||
|
//кабина
|
||||||
|
g.FillRectangle(windows, _startPosX + 100, _startPosY + 5, 50, 30);
|
||||||
|
//гусеницы
|
||||||
|
g.FillEllipse(blackBrush, _startPosX + 25, _startPosY + 75, 30, 30);
|
||||||
|
g.FillEllipse(blackBrush, _startPosX + 135, _startPosY + 75, 30, 30);
|
||||||
|
g.FillRectangle(blackBrush, _startPosX + 35, _startPosY + 75, 120, 30);
|
||||||
|
g.FillEllipse(grayBrush, _startPosX + 28, _startPosY + 78, 25, 25);
|
||||||
|
g.FillEllipse(grayBrush, _startPosX + 138, _startPosY + 78, 25, 25);
|
||||||
|
g.FillEllipse(grayBrush, _startPosX + 58, _startPosY + 90, 15, 15);
|
||||||
|
g.FillEllipse(grayBrush, _startPosX + 88, _startPosY + 90, 15, 15);
|
||||||
|
g.FillEllipse(grayBrush, _startPosX + 118, _startPosY + 90, 15, 15);
|
||||||
|
g.FillEllipse(grayBrush, _startPosX + 78, _startPosY + 78, 10, 10);
|
||||||
|
g.FillEllipse(grayBrush, _startPosX + 105, _startPosY + 78, 10, 10);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool CanMove(Direction direction)
|
||||||
|
{
|
||||||
|
if (EntityTractor == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return direction switch
|
||||||
|
{
|
||||||
|
//влево
|
||||||
|
Direction.Left => _startPosX - EntityTractor.Step > 0,
|
||||||
|
//вверх
|
||||||
|
Direction.Up => _startPosY - EntityTractor.Step > 0,
|
||||||
|
// вправо
|
||||||
|
Direction.Right => _startPosX + EntityTractor.Step < _pictureWidth,
|
||||||
|
//вниз
|
||||||
|
Direction.Down => _startPosY + EntityTractor.Step < _pictureHeight,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
23
Bulldoser/Bulldoser/Entities/EntityBulldoser.cs
Normal file
23
Bulldoser/Bulldoser/Entities/EntityBulldoser.cs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net.NetworkInformation;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Bulldoser.Entities
|
||||||
|
{
|
||||||
|
public class EntityBulldoser : EntityTractor
|
||||||
|
{
|
||||||
|
public Color AdditionalColor { get; private set; }
|
||||||
|
public bool Otval { get; private set; }
|
||||||
|
public bool SeifBatteries { get; private set; }
|
||||||
|
public EntityBulldoser(int speed, double weight, Color bodyColor, Color additionalColor, bool otval,
|
||||||
|
bool seifBatteries) : base(speed, weight, bodyColor)
|
||||||
|
{
|
||||||
|
AdditionalColor = additionalColor;
|
||||||
|
Otval = otval;
|
||||||
|
SeifBatteries = seifBatteries;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
23
Bulldoser/Bulldoser/Entities/EntityTractor.cs
Normal file
23
Bulldoser/Bulldoser/Entities/EntityTractor.cs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Bulldoser.Entities
|
||||||
|
{
|
||||||
|
public class EntityTractor
|
||||||
|
{
|
||||||
|
public int Speed { get; private set; }
|
||||||
|
public double Weight { get; private set; }
|
||||||
|
public Color BodyColor { get; private set; }
|
||||||
|
public double Step => (double)Speed * 100 / Weight;
|
||||||
|
public EntityTractor(int speed, double weight, Color bodyColor)
|
||||||
|
{
|
||||||
|
Speed = speed;
|
||||||
|
Weight = weight;
|
||||||
|
BodyColor = bodyColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
187
Bulldoser/Bulldoser/Form1.Designer.cs
generated
187
Bulldoser/Bulldoser/Form1.Designer.cs
generated
@ -1,6 +1,6 @@
|
|||||||
namespace Bulldoser
|
namespace Bulldoser
|
||||||
{
|
{
|
||||||
partial class Form1
|
partial class FormBulldoser
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Required designer variable.
|
/// Required designer variable.
|
||||||
@ -28,12 +28,189 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
this.components = new System.ComponentModel.Container();
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormBulldoser));
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
pictureBoxBulldoser = new PictureBox();
|
||||||
this.ClientSize = new System.Drawing.Size(800, 450);
|
buttonCreateBulldoser = new Button();
|
||||||
this.Text = "Form1";
|
buttonRight = new Button();
|
||||||
|
buttonLeft = new Button();
|
||||||
|
buttonUp = new Button();
|
||||||
|
buttonDown = new Button();
|
||||||
|
comboBoxStrategy = new ComboBox();
|
||||||
|
buttonCreateTractor = new Button();
|
||||||
|
buttonStep = new Button();
|
||||||
|
fileSystemWatcher1 = new FileSystemWatcher();
|
||||||
|
buttonSelectTransport = new Button();
|
||||||
|
((System.ComponentModel.ISupportInitialize)pictureBoxBulldoser).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)fileSystemWatcher1).BeginInit();
|
||||||
|
SuspendLayout();
|
||||||
|
//
|
||||||
|
// pictureBoxBulldoser
|
||||||
|
//
|
||||||
|
pictureBoxBulldoser.Dock = DockStyle.Fill;
|
||||||
|
pictureBoxBulldoser.Location = new Point(0, 0);
|
||||||
|
pictureBoxBulldoser.Margin = new Padding(2);
|
||||||
|
pictureBoxBulldoser.Name = "pictureBoxBulldoser";
|
||||||
|
pictureBoxBulldoser.Size = new Size(884, 461);
|
||||||
|
pictureBoxBulldoser.SizeMode = PictureBoxSizeMode.AutoSize;
|
||||||
|
pictureBoxBulldoser.TabIndex = 0;
|
||||||
|
pictureBoxBulldoser.TabStop = false;
|
||||||
|
//
|
||||||
|
// buttonCreateBulldoser
|
||||||
|
//
|
||||||
|
buttonCreateBulldoser.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
|
||||||
|
buttonCreateBulldoser.Font = new Font("Times New Roman", 11.25F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
buttonCreateBulldoser.Location = new Point(121, 403);
|
||||||
|
buttonCreateBulldoser.Margin = new Padding(2);
|
||||||
|
buttonCreateBulldoser.Name = "buttonCreateBulldoser";
|
||||||
|
buttonCreateBulldoser.Size = new Size(100, 47);
|
||||||
|
buttonCreateBulldoser.TabIndex = 1;
|
||||||
|
buttonCreateBulldoser.Text = "Создать бульдозер";
|
||||||
|
buttonCreateBulldoser.UseVisualStyleBackColor = true;
|
||||||
|
buttonCreateBulldoser.Click += buttonCreateBulldozer_Click;
|
||||||
|
//
|
||||||
|
// buttonRight
|
||||||
|
//
|
||||||
|
buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||||
|
buttonRight.BackgroundImage = (Image)resources.GetObject("buttonRight.BackgroundImage");
|
||||||
|
buttonRight.BackgroundImageLayout = ImageLayout.Zoom;
|
||||||
|
buttonRight.Location = new Point(826, 425);
|
||||||
|
buttonRight.Margin = new Padding(2);
|
||||||
|
buttonRight.Name = "buttonRight";
|
||||||
|
buttonRight.Size = new Size(27, 25);
|
||||||
|
buttonRight.TabIndex = 4;
|
||||||
|
buttonRight.UseVisualStyleBackColor = true;
|
||||||
|
buttonRight.Click += buttonMove_Click;
|
||||||
|
//
|
||||||
|
// buttonLeft
|
||||||
|
//
|
||||||
|
buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||||
|
buttonLeft.BackgroundImage = (Image)resources.GetObject("buttonLeft.BackgroundImage");
|
||||||
|
buttonLeft.BackgroundImageLayout = ImageLayout.Zoom;
|
||||||
|
buttonLeft.Location = new Point(762, 425);
|
||||||
|
buttonLeft.Margin = new Padding(2);
|
||||||
|
buttonLeft.Name = "buttonLeft";
|
||||||
|
buttonLeft.Size = new Size(26, 25);
|
||||||
|
buttonLeft.TabIndex = 3;
|
||||||
|
buttonLeft.UseVisualStyleBackColor = true;
|
||||||
|
buttonLeft.Click += buttonMove_Click;
|
||||||
|
//
|
||||||
|
// buttonUp
|
||||||
|
//
|
||||||
|
buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||||
|
buttonUp.BackgroundImage = (Image)resources.GetObject("buttonUp.BackgroundImage");
|
||||||
|
buttonUp.BackgroundImageLayout = ImageLayout.Zoom;
|
||||||
|
buttonUp.Location = new Point(792, 394);
|
||||||
|
buttonUp.Margin = new Padding(2);
|
||||||
|
buttonUp.Name = "buttonUp";
|
||||||
|
buttonUp.Size = new Size(30, 27);
|
||||||
|
buttonUp.TabIndex = 3;
|
||||||
|
buttonUp.UseVisualStyleBackColor = true;
|
||||||
|
buttonUp.Click += buttonMove_Click;
|
||||||
|
//
|
||||||
|
// buttonDown
|
||||||
|
//
|
||||||
|
buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||||
|
buttonDown.BackgroundImage = (Image)resources.GetObject("buttonDown.BackgroundImage");
|
||||||
|
buttonDown.BackgroundImageLayout = ImageLayout.Zoom;
|
||||||
|
buttonDown.Location = new Point(792, 425);
|
||||||
|
buttonDown.Margin = new Padding(2);
|
||||||
|
buttonDown.Name = "buttonDown";
|
||||||
|
buttonDown.Size = new Size(30, 25);
|
||||||
|
buttonDown.TabIndex = 5;
|
||||||
|
buttonDown.UseVisualStyleBackColor = true;
|
||||||
|
buttonDown.Click += buttonMove_Click;
|
||||||
|
//
|
||||||
|
// comboBoxStrategy
|
||||||
|
//
|
||||||
|
comboBoxStrategy.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||||
|
comboBoxStrategy.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||||
|
comboBoxStrategy.DropDownWidth = 150;
|
||||||
|
comboBoxStrategy.Font = new Font("Times New Roman", 11.25F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
comboBoxStrategy.FormattingEnabled = true;
|
||||||
|
comboBoxStrategy.Items.AddRange(new object[] { "К центру", "В угол" });
|
||||||
|
comboBoxStrategy.Location = new Point(723, 10);
|
||||||
|
comboBoxStrategy.Margin = new Padding(2);
|
||||||
|
comboBoxStrategy.Name = "comboBoxStrategy";
|
||||||
|
comboBoxStrategy.Size = new Size(150, 25);
|
||||||
|
comboBoxStrategy.TabIndex = 6;
|
||||||
|
//
|
||||||
|
// buttonCreateTractor
|
||||||
|
//
|
||||||
|
buttonCreateTractor.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
|
||||||
|
buttonCreateTractor.Font = new Font("Times New Roman", 11.25F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
buttonCreateTractor.Location = new Point(11, 403);
|
||||||
|
buttonCreateTractor.Margin = new Padding(2);
|
||||||
|
buttonCreateTractor.Name = "buttonCreateTractor";
|
||||||
|
buttonCreateTractor.Size = new Size(106, 47);
|
||||||
|
buttonCreateTractor.TabIndex = 7;
|
||||||
|
buttonCreateTractor.Text = "Создать трактор";
|
||||||
|
buttonCreateTractor.UseVisualStyleBackColor = true;
|
||||||
|
buttonCreateTractor.Click += buttonCreateTractor_Click;
|
||||||
|
//
|
||||||
|
// buttonStep
|
||||||
|
//
|
||||||
|
buttonStep.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||||
|
buttonStep.Font = new Font("Times New Roman", 11.25F, FontStyle.Regular, GraphicsUnit.Point);
|
||||||
|
buttonStep.Location = new Point(785, 39);
|
||||||
|
buttonStep.Margin = new Padding(2);
|
||||||
|
buttonStep.Name = "buttonStep";
|
||||||
|
buttonStep.Size = new Size(88, 34);
|
||||||
|
buttonStep.TabIndex = 8;
|
||||||
|
buttonStep.Text = "Шаг";
|
||||||
|
buttonStep.UseVisualStyleBackColor = true;
|
||||||
|
buttonStep.Click += buttonStep_Click;
|
||||||
|
//
|
||||||
|
// fileSystemWatcher1
|
||||||
|
//
|
||||||
|
fileSystemWatcher1.EnableRaisingEvents = true;
|
||||||
|
fileSystemWatcher1.SynchronizingObject = this;
|
||||||
|
//
|
||||||
|
// buttonSelectTransport
|
||||||
|
//
|
||||||
|
buttonSelectTransport.Location = new Point(785, 78);
|
||||||
|
buttonSelectTransport.Name = "buttonSelectTransport";
|
||||||
|
buttonSelectTransport.Size = new Size(88, 34);
|
||||||
|
buttonSelectTransport.TabIndex = 9;
|
||||||
|
buttonSelectTransport.Text = "Выбор";
|
||||||
|
buttonSelectTransport.UseVisualStyleBackColor = true;
|
||||||
|
buttonSelectTransport.Click += ButtonSelect_Tractor_Click;
|
||||||
|
//
|
||||||
|
// FormBulldoser
|
||||||
|
//
|
||||||
|
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||||
|
AutoScaleMode = AutoScaleMode.Font;
|
||||||
|
ClientSize = new Size(884, 461);
|
||||||
|
Controls.Add(buttonSelectTransport);
|
||||||
|
Controls.Add(buttonStep);
|
||||||
|
Controls.Add(buttonCreateTractor);
|
||||||
|
Controls.Add(comboBoxStrategy);
|
||||||
|
Controls.Add(buttonDown);
|
||||||
|
Controls.Add(buttonUp);
|
||||||
|
Controls.Add(buttonLeft);
|
||||||
|
Controls.Add(buttonRight);
|
||||||
|
Controls.Add(buttonCreateBulldoser);
|
||||||
|
Controls.Add(pictureBoxBulldoser);
|
||||||
|
Name = "FormBulldoser";
|
||||||
|
StartPosition = FormStartPosition.CenterScreen;
|
||||||
|
Text = "Создать транспорт";
|
||||||
|
((System.ComponentModel.ISupportInitialize)pictureBoxBulldoser).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)fileSystemWatcher1).EndInit();
|
||||||
|
ResumeLayout(false);
|
||||||
|
PerformLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
private PictureBox pictureBoxBulldoser;
|
||||||
|
private Button buttonCreateBulldoser;
|
||||||
|
private Button buttonRight;
|
||||||
|
private Button buttonLeft;
|
||||||
|
private Button buttonUp;
|
||||||
|
private Button buttonDown;
|
||||||
|
private ComboBox comboBoxStrategy;
|
||||||
|
private Button buttonCreateTractor;
|
||||||
|
private Button buttonStep;
|
||||||
|
private FileSystemWatcher fileSystemWatcher1;
|
||||||
|
private Button buttonSelectTransport;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,10 +1,127 @@
|
|||||||
|
using Bulldoser.Drawings;
|
||||||
|
using Bulldoser.MovementStrategy;
|
||||||
|
|
||||||
namespace Bulldoser
|
namespace Bulldoser
|
||||||
{
|
{
|
||||||
public partial class Form1 : Form
|
public partial class FormBulldoser : Form
|
||||||
{
|
{
|
||||||
public Form1()
|
|
||||||
|
private DrawingTractor? _drawingTractor;
|
||||||
|
private AbstractStrategy? _abstractStrategy;
|
||||||
|
public DrawingTractor? SelectedTractor { get; private set; }
|
||||||
|
public FormBulldoser()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
_abstractStrategy = null;
|
||||||
|
SelectedTractor = null;
|
||||||
|
}
|
||||||
|
private void Draw()
|
||||||
|
{
|
||||||
|
if (_drawingTractor == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Bitmap bmp = new(pictureBoxBulldoser.Width, pictureBoxBulldoser.Height);
|
||||||
|
Graphics gr = Graphics.FromImage(bmp);
|
||||||
|
_drawingTractor.DrawTransport(gr);
|
||||||
|
pictureBoxBulldoser.Image = bmp;
|
||||||
|
}
|
||||||
|
private void buttonCreateBulldozer_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Random random = new Random();
|
||||||
|
Color color = Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256));
|
||||||
|
ColorDialog colorDialog = new ColorDialog();
|
||||||
|
if (colorDialog.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
color = colorDialog.Color;
|
||||||
|
}
|
||||||
|
Color dopColor = Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256));
|
||||||
|
if (colorDialog.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
dopColor = colorDialog.Color;
|
||||||
|
}
|
||||||
|
_drawingTractor = new DrawingBulldoser(random.Next(100, 300), random.Next(1000, 3000), color, dopColor,
|
||||||
|
Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)),
|
||||||
|
pictureBoxBulldoser.Width, pictureBoxBulldoser.Height);
|
||||||
|
_drawingTractor.SetPosition(random.Next(10, 100), random.Next(10, 100));
|
||||||
|
Draw();
|
||||||
|
}
|
||||||
|
private void buttonCreateTractor_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Random rnd = new Random();
|
||||||
|
Color color = Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(0, 256));
|
||||||
|
ColorDialog colorDialog = new ColorDialog();
|
||||||
|
if (colorDialog.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
color = colorDialog.Color;
|
||||||
|
}
|
||||||
|
_drawingTractor = new DrawingTractor(rnd.Next(100, 300), rnd.Next(1000, 3000), color,
|
||||||
|
pictureBoxBulldoser.Width, pictureBoxBulldoser.Height);
|
||||||
|
_drawingTractor.SetPosition(rnd.Next(10, 100), rnd.Next(10, 100));
|
||||||
|
Draw();
|
||||||
|
}
|
||||||
|
private void buttonMove_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (_drawingTractor == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
string name = ((Button)sender)?.Name ?? string.Empty;
|
||||||
|
switch (name)
|
||||||
|
{
|
||||||
|
case "buttonUp":
|
||||||
|
_drawingTractor.MoveTransport(Direction.Up);
|
||||||
|
break;
|
||||||
|
case "buttonDown":
|
||||||
|
_drawingTractor.MoveTransport(Direction.Down);
|
||||||
|
break;
|
||||||
|
case "buttonLeft":
|
||||||
|
_drawingTractor.MoveTransport(Direction.Left);
|
||||||
|
break;
|
||||||
|
case "buttonRight":
|
||||||
|
_drawingTractor.MoveTransport(Direction.Right);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Draw();
|
||||||
|
}
|
||||||
|
private void buttonStep_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (_drawingTractor == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (comboBoxStrategy.Enabled)
|
||||||
|
{
|
||||||
|
_abstractStrategy = comboBoxStrategy.SelectedIndex switch
|
||||||
|
{
|
||||||
|
0 => new MoveToCenter(),
|
||||||
|
1 => new MoveToRightCorner(),
|
||||||
|
_ => null,
|
||||||
|
};
|
||||||
|
if (_abstractStrategy == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_abstractStrategy.SetData(_drawingTractor.GetMoveableObject, pictureBoxBulldoser.Width,
|
||||||
|
pictureBoxBulldoser.Height);
|
||||||
|
}
|
||||||
|
if (_abstractStrategy == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
comboBoxStrategy.Enabled = false;
|
||||||
|
_abstractStrategy.MakeStep();
|
||||||
|
Draw();
|
||||||
|
if (_abstractStrategy.GetStatus() == Status.Finish)
|
||||||
|
{
|
||||||
|
comboBoxStrategy.Enabled = true;
|
||||||
|
_abstractStrategy = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void ButtonSelect_Tractor_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SelectedTractor = _drawingTractor;
|
||||||
|
DialogResult = DialogResult.OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -117,4 +117,296 @@
|
|||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="buttonRight.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
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
|
||||||
|
AbKnmE6OL2IbAAAAAElFTkSuQmCC
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="buttonLeft.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
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
|
||||||
|
YII=
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="buttonUp.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
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
|
||||||
|
A8BIf/75P6f0psd4DXc2AAAAAElFTkSuQmCC
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<data name="buttonDown.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
iVBORw0KGgoAAAANSUhEUgAAAekAAAIDCAYAAAAg+ebuAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
|
||||||
|
vAAADrwBlbxySQAAEHBJREFUeF7t2dlylMcWhFHb4fd/XwJjDtjexwMSqNX/kJW1VkQS3Gv4tKt/+gwA
|
||||||
|
xPn9999/E2kACCTSABBKpAEglEgDQCiRBoBQIg0AoUQaAEKJNACEEmkACCXSABBKpAEglEgDQCiRBoBQ
|
||||||
|
Ig0AoUQaAEKJNACEEmkACCXSABBKpAEglEgDQCiRBoBQIg0AoUQaAEKJNACEEmkACCXSABBKpAEglEgD
|
||||||
|
QCiRBoBQIg0AoUQaAEKJNACEEmkACCXSABBKpAEglEgDQCiRBoBQIg0AoUQaAEKJNACEEmkACCXSABBK
|
||||||
|
pAEglEgDQCiRBoBQIg0AoUQaAEKJNACEEmkACCXSABBKpAEglEgDQCiRBoBQIg0AoUQaAEKJNACEEmkA
|
||||||
|
CCXSABBKpAEglEgDQCiRBoBQIg0AoUQaAEKJNACEEmkACCXSABBKpAEglEhT48s38+ePHz9+/u2332zD
|
||||||
|
zdcemog0NT58+PD5p59+so33yy+/fP706dNf3xGwPpGmwtcL6qVf2rbfvoYaWog0FUTaZiJNE5Gmgkjb
|
||||||
|
TKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTa
|
||||||
|
ZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDS
|
||||||
|
NhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWR
|
||||||
|
tplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqI
|
||||||
|
tM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNB
|
||||||
|
pG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoK
|
||||||
|
Im0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJU
|
||||||
|
EGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5Gm
|
||||||
|
gkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0
|
||||||
|
FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00Sk
|
||||||
|
qSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYi
|
||||||
|
TQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQR
|
||||||
|
aSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJ
|
||||||
|
SFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRN
|
||||||
|
RJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRp
|
||||||
|
ItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJN
|
||||||
|
E5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNp
|
||||||
|
mog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI
|
||||||
|
00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1E
|
||||||
|
miYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m
|
||||||
|
0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0z
|
||||||
|
kaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmb
|
||||||
|
iTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTaZiJNE5Gmgkjb
|
||||||
|
TKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDSNhNpmog0FUTa
|
||||||
|
ZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWRtplI00SkqSDS
|
||||||
|
NhNpmog0FUTaZiJNE5GmgkjbTKRpItJUEGmbiTRNRJoKIm0zkaaJSFNBpG0m0jQRaSqItM1EmiYiTQWR
|
||||||
|
tplI00Sky3z5gn7++PHjH9HaaR8+fHjxF7btt6+R/vTp04vfJ62bn3n6iHQZsTLbc/PHCV1EusjXv6Rf
|
||||||
|
+uE1sz3mqb+PSBcRabO9J9J9RLqISJvtvV9//fWv3wa0EOkyQm225wS6k0iXEWmz/eaZu5dIFxJqs73m
|
||||||
|
iu4l0qWE2myPCXQ3kS4m1Gbd88zdT6SLibRZ91zR/US6nFCbdU6g9yDSGxBqs6555t6HSG9ApM265ore
|
||||||
|
h0hvQqjNOibQexHpjQi12drzzL0fkd6ISJutPVf0fkR6M0JttuYEek8ivSGhNltrnrn3JdIbEmmzteaK
|
||||||
|
3pdIb0qozdaYQO9NpDcm1GbZ88yNSG9MpM2y54pGpDcn1GaZE2i+EmmE2ixsnrkZIo1Im4XNFc0Qaf4g
|
||||||
|
1GYZE2j+SaT5P6E2u3eeufkvkeb/RNrs3rmi+S+R5l+E2uyeCTQvEWm+IdRm184zN68Rab4h0mbXzhXN
|
||||||
|
a0SaFwm12TUTaL5HpHmVUJudO4HmR0SaV4m02XnzOTRvIdJ8l1CbnTNXNG8h0vyQUJsdO4HmrUSaHxJp
|
||||||
|
s+PmmZtHiDRvItRmx8wVzSNEmjcTarPnJtA8SqR5iFCbvW+euXkPkeYhIm32vrmieQ+R5mFCbfbYBJr3
|
||||||
|
EmneRajN3jbP3DxDpHkXkTZ721zRPEOkeTehNvv+BJpniTRPEWqzl+eZmyOINE8RabOX54rmCCLN04Ta
|
||||||
|
7N8TaI4i0hxCqM3+nGdujiTSHEKkzf6cK5ojiTSHEWrbfQLN0USaQwm17TrP3JxBpDmUSNuuc0VzBpHm
|
||||||
|
cEJtu02gOYtIcwqhtl3mmZsziTSnEGnbZa5oziTSnEaorX0CzdlEmlMJtbXOMzdXEGlOJdLWOlc0VxBp
|
||||||
|
TifU1jaB5ioizSWE2lrmmZsriTSXEGlrmSuaK4k0lxFqW30CzdVEmksJta06geYOIs2lRNpWnM+huYtI
|
||||||
|
czmhttXmiuYuIs0thNpWmUBzJ5HmFiJtK8wzN3cTaW4j1JY+VzR3E2luJdSWOoEmgUhzO6G2tHnmJoVI
|
||||||
|
czuRtrS5okkh0kQQakuZQJNEpIkh1Hb3PHOTRqSJIdJ291zRpBFpogi13TWBJpFIE0eo7ep55iaVSBNH
|
||||||
|
pO3quaJJJdJEEmq7agJNMpEmllDb2fPMTTqRJpZI29lzRZNOpIkm1HbWBJoViDTxhNqOnmduViHSxBNp
|
||||||
|
O3quaFYh0ixBqO2oCTQrEWmWIdT27DxzsxqRZhkibc/OFc1qRJqlCLW9dwLNikSa5Qi1PTrP3KxKpFmO
|
||||||
|
SNujc0WzKpFmSUJtb51AszKRZllCbT+aZ25WJ9IsS6TtR3NFszqRZmlCba9NoGkg0ixPqO2/E2haiDTL
|
||||||
|
E2n753wOTRORpoJQ28wVTRORpoZQm0DTRqSpIdJ7zzM3jUSaKkK971zRNBJp6gj1fhNoWok0lYR6n3nm
|
||||||
|
pplIU0mk95krmmYiTS2h7p9A006kqSbUvfPMzQ5Emmoi3TtXNDsQaeoJdd8Eml2INFsQ6p555mYnIs0W
|
||||||
|
RLpnrmh2ItJsQ6jXn0CzG5FmK0K97jxzsyORZisive5c0exIpNmOUK83gWZXIs2WhHqdeeZmZyLNlkR6
|
||||||
|
nbmi2ZlIsy2hzp9AszuRZmtCnTvP3CDSbE6kc+eKBpEGoQ6cQMOfRBq+EOqceeaGv4k0fCHSOXNFw99E
|
||||||
|
Gv4i1PdPoOHfRBr+Qajvm2du+JZIwz+I9H1zRcO3RBr+Q6ivn0DDy0QaXiDU102g4XUiDS8Q6Wvmc2j4
|
||||||
|
PpGGVwj1+XNFw/eJNHyHUJ83gYYfE2n4DpE+Z5654W1EGn5AqI+fKxreRqThDYT6uAk0vJ1IwxsJ9fPz
|
||||||
|
zA2PEWl4I5F+fq5oeIxIwwOE+v0TaHicSMODhPrxeeaG9xFpeJBIPz5XNLyPSMM7CPXbJ9DwfiIN7yTU
|
||||||
|
P55nbniOSMM7ifSP54qG54g0PEGoX59Aw/NEGp4k1N/OMzccQ6ThSSL97VzRcAyRhgMI9d8TaDiOSMNB
|
||||||
|
hNozNxxNpOEgIu2KhqOJNBxo51ALNBxPpOFgO4baMzecQ6ThYDtG2hUN5xBpOMFOoRZoOI9Iw0l2CLVn
|
||||||
|
bjiXSMNJdoi0KxrOJdJwouZQCzScT6ThZI2h9swN1xBpOFljpF3RcA2Rhgs0hVqg4ToiDRdpCLVAw7VE
|
||||||
|
Gi6yeqR9Dg3XE2m40MqhdkXD9UQaLrZiqAUa7iHScLHVIu2ZG+4j0nCDlULtiob7iDTcZIVQCzTcS6Th
|
||||||
|
Rsmh9swN9xNpuFFypF3RcD+RhpslhlqgIYNIQ4CkUHvmhhwiDQGSIu2KhhwiDSESQi3QkEWkIcidofbM
|
||||||
|
DXlEGoLcGWlXNOQRaQhzR6gFGjKJNAS6MtSeuSGXSEOgKyPtioZcIg2hrgi1QEM2kYZgZ4baMzfkE2kI
|
||||||
|
dmakXdGQT6Qh3BmhFmhYg0jDAo4MtWduWIdIwwKOjLQrGtYh0rCII0It0LAWkYaFPBNqz9ywHpGGhTwT
|
||||||
|
aVc0rEekYTHvCbVAw5pEGhb0SKg9c8O6RBoW9EikXdGwLpGGRb0l1AINaxNpWNj3Qi3QsD6RhoW9Fmmf
|
||||||
|
Q0MHkYbFvRRqVzR0EGkoMKH++eefBRqKiDQAhBJpAAgl0gAQSqQBIJRIA0AokQaAUCINAKFEGgBCiTQA
|
||||||
|
hBJpAAgl0gAQSqQBIJRIA0AokQaAUCINAKFEGgBCiTQAhBJpAAgl0gAQSqQBIJRIA0AokQaAUCINAKFE
|
||||||
|
GgBCiTQAhBJpAAgl0gAQSqQBIJRIA0AokQaAUCINAKFEGgBCiTQAhBJpAAgl0gAQSqQBIJRIA0AokQaA
|
||||||
|
UCINAKFEGgBCiTQAhBJpAAgl0gAQSqQBIJRIA0AokQaAUCINAKFEGgBCiTQAhBJpAAgl0gAQSqQBIJRI
|
||||||
|
A0AokQaAUCINAKFEGgBCiTQAhBJpAAgl0gAQSqQBIJRIA0AokQaAUCINAKFEGgBCiTQAhBJpAAgl0gAQ
|
||||||
|
SqQBINQfkf7yz6ev/zEzM7Ok/f7hf5jEhMkgDZ7VAAAAAElFTkSuQmCC
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
<metadata name="fileSystemWatcher1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
</root>
|
</root>
|
125
Bulldoser/Bulldoser/Form2.Designer.cs
generated
Normal file
125
Bulldoser/Bulldoser/Form2.Designer.cs
generated
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
namespace Bulldoser
|
||||||
|
{
|
||||||
|
partial class FormTractorCollection
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
pictureBoxCollections = new PictureBox();
|
||||||
|
groupBoxTools = new GroupBox();
|
||||||
|
maskedTextBoxNumbers = new MaskedTextBox();
|
||||||
|
buttonUpdateCollection = new Button();
|
||||||
|
buttonRemoveTransport = new Button();
|
||||||
|
buttonAddTransport = new Button();
|
||||||
|
((System.ComponentModel.ISupportInitialize)pictureBoxCollections).BeginInit();
|
||||||
|
groupBoxTools.SuspendLayout();
|
||||||
|
SuspendLayout();
|
||||||
|
//
|
||||||
|
// pictureBoxCollections
|
||||||
|
//
|
||||||
|
pictureBoxCollections.Location = new Point(12, 6);
|
||||||
|
pictureBoxCollections.Name = "pictureBoxCollections";
|
||||||
|
pictureBoxCollections.Size = new Size(570, 432);
|
||||||
|
pictureBoxCollections.TabIndex = 1;
|
||||||
|
pictureBoxCollections.TabStop = false;
|
||||||
|
//
|
||||||
|
// groupBoxTools
|
||||||
|
//
|
||||||
|
groupBoxTools.Controls.Add(maskedTextBoxNumbers);
|
||||||
|
groupBoxTools.Controls.Add(buttonUpdateCollection);
|
||||||
|
groupBoxTools.Controls.Add(buttonRemoveTransport);
|
||||||
|
groupBoxTools.Controls.Add(buttonAddTransport);
|
||||||
|
groupBoxTools.Location = new Point(588, 6);
|
||||||
|
groupBoxTools.Name = "groupBoxTools";
|
||||||
|
groupBoxTools.Size = new Size(200, 432);
|
||||||
|
groupBoxTools.TabIndex = 2;
|
||||||
|
groupBoxTools.TabStop = false;
|
||||||
|
groupBoxTools.Text = "Инструменты";
|
||||||
|
//
|
||||||
|
// maskedTextBoxNumbers
|
||||||
|
//
|
||||||
|
maskedTextBoxNumbers.Location = new Point(6, 106);
|
||||||
|
maskedTextBoxNumbers.Margin = new Padding(3, 2, 3, 2);
|
||||||
|
maskedTextBoxNumbers.Mask = "0";
|
||||||
|
maskedTextBoxNumbers.Name = "maskedTextBoxNumbers";
|
||||||
|
maskedTextBoxNumbers.Size = new Size(188, 23);
|
||||||
|
maskedTextBoxNumbers.TabIndex = 5;
|
||||||
|
//
|
||||||
|
// buttonUpdateCollection
|
||||||
|
//
|
||||||
|
buttonUpdateCollection.Location = new Point(6, 220);
|
||||||
|
buttonUpdateCollection.Name = "buttonUpdateCollection";
|
||||||
|
buttonUpdateCollection.Size = new Size(188, 40);
|
||||||
|
buttonUpdateCollection.TabIndex = 3;
|
||||||
|
buttonUpdateCollection.Text = "Обновление коллекции";
|
||||||
|
buttonUpdateCollection.UseVisualStyleBackColor = true;
|
||||||
|
buttonUpdateCollection.Click += ButtonRefreshCollection_Click;
|
||||||
|
//
|
||||||
|
// buttonRemoveTransport
|
||||||
|
//
|
||||||
|
buttonRemoveTransport.Location = new Point(6, 152);
|
||||||
|
buttonRemoveTransport.Name = "buttonRemoveTransport";
|
||||||
|
buttonRemoveTransport.Size = new Size(188, 40);
|
||||||
|
buttonRemoveTransport.TabIndex = 2;
|
||||||
|
buttonRemoveTransport.Text = "Удалить транспорт";
|
||||||
|
buttonRemoveTransport.UseVisualStyleBackColor = true;
|
||||||
|
buttonRemoveTransport.Click += ButtonRemoveTractor_Click;
|
||||||
|
//
|
||||||
|
// buttonAddTransport
|
||||||
|
//
|
||||||
|
buttonAddTransport.Location = new Point(6, 39);
|
||||||
|
buttonAddTransport.Name = "buttonAddTransport";
|
||||||
|
buttonAddTransport.Size = new Size(188, 47);
|
||||||
|
buttonAddTransport.TabIndex = 0;
|
||||||
|
buttonAddTransport.Text = "Добавить транспорт";
|
||||||
|
buttonAddTransport.UseVisualStyleBackColor = true;
|
||||||
|
buttonAddTransport.Click += ButtonAddTractor_Click;
|
||||||
|
//
|
||||||
|
// FormTractorCollection
|
||||||
|
//
|
||||||
|
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||||
|
AutoScaleMode = AutoScaleMode.Font;
|
||||||
|
ClientSize = new Size(800, 450);
|
||||||
|
Controls.Add(groupBoxTools);
|
||||||
|
Controls.Add(pictureBoxCollections);
|
||||||
|
Name = "FormTractorCollection";
|
||||||
|
Text = "Набор автомобилей";
|
||||||
|
((System.ComponentModel.ISupportInitialize)pictureBoxCollections).EndInit();
|
||||||
|
groupBoxTools.ResumeLayout(false);
|
||||||
|
groupBoxTools.PerformLayout();
|
||||||
|
ResumeLayout(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private PictureBox pictureBoxCollections;
|
||||||
|
private GroupBox groupBoxTools;
|
||||||
|
private Button buttonUpdateCollection;
|
||||||
|
private Button buttonRemoveTransport;
|
||||||
|
private Button buttonAddTransport;
|
||||||
|
private MaskedTextBox maskedTextBoxNumbers;
|
||||||
|
}
|
||||||
|
}
|
65
Bulldoser/Bulldoser/Form2.cs
Normal file
65
Bulldoser/Bulldoser/Form2.cs
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
using Bulldoser.Drawings;
|
||||||
|
using Bulldoser.Generic;
|
||||||
|
using Bulldoser.MovementStrategy;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Data;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Bulldoser
|
||||||
|
{
|
||||||
|
public partial class FormTractorCollection : Form
|
||||||
|
{
|
||||||
|
private readonly TractorGenericCollection<DrawingTractor, DrawingObjectTractor> _Tractors;
|
||||||
|
public FormTractorCollection()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
_Tractors = new TractorGenericCollection<DrawingTractor, DrawingObjectTractor>(pictureBoxCollections.Width,
|
||||||
|
pictureBoxCollections.Height);
|
||||||
|
}
|
||||||
|
private void ButtonAddTractor_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (_Tractors == null) return;
|
||||||
|
FormBulldoser form = new();
|
||||||
|
if (form.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
//проверяем, удалось ли нам загрузить объект
|
||||||
|
if (_Tractors + form.SelectedTractor != -1)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Объект добавлен");
|
||||||
|
pictureBoxCollections.Image = _Tractors.ShowTractors();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show("Не удалось добавить объект");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void ButtonRemoveTractor_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (MessageBox.Show("Удалить объект?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int pos = Convert.ToInt32(maskedTextBoxNumbers.Text);
|
||||||
|
if (_Tractors - pos != null)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Объект удален");
|
||||||
|
pictureBoxCollections.Image = _Tractors.ShowTractors();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show("Не удалось удалить объект");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void ButtonRefreshCollection_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
pictureBoxCollections.Image = _Tractors.ShowTractors();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
120
Bulldoser/Bulldoser/Form2.resx
Normal file
120
Bulldoser/Bulldoser/Form2.resx
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
95
Bulldoser/Bulldoser/Generic/BulldoserGenericCollection.cs
Normal file
95
Bulldoser/Bulldoser/Generic/BulldoserGenericCollection.cs
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
using Bulldoser.Drawings;
|
||||||
|
using Bulldoser.MovementStrategy;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Bulldoser.Generic
|
||||||
|
{
|
||||||
|
public class TractorGenericCollection<T, U> where T : DrawingTractor where U : IMoveableObject
|
||||||
|
{
|
||||||
|
//ширина /высота окна
|
||||||
|
private readonly int _pictureWidth;
|
||||||
|
private readonly int _pictureHeight;
|
||||||
|
//ширина /высота занимаемого места
|
||||||
|
private readonly int _placeSizeWidth = 170;
|
||||||
|
private readonly int _placeSizeHeight = 130;
|
||||||
|
/// Набор объектов
|
||||||
|
private readonly SetGeneric<T> _collection;
|
||||||
|
public TractorGenericCollection(int picWidth, int picHeight)
|
||||||
|
{
|
||||||
|
|
||||||
|
// высчитываем размер массива для setgeneric
|
||||||
|
int width = picWidth / _placeSizeWidth;
|
||||||
|
int height = picHeight / _placeSizeHeight;
|
||||||
|
_pictureWidth = picWidth;
|
||||||
|
_pictureHeight = picHeight;
|
||||||
|
_collection = new SetGeneric<T>(width * height);
|
||||||
|
}
|
||||||
|
/// Перегрузка оператора сложения
|
||||||
|
public static int operator +(TractorGenericCollection<T, U> collect, T tract)
|
||||||
|
{
|
||||||
|
if (tract == null)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return collect._collection.Insert(tract);
|
||||||
|
}
|
||||||
|
public static T? operator -(TractorGenericCollection<T, U> collect, int
|
||||||
|
pos)
|
||||||
|
{
|
||||||
|
T obj = collect._collection.Get(pos);
|
||||||
|
if (obj != null)
|
||||||
|
{
|
||||||
|
return collect._collection.Remove(pos);
|
||||||
|
}
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
// получение объекта imoveableObj
|
||||||
|
public U? GetU(int pos)
|
||||||
|
{
|
||||||
|
return (U?)_collection.Get(pos)?.GetMoveableObject;
|
||||||
|
}
|
||||||
|
/// Вывод всего набора объектов
|
||||||
|
public Bitmap ShowTractors()
|
||||||
|
{
|
||||||
|
Bitmap bmp = new(_pictureWidth, _pictureHeight);
|
||||||
|
Graphics gr = Graphics.FromImage(bmp);
|
||||||
|
DrawBackground(gr);
|
||||||
|
DrawObjects(gr);
|
||||||
|
return bmp;
|
||||||
|
}
|
||||||
|
private void DrawBackground(Graphics g)
|
||||||
|
{
|
||||||
|
Pen pen = new(Color.Black, 3);
|
||||||
|
for (int i = 0; i < _pictureWidth / _placeSizeWidth; i++)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < _pictureHeight / _placeSizeHeight + 1; ++j)
|
||||||
|
{
|
||||||
|
//линия рамзетки места
|
||||||
|
g.DrawLine(pen, i * _placeSizeWidth, j * _placeSizeHeight, i * _placeSizeWidth + _placeSizeWidth / 3, j * _placeSizeHeight);
|
||||||
|
}
|
||||||
|
g.DrawLine(pen, i * _placeSizeWidth, 0, i * _placeSizeWidth, _pictureHeight / _placeSizeHeight * _placeSizeHeight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private void DrawObjects(Graphics g)
|
||||||
|
{
|
||||||
|
int HeightObjCount = _pictureHeight / _placeSizeHeight;
|
||||||
|
int WidthObjCount = _pictureWidth / _placeSizeWidth;
|
||||||
|
for (int i = 0; i < _collection.Count; i++)
|
||||||
|
{
|
||||||
|
T t = _collection.Get(i);
|
||||||
|
if (t != null)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
t.SetPosition((_collection.Count - i - 1) % (_pictureWidth / _placeSizeWidth) * _placeSizeWidth,
|
||||||
|
(_collection.Count - i - 1) / (_pictureWidth / _placeSizeWidth) * _placeSizeHeight);
|
||||||
|
t.DrawTransport(g);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
67
Bulldoser/Bulldoser/Generic/SetGeneric.cs
Normal file
67
Bulldoser/Bulldoser/Generic/SetGeneric.cs
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Bulldoser.Generic
|
||||||
|
{
|
||||||
|
public class SetGeneric<T> where T : class
|
||||||
|
{
|
||||||
|
private readonly T[] _places;
|
||||||
|
public int Count => _places.Length;
|
||||||
|
public SetGeneric(int count)
|
||||||
|
{
|
||||||
|
_places = new T[count];
|
||||||
|
}
|
||||||
|
public int Insert(T tract)
|
||||||
|
{
|
||||||
|
return Insert(tract, 0);
|
||||||
|
}
|
||||||
|
public int Insert(T tract, int position)
|
||||||
|
{
|
||||||
|
int NoEmpty = 0, temp = 0;
|
||||||
|
for (int i = position; i < Count; i++)
|
||||||
|
{
|
||||||
|
if (_places[i] != null) NoEmpty++;
|
||||||
|
}
|
||||||
|
if (NoEmpty == Count - position - 1) return -1;
|
||||||
|
|
||||||
|
if (position < Count && position >= 0)
|
||||||
|
{
|
||||||
|
for (int j = position; j < Count; j++)
|
||||||
|
{
|
||||||
|
if (_places[j] == null)
|
||||||
|
{
|
||||||
|
temp = j;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// shift right
|
||||||
|
for (int i = temp; i > position; i--)
|
||||||
|
{
|
||||||
|
_places[i] = _places[i - 1];
|
||||||
|
}
|
||||||
|
_places[position] = tract;
|
||||||
|
return position;
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public T? Remove(int position)
|
||||||
|
{
|
||||||
|
if (position >= Count || position < 0)
|
||||||
|
return null;
|
||||||
|
|
||||||
|
T tmp = _places[position];
|
||||||
|
_places[position] = null;
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
//Получение объекта из набора по позиции
|
||||||
|
public T? Get(int position)
|
||||||
|
{
|
||||||
|
if (position < 0 || position >= Count) return null;
|
||||||
|
return _places[position];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
137
Bulldoser/Bulldoser/MovementStrategy/AbstractStrategy.cs
Normal file
137
Bulldoser/Bulldoser/MovementStrategy/AbstractStrategy.cs
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Bulldoser.MovementStrategy
|
||||||
|
{
|
||||||
|
public abstract class AbstractStrategy
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Перемещаемый объект
|
||||||
|
/// </summary>
|
||||||
|
private IMoveableObject? _moveableObject;
|
||||||
|
/// <summary>
|
||||||
|
/// Статус перемещения
|
||||||
|
/// </summary>
|
||||||
|
private Status _state = Status.NotInit;
|
||||||
|
/// <summary>
|
||||||
|
/// Ширина поля
|
||||||
|
/// </summary>
|
||||||
|
protected int FieldWidth { get; private set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Высота поля
|
||||||
|
/// </summary>
|
||||||
|
protected int FieldHeight { get; private set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Статус перемещения
|
||||||
|
/// </summary>
|
||||||
|
public Status GetStatus() { return _state; }
|
||||||
|
/// <summary>
|
||||||
|
/// Установка данных
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="moveableObject">Перемещаемый объект</param>
|
||||||
|
/// <param name="width">Ширина поля</param>
|
||||||
|
/// <param name="height">Высота поля</param>
|
||||||
|
public void SetData(IMoveableObject moveableObject, int width, int
|
||||||
|
height)
|
||||||
|
{
|
||||||
|
if (moveableObject == null)
|
||||||
|
{
|
||||||
|
_state = Status.NotInit;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_state = Status.InProgress;
|
||||||
|
_moveableObject = moveableObject;
|
||||||
|
FieldWidth = width;
|
||||||
|
FieldHeight = height;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Шаг перемещения
|
||||||
|
/// </summary>
|
||||||
|
public void MakeStep()
|
||||||
|
{
|
||||||
|
if (_state != Status.InProgress)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (IsTargetDestinaion())
|
||||||
|
{
|
||||||
|
_state = Status.Finish;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
MoveToTarget();
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Перемещение влево
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Результат перемещения (true - удалось переместиться, false -
|
||||||
|
///неудача)</returns>
|
||||||
|
protected bool MoveLeft() => MoveTo(Direction.Left);
|
||||||
|
/// <summary>
|
||||||
|
/// Перемещение вправо
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Результат перемещения (true - удалось переместиться,
|
||||||
|
///false - неудача)</returns>
|
||||||
|
protected bool MoveRight() => MoveTo(Direction.Right);
|
||||||
|
/// <summary>
|
||||||
|
/// Перемещение вверх
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Результат перемещения (true - удалось переместиться,
|
||||||
|
///false - неудача)</returns>
|
||||||
|
protected bool MoveUp() => MoveTo(Direction.Up);
|
||||||
|
/// <summary>
|
||||||
|
/// Перемещение вниз
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Результат перемещения (true - удалось переместиться,
|
||||||
|
///false - неудача)</returns>
|
||||||
|
protected bool MoveDown() => MoveTo(Direction.Down);
|
||||||
|
/// <summary>
|
||||||
|
/// Параметры объекта
|
||||||
|
/// </summary>
|
||||||
|
protected ObjectParameters? GetObjectParameters =>
|
||||||
|
_moveableObject?.GetObjectPosition;
|
||||||
|
/// <summary>
|
||||||
|
/// Шаг объекта
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
protected int? GetStep()
|
||||||
|
{
|
||||||
|
if (_state != Status.InProgress)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return _moveableObject?.GetStep;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Перемещение к цели
|
||||||
|
/// </summary>
|
||||||
|
protected abstract void MoveToTarget();
|
||||||
|
/// <summary>
|
||||||
|
/// Достигнута ли цель
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
protected abstract bool IsTargetDestinaion();
|
||||||
|
/// <summary>
|
||||||
|
/// Попытка перемещения в требуемом направлении
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Direction">Направление</param>
|
||||||
|
/// <returns>Результат попытки (true - удалось переместиться, false -
|
||||||
|
///неудача)</returns>
|
||||||
|
private bool MoveTo(Direction Direction)
|
||||||
|
{
|
||||||
|
if (_state != Status.InProgress)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (_moveableObject?.CheckCanMove(Direction) ?? false)
|
||||||
|
{
|
||||||
|
_moveableObject.MoveObject(Direction);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
34
Bulldoser/Bulldoser/MovementStrategy/DrawingObjectTractor.cs
Normal file
34
Bulldoser/Bulldoser/MovementStrategy/DrawingObjectTractor.cs
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
using Bulldoser.Drawings;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Bulldoser.MovementStrategy
|
||||||
|
{
|
||||||
|
public class DrawingObjectTractor : IMoveableObject
|
||||||
|
{
|
||||||
|
private readonly DrawingTractor? _drawningTractor = null;
|
||||||
|
|
||||||
|
public DrawingObjectTractor(DrawingTractor drawningTractor)
|
||||||
|
{
|
||||||
|
_drawningTractor = drawningTractor;
|
||||||
|
}
|
||||||
|
public ObjectParameters? GetObjectPosition
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_drawningTractor == null || _drawningTractor.EntityTractor == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return new ObjectParameters(_drawningTractor.GetPosX,
|
||||||
|
_drawningTractor.GetPosY, _drawningTractor.GetWidth, _drawningTractor.GetHeight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public int GetStep => (int)(_drawningTractor?.EntityTractor?.Step ?? 0);
|
||||||
|
public bool CheckCanMove(Direction direction) => _drawningTractor?.CanMove(direction) ?? false;
|
||||||
|
public void MoveObject(Direction direction) => _drawningTractor?.MoveTransport(direction);
|
||||||
|
}
|
||||||
|
}
|
18
Bulldoser/Bulldoser/MovementStrategy/IMovebleObject.cs
Normal file
18
Bulldoser/Bulldoser/MovementStrategy/IMovebleObject.cs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Bulldoser.MovementStrategy
|
||||||
|
{
|
||||||
|
public interface IMoveableObject
|
||||||
|
{
|
||||||
|
ObjectParameters? GetObjectPosition { get; }
|
||||||
|
|
||||||
|
int GetStep { get; }
|
||||||
|
|
||||||
|
bool CheckCanMove(Direction direction);
|
||||||
|
void MoveObject(Direction direction);
|
||||||
|
}
|
||||||
|
}
|
51
Bulldoser/Bulldoser/MovementStrategy/MoveToCenter.cs
Normal file
51
Bulldoser/Bulldoser/MovementStrategy/MoveToCenter.cs
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Bulldoser.MovementStrategy
|
||||||
|
{
|
||||||
|
public class MoveToCenter : AbstractStrategy
|
||||||
|
{
|
||||||
|
protected override bool IsTargetDestinaion()
|
||||||
|
{
|
||||||
|
var objParams = GetObjectParameters;
|
||||||
|
if (objParams == null) return false;
|
||||||
|
|
||||||
|
return objParams.ObjectMiddleHorizontal <= FieldWidth / 2 && objParams.ObjectMiddleHorizontal
|
||||||
|
+ GetStep() >= FieldWidth / 2 && objParams.ObjectMiddleVertical <= FieldHeight / 2 &&
|
||||||
|
objParams.ObjectMiddleVertical + GetStep() >= FieldHeight / 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void MoveToTarget()
|
||||||
|
{
|
||||||
|
var objParams = GetObjectParameters;
|
||||||
|
if (objParams == null) return;
|
||||||
|
var diffX = objParams.ObjectMiddleHorizontal - FieldWidth / 2;
|
||||||
|
if (Math.Abs(diffX) > GetStep())
|
||||||
|
{
|
||||||
|
if (diffX > 0)
|
||||||
|
{
|
||||||
|
MoveLeft();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MoveRight();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var diffY = objParams.ObjectMiddleVertical - FieldHeight / 2;
|
||||||
|
if (Math.Abs(diffY) > GetStep())
|
||||||
|
{
|
||||||
|
if (diffY > 0)
|
||||||
|
{
|
||||||
|
MoveUp();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MoveDown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
29
Bulldoser/Bulldoser/MovementStrategy/MoveToRightCorner.cs
Normal file
29
Bulldoser/Bulldoser/MovementStrategy/MoveToRightCorner.cs
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Bulldoser.MovementStrategy
|
||||||
|
{
|
||||||
|
public class MoveToRightCorner : AbstractStrategy
|
||||||
|
{
|
||||||
|
protected override bool IsTargetDestinaion()
|
||||||
|
{
|
||||||
|
var objParams = GetObjectParameters;
|
||||||
|
if (objParams == null) return false;
|
||||||
|
|
||||||
|
return objParams.RightBorder >= FieldWidth - GetStep() && objParams.DownBorder >= FieldHeight - GetStep();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void MoveToTarget()
|
||||||
|
{
|
||||||
|
var objParams = GetObjectParameters;
|
||||||
|
if (objParams == null) return;
|
||||||
|
|
||||||
|
if (objParams.RightBorder < FieldWidth - GetStep()) MoveRight();
|
||||||
|
if (objParams.DownBorder < FieldHeight - GetStep()) MoveDown();
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
55
Bulldoser/Bulldoser/MovementStrategy/ObjectParametres.cs
Normal file
55
Bulldoser/Bulldoser/MovementStrategy/ObjectParametres.cs
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Bulldoser.MovementStrategy
|
||||||
|
{
|
||||||
|
public class ObjectParameters
|
||||||
|
{
|
||||||
|
private readonly int _x;
|
||||||
|
private readonly int _y;
|
||||||
|
private readonly int _width;
|
||||||
|
private readonly int _height;
|
||||||
|
/// <summary>
|
||||||
|
/// Левая граница
|
||||||
|
/// </summary>
|
||||||
|
public int LeftBorder => _x;
|
||||||
|
/// <summary>
|
||||||
|
/// Верхняя граница
|
||||||
|
/// </summary>
|
||||||
|
public int TopBorder => _y;
|
||||||
|
/// <summary>
|
||||||
|
/// Правая граница
|
||||||
|
/// </summary>
|
||||||
|
public int RightBorder => _x + _width;
|
||||||
|
/// <summary>
|
||||||
|
/// Нижняя граница
|
||||||
|
/// </summary>
|
||||||
|
public int DownBorder => _y + _height;
|
||||||
|
/// <summary>
|
||||||
|
/// Середина объекта
|
||||||
|
/// </summary>
|
||||||
|
public int ObjectMiddleHorizontal => _x + _width / 2;
|
||||||
|
/// <summary>
|
||||||
|
/// Середина объекта
|
||||||
|
/// </summary>
|
||||||
|
public int ObjectMiddleVertical => _y + _height / 2;
|
||||||
|
/// <summary>
|
||||||
|
/// Конструктор
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="x">Координата X</param>
|
||||||
|
/// <param name="y">Координата Y</param>
|
||||||
|
/// <param name="width">Ширина</param>
|
||||||
|
/// <param name="height">Высота</param>
|
||||||
|
public ObjectParameters(int x, int y, int width, int height)
|
||||||
|
{
|
||||||
|
_x = x;
|
||||||
|
_y = y;
|
||||||
|
_width = width;
|
||||||
|
_height = height;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -11,7 +11,7 @@ namespace Bulldoser
|
|||||||
// To customize application configuration such as set high DPI settings or default font,
|
// To customize application configuration such as set high DPI settings or default font,
|
||||||
// see https://aka.ms/applicationconfiguration.
|
// see https://aka.ms/applicationconfiguration.
|
||||||
ApplicationConfiguration.Initialize();
|
ApplicationConfiguration.Initialize();
|
||||||
Application.Run(new Form1());
|
Application.Run(new FormTractorCollection());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
63
Bulldoser/Bulldoser/Properties/Resources.Designer.cs
generated
Normal file
63
Bulldoser/Bulldoser/Properties/Resources.Designer.cs
generated
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
//------------------------------------------------------------------------------
|
||||||
|
// <auto-generated>
|
||||||
|
// Этот код создан программой.
|
||||||
|
// Исполняемая версия:4.0.30319.42000
|
||||||
|
//
|
||||||
|
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
|
||||||
|
// повторной генерации кода.
|
||||||
|
// </auto-generated>
|
||||||
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
namespace Bulldoser.Properties {
|
||||||
|
using System;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д.
|
||||||
|
/// </summary>
|
||||||
|
// Этот класс создан автоматически классом StronglyTypedResourceBuilder
|
||||||
|
// с помощью такого средства, как ResGen или Visual Studio.
|
||||||
|
// Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen
|
||||||
|
// с параметром /str или перестройте свой проект VS.
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
internal class Resources {
|
||||||
|
|
||||||
|
private static global::System.Resources.ResourceManager resourceMan;
|
||||||
|
|
||||||
|
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||||
|
|
||||||
|
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||||
|
internal Resources() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||||
|
get {
|
||||||
|
if (object.ReferenceEquals(resourceMan, null)) {
|
||||||
|
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Bulldoser.Properties.Resources", typeof(Resources).Assembly);
|
||||||
|
resourceMan = temp;
|
||||||
|
}
|
||||||
|
return resourceMan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Перезаписывает свойство CurrentUICulture текущего потока для всех
|
||||||
|
/// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией.
|
||||||
|
/// </summary>
|
||||||
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
|
internal static global::System.Globalization.CultureInfo Culture {
|
||||||
|
get {
|
||||||
|
return resourceCulture;
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
resourceCulture = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
120
Bulldoser/Bulldoser/Properties/Resources.resx
Normal file
120
Bulldoser/Bulldoser/Properties/Resources.resx
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
19
Bulldoser/Bulldoser/Status.cs
Normal file
19
Bulldoser/Bulldoser/Status.cs
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Bulldoser
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Статус выполнения операции перемещения
|
||||||
|
/// </summary>
|
||||||
|
public enum Status
|
||||||
|
{
|
||||||
|
NotInit,
|
||||||
|
InProgress,
|
||||||
|
Finish
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user