Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
87c20a4587 | |||
7f2792be67 | |||
0b8b779277 | |||
4311f2f59b | |||
|
6bc2e6f582 | ||
|
5d72860a96 | ||
ff7a87438e | |||
|
c141ffc95e | ||
|
f898ad65b4 |
@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.0.32014.148
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LocomativeProject", "LocomativeProject\LocomativeProject.csproj", "{31F7DD61-7F62-4B39-8543-7A917369587A}"
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LocomotiveProject", "LocomativeProject\LocomotiveProject.csproj", "{31F7DD61-7F62-4B39-8543-7A917369587A}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
|
@ -0,0 +1,113 @@
|
||||
using LocomativeProject.Drawnings;
|
||||
using LocomotiveProject.CollectionGenericObjects;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace LocomotiveProject.CollectionGenericObjects;
|
||||
/// <summary>
|
||||
/// Абстракция компании,хранящий коллекцию круизеров
|
||||
/// </summary>
|
||||
public abstract class AbstractCompany
|
||||
{
|
||||
/// <summary>
|
||||
/// Размер места(ширина)
|
||||
/// </summary>
|
||||
protected readonly int _placeSizeWidth = 210;
|
||||
/// <summary>
|
||||
/// Размер места(высота)
|
||||
/// </summary>
|
||||
protected readonly int _placeSizeHeight = 120;
|
||||
/// <summary>
|
||||
/// Ширина окна
|
||||
/// </summary>
|
||||
protected readonly int _pictureWidth;
|
||||
/// <summary>
|
||||
/// Высота окна
|
||||
/// </summary>
|
||||
protected readonly int _pictureHeight;
|
||||
/// <summary>
|
||||
/// Коллекцияя круизеров
|
||||
/// </summary>
|
||||
protected ICollectionGenericObjects<DrawningBaseLocomotive> _collection = null;
|
||||
/// <summary>
|
||||
/// Вычисление макс кол-ва элементов,который можно разместить в окне
|
||||
/// </summary>
|
||||
private int GetMaxCount => _pictureWidth / _placeSizeWidth * (_pictureHeight / _placeSizeHeight);
|
||||
/// <summary>
|
||||
/// конструктор
|
||||
/// </summary>
|
||||
/// <param name="picWidth">Ширина окна</param>
|
||||
/// <param name="pictureHeight">Высота окна</param>
|
||||
/// <param name="collection">коллекция</param>
|
||||
public AbstractCompany(int picWidth, int pictureHeight,ICollectionGenericObjects<DrawningBaseLocomotive> collection)
|
||||
{
|
||||
_pictureWidth = picWidth;
|
||||
_pictureHeight = pictureHeight;
|
||||
_collection = collection;
|
||||
_collection.SetMaxCount = GetMaxCount;
|
||||
}
|
||||
/// <summary>
|
||||
/// перегрузка оператора + для класса
|
||||
/// </summary>
|
||||
/// <param name="company">Компания</param>
|
||||
/// <param name="Locomotive">добавляемый объект</param>
|
||||
/// <returns></returns>
|
||||
public static int operator +(AbstractCompany company, DrawningBaseLocomotive Locomotive)
|
||||
{
|
||||
if (company._collection == null)
|
||||
return -1;
|
||||
return company._collection.Insert(Locomotive);
|
||||
}
|
||||
/// <summary>
|
||||
/// перегрузка оператора - для класса
|
||||
/// </summary>
|
||||
/// <param name="company">Компания</param>
|
||||
/// <param name="position">позиция удаления</param>
|
||||
/// <returns></returns>
|
||||
public static DrawningBaseLocomotive operator -(AbstractCompany company, int position)
|
||||
{
|
||||
if (company._collection == null)
|
||||
return null;
|
||||
|
||||
return company._collection.Remove(position);
|
||||
}
|
||||
/// <summary>
|
||||
/// получение случайног обьекта из коллекции
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public DrawningBaseLocomotive? GetRandomObject()
|
||||
{
|
||||
Random rnd = new Random();
|
||||
return _collection?.Get(rnd.Next(GetMaxCount));
|
||||
}
|
||||
/// <summary>
|
||||
/// вывод всей коллекции
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public Bitmap? Show()
|
||||
{
|
||||
Bitmap? bitmap = new(_pictureWidth,_pictureHeight);
|
||||
Graphics graphics = Graphics.FromImage(bitmap);
|
||||
DrawBackground(graphics);
|
||||
|
||||
SetObjectPosition();
|
||||
for (int i = 0; i < (_collection?.Count ?? 0); ++i)
|
||||
{
|
||||
DrawningBaseLocomotive? obj = _collection?.Get(i);
|
||||
obj?.DrawTransport(graphics);
|
||||
}
|
||||
return bitmap;
|
||||
}
|
||||
/// <summary>
|
||||
/// Вывод заднего фона
|
||||
/// </summary>
|
||||
/// <param name="graphics"></param>
|
||||
protected abstract void DrawBackground(Graphics graphics);
|
||||
/// <summary>
|
||||
/// Расстановка объектов
|
||||
/// </summary>
|
||||
protected abstract void SetObjectPosition();
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace LocomotiveProject.CollectionGenericObjects;
|
||||
/// <summary>
|
||||
/// Тип коллекции
|
||||
/// </summary>
|
||||
public enum CollectionType
|
||||
{
|
||||
/// <summary>
|
||||
/// Неопределено
|
||||
/// </summary>
|
||||
None = 0,
|
||||
/// <summary>
|
||||
/// Массив
|
||||
/// </summary>
|
||||
Massive = 1,
|
||||
/// <summary>
|
||||
/// Список
|
||||
/// </summary>
|
||||
List = 2
|
||||
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace LocomotiveProject.CollectionGenericObjects;
|
||||
|
||||
public interface ICollectionGenericObjects<T>
|
||||
where T : class
|
||||
{
|
||||
/// <summary>
|
||||
/// Кол-во объектов в коллекции
|
||||
/// </summary>
|
||||
int Count { get; }
|
||||
/// <summary>
|
||||
/// Установка макс. кол-ва элементов
|
||||
/// </summary>
|
||||
int SetMaxCount { set; }
|
||||
/// <summary>
|
||||
/// Добавление объекта в коллекцию
|
||||
/// </summary>
|
||||
/// <param name="obj">Добавляемый объект</param>
|
||||
/// <returns>true-вставка прошла удачно,false- вставка не удалась</returns>
|
||||
int Insert(T obj);
|
||||
/// <summary>
|
||||
/// Добавление объекта в коллекцию на конкретную позицию
|
||||
/// </summary>
|
||||
/// <param name="obj">Добавляемый объект</param>
|
||||
/// <param name="position">позиция</param>
|
||||
/// <returns>true-вставка прошла удачно,false- вставка не удалась</returns>
|
||||
int Insert(T obj,int position);
|
||||
/// <summary>
|
||||
/// Удаление обьекта из коллекции с конкретной позиции
|
||||
/// </summary>
|
||||
/// <param name="positon">позиция</param>
|
||||
/// <returns>true-удаление прошло удачно,false- удаление не удалось</returns>
|
||||
T? Remove(int positon);
|
||||
/// <summary>
|
||||
/// получение объекта по позиции
|
||||
/// </summary>
|
||||
/// <param name="positon">позиция</param>
|
||||
/// <returns>Обьект</returns>
|
||||
T? Get(int positon);
|
||||
}
|
@ -0,0 +1,73 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace LocomotiveProject.CollectionGenericObjects;
|
||||
/// <summary>
|
||||
/// Параметризованный набор объектов
|
||||
/// </summary>
|
||||
/// <typeparam name="T">Параметр: ограничение - ссылочный тип</typeparam>
|
||||
public class ListGenericObjects<T> : ICollectionGenericObjects<T>
|
||||
where T : class
|
||||
{
|
||||
/// <summary>
|
||||
/// Список объектов, которые храним
|
||||
/// </summary>
|
||||
private readonly List<T?> _collection;
|
||||
|
||||
/// <summary>
|
||||
/// Максимально допустимое число объектов в списке
|
||||
/// </summary>
|
||||
private int _maxCount;
|
||||
|
||||
public int Count => _collection.Count;
|
||||
|
||||
public int SetMaxCount { set { if (value > 0) { _maxCount = value; } } }
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
public ListGenericObjects()
|
||||
{
|
||||
_collection = new();
|
||||
}
|
||||
|
||||
public int Insert(T obj)
|
||||
{
|
||||
// TODO проверка, что не превышено максимальное количество элементов
|
||||
// TODO вставка в конец набора
|
||||
if (_collection.Count >= _maxCount) return -1;
|
||||
_collection.Add(obj);
|
||||
return Count;
|
||||
}
|
||||
|
||||
public int Insert(T obj, int position)
|
||||
{
|
||||
// TODO проверка, что не превышено максимальное количество элементов
|
||||
// TODO проверка позиции
|
||||
// TODO вставка по позиции
|
||||
if (_collection.Count >= _maxCount || _collection[position] == null || position < 0) { return -1; }
|
||||
_collection.Insert(position, obj);
|
||||
return Count;
|
||||
}
|
||||
|
||||
public T? Get(int position)
|
||||
{
|
||||
// TODO проверка позиции
|
||||
if (!_collection.Any()) { return null; }
|
||||
if (_collection.Count <= position || position < 0 || position >= _maxCount) { return null; }
|
||||
return _collection[position];
|
||||
}
|
||||
|
||||
public T? Remove(int position)
|
||||
{
|
||||
// TODO проверка позиции
|
||||
// TODO удаление объекта из списка
|
||||
if (position >= Count || position < 0) return null;
|
||||
T obj = _collection[position];
|
||||
_collection.RemoveAt(position);
|
||||
return obj;
|
||||
}
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
using LocomativeProject.Drawnings;
|
||||
using LocomotiveProject.CollectionGenericObjects;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace LocomotiveProject.CollectionGenericObjects;
|
||||
|
||||
public class LocomotiveSharingService : AbstractCompany
|
||||
{
|
||||
public LocomotiveSharingService(int picWidth, int pictureHeight, ICollectionGenericObjects<DrawningBaseLocomotive> collection) : base(picWidth, pictureHeight, collection)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void DrawBackground(Graphics g)
|
||||
{
|
||||
Pen pen = new Pen(Color.Black,2);
|
||||
int width = _pictureWidth / _placeSizeWidth;
|
||||
int height = _pictureHeight / _placeSizeHeight;
|
||||
for (int i = 0; i < width; i++)
|
||||
{
|
||||
for (int j = 0; j < height; j++)
|
||||
{
|
||||
g.DrawLine(pen, i * _placeSizeWidth + 20, j * _placeSizeHeight + 10, i * _placeSizeWidth + 190, j * _placeSizeHeight + 10);
|
||||
g.DrawLine(pen, i * _placeSizeWidth + 20, j * _placeSizeHeight + 120, i * _placeSizeWidth + 190, j * _placeSizeHeight + 120);
|
||||
g.DrawLine(pen, i * _placeSizeWidth + 20, j * _placeSizeHeight + 10, i * _placeSizeWidth + 20, j * _placeSizeHeight + 120);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override void SetObjectPosition()
|
||||
{
|
||||
int width = _pictureWidth / _placeSizeWidth;
|
||||
int height = _pictureHeight / _placeSizeHeight;
|
||||
|
||||
int curWidth = 0;
|
||||
int curHeight = 0;
|
||||
|
||||
for (int i = 0; i < (_collection?.Count ?? 0); i++)
|
||||
{
|
||||
if (_collection?.Get(i) != null)
|
||||
{
|
||||
_collection?.Get(i).SetPictureSize(_pictureWidth, _pictureHeight);
|
||||
_collection?.Get(i).SetPosition(_placeSizeWidth * curWidth + 30, curHeight * _placeSizeHeight + 35);
|
||||
}
|
||||
if (curHeight < height - 1)
|
||||
curHeight++;
|
||||
else
|
||||
{
|
||||
curHeight = 0;
|
||||
curWidth++;
|
||||
}
|
||||
if (curWidth > width - 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
using LocomativeProject.Drawnings;
|
||||
using LocomotiveProject.CollectionGenericObjects;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace LocomotiveProject.CollectionGenericObjects;
|
||||
|
||||
public class LocomotiveStation : AbstractCompany
|
||||
{
|
||||
public LocomotiveStation(int picWidth, int pictureHeight, ICollectionGenericObjects<DrawningBaseLocomotive> collection) : base(picWidth, pictureHeight, collection)
|
||||
{
|
||||
}
|
||||
|
||||
protected override void DrawBackground(Graphics g)
|
||||
{
|
||||
Pen pen = new Pen(Color.Black,2);
|
||||
int width = _pictureWidth / _placeSizeWidth;
|
||||
int height = _pictureHeight / _placeSizeHeight;
|
||||
for (int i = 0; i < width; i++)
|
||||
{
|
||||
for (int j = 0; j < height; j++)
|
||||
{
|
||||
g.DrawLine(pen, i * _placeSizeWidth + 20, j * _placeSizeHeight + 10, i * _placeSizeWidth + 190, j * _placeSizeHeight + 10);
|
||||
g.DrawLine(pen, i * _placeSizeWidth + 20, j * _placeSizeHeight + 120, i * _placeSizeWidth + 190, j * _placeSizeHeight + 120);
|
||||
g.DrawLine(pen, i * _placeSizeWidth + 20, j * _placeSizeHeight + 10, i * _placeSizeWidth + 20, j * _placeSizeHeight + 120);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected override void SetObjectPosition()
|
||||
{
|
||||
int width = _pictureWidth / _placeSizeWidth;
|
||||
int height = _pictureHeight / _placeSizeHeight;
|
||||
|
||||
int curWidth = 0;
|
||||
int curHeight = 0;
|
||||
|
||||
for (int i = 0; i < (_collection?.Count ?? 0); i++)
|
||||
{
|
||||
if (_collection?.Get(i) != null)
|
||||
{
|
||||
_collection?.Get(i).SetPictureSize(_pictureWidth, _pictureHeight);
|
||||
_collection?.Get(i).SetPosition(_placeSizeWidth * curWidth + 30, curHeight * _placeSizeHeight + 35);
|
||||
}
|
||||
if (curHeight < height - 1)
|
||||
curHeight++;
|
||||
else
|
||||
{
|
||||
curHeight = 0;
|
||||
curWidth++;
|
||||
}
|
||||
if (curWidth > width - 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,90 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace LocomotiveProject.CollectionGenericObjects;
|
||||
|
||||
public class MassiveGenericObjects<T> : ICollectionGenericObjects<T>
|
||||
where T : class
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
private T[] _collection;
|
||||
|
||||
public int Count => _collection.Length;
|
||||
|
||||
public int SetMaxCount { set { if (value > 0) { _collection = new T?[value]; } } }
|
||||
/// <summary>
|
||||
/// конструктор
|
||||
/// </summary>
|
||||
public MassiveGenericObjects()
|
||||
{
|
||||
_collection = Array.Empty<T>();
|
||||
}
|
||||
|
||||
public T? Get(int positon)
|
||||
{
|
||||
if (positon <= Count || positon > 0)
|
||||
{
|
||||
return _collection[positon];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public int Insert(T obj)
|
||||
{
|
||||
for (int i = 0; i < Count; i++)
|
||||
{
|
||||
if (_collection[i] == null )
|
||||
{
|
||||
_collection[i] = obj;
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public int Insert(T obj, int position)
|
||||
{
|
||||
if (_collection[position]== null)
|
||||
{
|
||||
_collection[position] = obj;
|
||||
return position;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = position; i < Count; i++)
|
||||
{
|
||||
if (_collection[i] == null)
|
||||
{
|
||||
_collection[i] = obj;
|
||||
return i;
|
||||
}
|
||||
}
|
||||
for (int i = Count -1; i > 0; i--)
|
||||
{
|
||||
if (_collection[i] == null)
|
||||
{
|
||||
_collection[i] = obj;
|
||||
return i;
|
||||
}
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
public T? Remove(int position)
|
||||
{
|
||||
if (position >= Count || position < 0) return null;
|
||||
if (_collection[position] != null)
|
||||
{
|
||||
T obj = _collection[position];
|
||||
_collection[position] = null;
|
||||
return obj;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
@ -0,0 +1,86 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace LocomotiveProject.CollectionGenericObjects
|
||||
{
|
||||
/// <summary>
|
||||
/// Класс-хранилище коллекций
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
public class StorageCollection<T>
|
||||
where T : class
|
||||
{
|
||||
/// <summary>
|
||||
/// Словарь (хранилище) с коллекциями
|
||||
/// </summary>
|
||||
readonly Dictionary<string, ICollectionGenericObjects<T>> _storages;
|
||||
|
||||
/// <summary>
|
||||
/// Возвращение списка названий коллекций
|
||||
/// </summary>
|
||||
public List<string> Keys => _storages.Keys.ToList();
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
public StorageCollection()
|
||||
{
|
||||
_storages = new Dictionary<string, ICollectionGenericObjects<T>>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Добавление коллекции в хранилище
|
||||
/// </summary>
|
||||
/// <param name="name">Название коллекции</param>
|
||||
/// <param name="collectionType">тип коллекции</param>
|
||||
public void AddCollection(string name, CollectionType collectionType)
|
||||
{
|
||||
// TODO проверка, что name не пустой и нет в словаре записи с таким ключом
|
||||
// TODO Прописать логику для добавления
|
||||
if (name.Length <= 0 || _storages.ContainsKey(name))
|
||||
{
|
||||
return;
|
||||
}
|
||||
switch (collectionType)
|
||||
{
|
||||
case CollectionType.List:
|
||||
_storages.Add(name, new ListGenericObjects<T>());
|
||||
break;
|
||||
case CollectionType.Massive:
|
||||
_storages.Add(name, new MassiveGenericObjects<T>());
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Удаление коллекции
|
||||
/// </summary>
|
||||
/// <param name="name">Название коллекции</param>
|
||||
public void DelCollection(string name)
|
||||
{
|
||||
// TODO Прописать логику для удаления коллекции
|
||||
if (!_storages.ContainsKey(name)) { return; }
|
||||
_storages.Remove(name);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Доступ к коллекции
|
||||
/// </summary>
|
||||
/// <param name="name">Название коллекции</param>
|
||||
/// <returns></returns>
|
||||
public ICollectionGenericObjects<T>? this[string name]
|
||||
{
|
||||
get
|
||||
{
|
||||
// TODO Продумать логику получения объекта
|
||||
if (!_storages.ContainsKey(name)) { return null; }
|
||||
return _storages[name];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,29 @@
|
||||
namespace LocomativeProject.Drawnings
|
||||
{
|
||||
/// <summary>
|
||||
/// Направление перемещения
|
||||
/// </summary>
|
||||
public enum DirectionType
|
||||
{
|
||||
/// <summary>
|
||||
/// Неизвестное направление
|
||||
/// </summary>
|
||||
Unknow = -1,
|
||||
/// <summary>
|
||||
/// Вверх
|
||||
/// </summary>
|
||||
Up = 1,
|
||||
/// <summary>
|
||||
/// Вниз
|
||||
/// </summary>
|
||||
Down,
|
||||
/// <summary>
|
||||
/// Влево
|
||||
/// </summary>
|
||||
Left,
|
||||
/// <summary>
|
||||
/// Вправо
|
||||
/// </summary>
|
||||
Right
|
||||
}
|
||||
}
|
@ -0,0 +1,276 @@
|
||||
using LocomativeProject.Entities;
|
||||
|
||||
namespace LocomativeProject.Drawnings
|
||||
{
|
||||
public class DrawningBaseLocomotive
|
||||
{
|
||||
/// <summary>
|
||||
/// Класс-сущность
|
||||
/// </summary>
|
||||
public EntityBaseLocomotive? _EntityLocomotive { get; protected set; }
|
||||
|
||||
/// <summary>
|
||||
/// Ширина окна
|
||||
/// </summary>
|
||||
protected int? _pictureWidth;
|
||||
|
||||
/// <summary>
|
||||
/// Высота окна
|
||||
/// </summary>
|
||||
protected int? _pictureHeight;
|
||||
|
||||
/// <summary>
|
||||
/// Левая координата прорисовки тепловоза
|
||||
/// </summary>
|
||||
protected int? _startPosX;
|
||||
|
||||
/// <summary>
|
||||
/// Верхняя кооридната прорисовки тепловоза
|
||||
/// </summary>
|
||||
protected int? _startPosY;
|
||||
|
||||
/// <summary>
|
||||
/// Ширина прорисовки тепловоза
|
||||
/// </summary>
|
||||
private readonly int _drawningBaseLocomotiveWidth = 150;
|
||||
|
||||
/// <summary>
|
||||
/// Высота прорисовки тепловоза
|
||||
/// </summary>
|
||||
private readonly int _drawningBaseLocomotiveHeight = 80;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Координата X объекта
|
||||
/// </summary>
|
||||
public int? GetPosX => _startPosX;
|
||||
|
||||
/// <summary>
|
||||
/// Координата Y объекта
|
||||
/// </summary>
|
||||
public int? GetPosY => _startPosY;
|
||||
|
||||
/// <summary>
|
||||
/// Ширина объекта
|
||||
/// </summary>
|
||||
public int GetWidth => _drawningBaseLocomotiveWidth;
|
||||
|
||||
/// <summary>
|
||||
/// Высота объекта
|
||||
/// </summary>
|
||||
public int GetHeight => _drawningBaseLocomotiveHeight;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Пустой конструктор
|
||||
/// </summary>
|
||||
private DrawningBaseLocomotive()
|
||||
{
|
||||
_pictureWidth = null;
|
||||
_pictureHeight = null;
|
||||
_startPosX = null;
|
||||
_startPosY = null;
|
||||
}
|
||||
/// <summary>
|
||||
/// Конструктор базового поезда
|
||||
/// </summary>
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес</param>
|
||||
/// <param name="bodyColor">Основной цвет</param>
|
||||
public DrawningBaseLocomotive(int speed, double weight, Color bodyColor) : this()
|
||||
{
|
||||
_EntityLocomotive = new EntityBaseLocomotive(speed, weight, bodyColor);
|
||||
}
|
||||
/// <summary>
|
||||
/// Конструктор для наследников
|
||||
/// </summary>
|
||||
/// <param name="drawningLocomotiveWidth">ширина</param>
|
||||
/// <param name="drawningLocomotiveHeight">высота</param>
|
||||
protected DrawningBaseLocomotive(int Width, int Height) : this()
|
||||
{
|
||||
_drawningBaseLocomotiveWidth = Width;
|
||||
_drawningBaseLocomotiveHeight = Height;
|
||||
}
|
||||
/// <summary>
|
||||
/// Установка границ поля
|
||||
/// </summary>
|
||||
/// <param name="width">Ширина поля</param>
|
||||
/// <param name="height">Высота поля</param>
|
||||
/// <returns>true - границы заданы, false - проверка не пройдена, нельзя
|
||||
///разместить объект в этих размерах</returns>
|
||||
public bool SetPictureSize(int width, int height)
|
||||
{
|
||||
if (width > _drawningBaseLocomotiveWidth || height > _drawningBaseLocomotiveHeight) // если ширина и высота окна больше чем объект
|
||||
{
|
||||
_pictureWidth = width;
|
||||
_pictureHeight = height;
|
||||
if (_startPosX + _drawningBaseLocomotiveWidth > width || _startPosX < 0) // если координаты выходят за пределы, корректируем
|
||||
{
|
||||
_startPosX = 0;
|
||||
}
|
||||
if (_startPosY + _drawningBaseLocomotiveHeight > height || _startPosY < 0)
|
||||
{
|
||||
_startPosY = 0;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
/// <summary>
|
||||
/// Установка позиции
|
||||
/// </summary>
|
||||
/// <param name="x">Координата X</param>
|
||||
/// <param name="y">Координата Y</param>
|
||||
public void SetPosition(int x, int y)
|
||||
{
|
||||
if (!_pictureHeight.HasValue || !_pictureWidth.HasValue)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// если все нормально
|
||||
if (x > 0 || x + _drawningBaseLocomotiveWidth < _pictureWidth)
|
||||
{
|
||||
_startPosX = x;
|
||||
}
|
||||
if (y > 0 || y + _drawningBaseLocomotiveHeight < _pictureHeight)
|
||||
{
|
||||
_startPosY = y;
|
||||
}
|
||||
// если не лезет, но мог бы влезть
|
||||
if (x < 0 || x + _drawningBaseLocomotiveWidth > _pictureWidth)
|
||||
{
|
||||
_startPosX = 0;
|
||||
}
|
||||
if (y < 0 || y + _drawningBaseLocomotiveHeight > _pictureHeight)
|
||||
{
|
||||
_startPosY = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Изменение направления перемещения
|
||||
/// </summary>
|
||||
/// <param name="direction">Направление</param>
|
||||
/// <returns>true - перемещене выполнено, false - перемещение
|
||||
/// невозможно</returns>
|
||||
public bool MoveTransport(DirectionType direction)
|
||||
{
|
||||
if (_EntityLocomotive == null || !_startPosX.HasValue ||
|
||||
!_startPosY.HasValue)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
switch (direction)
|
||||
{
|
||||
//влево
|
||||
case DirectionType.Left:
|
||||
if (_startPosX.Value - _EntityLocomotive.Step > 0)
|
||||
{
|
||||
_startPosX -= (int)_EntityLocomotive.Step;
|
||||
}
|
||||
return true;
|
||||
//вверх
|
||||
case DirectionType.Up:
|
||||
if (_startPosY.Value - _EntityLocomotive.Step > 0)
|
||||
{
|
||||
_startPosY -= (int)_EntityLocomotive.Step;
|
||||
}
|
||||
return true;
|
||||
// вправо
|
||||
case DirectionType.Right:
|
||||
if (_startPosX.Value + _drawningBaseLocomotiveWidth + _EntityLocomotive.Step < _pictureWidth)
|
||||
{
|
||||
_startPosX += (int)_EntityLocomotive.Step;
|
||||
}
|
||||
return true;
|
||||
//вниз
|
||||
case DirectionType.Down:
|
||||
if (_startPosY.Value + _drawningBaseLocomotiveHeight + _EntityLocomotive.Step < _pictureHeight)
|
||||
{
|
||||
_startPosY += (int)_EntityLocomotive.Step;
|
||||
}
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// ОТрисовка полигона
|
||||
/// </summary>
|
||||
/// <param name="g">Graphics</param>
|
||||
private void DrawPolygon(Graphics g, Pen pen, Brush brush, int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4)
|
||||
{
|
||||
Point point1 = new Point(x1, y1);
|
||||
Point point2 = new Point(x2, y2);
|
||||
Point point3 = new Point(x3, y3);
|
||||
Point point4 = new Point(x4, y4);
|
||||
Point[] PolygponPoints =
|
||||
{
|
||||
point1,
|
||||
point2,
|
||||
point3,
|
||||
point4
|
||||
};
|
||||
g.FillPolygon(brush, PolygponPoints);
|
||||
g.DrawPolygon(pen, PolygponPoints);
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Прорисовка объекта
|
||||
/// </summary>
|
||||
/// <param name="g"></param>
|
||||
public virtual void DrawTransport(Graphics g)
|
||||
{
|
||||
if (_EntityLocomotive == null || !_startPosX.HasValue || !_startPosY.HasValue)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Pen pen = new(Color.Black);
|
||||
Brush bodyBrush = new SolidBrush(_EntityLocomotive.BodyColor);
|
||||
Brush blackBrush = new SolidBrush(Color.Black);
|
||||
Brush whiteBrush = new SolidBrush(Color.White);
|
||||
//границы тепловоза
|
||||
DrawPolygon(g, pen, bodyBrush,
|
||||
_startPosX.Value + 5, _startPosY.Value + 10,
|
||||
_startPosX.Value + 105, _startPosY.Value + 10,
|
||||
_startPosX.Value + 115, _startPosY.Value + 20 + 10,
|
||||
_startPosX.Value + 5, _startPosY.Value + 20 + 10
|
||||
);
|
||||
g.DrawRectangle(pen, _startPosX.Value + 5, _startPosY.Value + 20 + 10, 110, 20);
|
||||
g.FillRectangle(blackBrush, _startPosX.Value, _startPosY.Value + 5 + 10, 5, 30);
|
||||
//шасси
|
||||
DrawPolygon(g, pen, blackBrush,
|
||||
_startPosX.Value, _startPosY.Value + 45 + 10,
|
||||
_startPosX.Value + 10, _startPosY.Value + 40 + 10,
|
||||
_startPosX.Value + 50, _startPosY.Value + 40 + 10,
|
||||
_startPosX.Value + 50, _startPosY.Value + 45 + 10
|
||||
);
|
||||
DrawPolygon(g, pen, blackBrush,
|
||||
_startPosX.Value + 70, _startPosY.Value + 40 + 10,
|
||||
_startPosX.Value + 110, _startPosY.Value + 40 + 10,
|
||||
_startPosX.Value + 120, _startPosY.Value + 45 + 10,
|
||||
_startPosX.Value + 70, _startPosY.Value + 45 + 10
|
||||
);
|
||||
//колеса
|
||||
g.DrawEllipse(pen, _startPosX.Value + 15, _startPosY.Value + 40 + 10, 10, 10);
|
||||
g.FillEllipse(whiteBrush, _startPosX.Value + 15, _startPosY.Value + 40 + 10, 10, 10);
|
||||
g.DrawEllipse(pen, _startPosX.Value + 30, _startPosY.Value + 40 + 10, 10, 10);
|
||||
g.FillEllipse(whiteBrush, _startPosX.Value + 30, _startPosY.Value + 40 + 10, 10, 10);
|
||||
g.DrawEllipse(pen, _startPosX.Value + 80, _startPosY.Value + 40 + 10, 10, 10);
|
||||
g.FillEllipse(whiteBrush, _startPosX.Value + 80, _startPosY.Value + 40 + 10, 10, 10);
|
||||
g.DrawEllipse(pen, _startPosX.Value + 95, _startPosY.Value + 40 + 10, 10, 10);
|
||||
g.FillEllipse(whiteBrush, _startPosX.Value + 95, _startPosY.Value + 40 + 10, 10, 10);
|
||||
//дверь
|
||||
g.FillRectangle(bodyBrush, _startPosX.Value + 50, _startPosY.Value + 10 + 10, 10, 20);
|
||||
g.DrawRectangle(pen, _startPosX.Value + 50, _startPosY.Value + 10 + 10, 10, 20);
|
||||
//окна
|
||||
pen = new(Color.Blue);
|
||||
g.DrawRectangle(pen, _startPosX.Value + 85, _startPosY.Value + 5 + 10, 10, 10);
|
||||
g.DrawRectangle(pen, _startPosX.Value + 70, _startPosY.Value + 5 + 10, 10, 10);
|
||||
g.DrawRectangle(pen, _startPosX.Value + 10, _startPosY.Value + 5 + 10, 10, 10);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,51 @@
|
||||
using LocomativeProject.Drawnings;
|
||||
using LocomotiveProject.Entities;
|
||||
|
||||
namespace LocomotiveProject.Drawnings
|
||||
{
|
||||
public class DrawningLocomotive : DrawningBaseLocomotive
|
||||
{
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес тепловоза</param>
|
||||
/// <param name="bodyColor">Основной цвет</param>
|
||||
/// <param name="additionalColor">Дополнительный цвет</param>
|
||||
/// <param name="exehaustPipe">Признак наличия трубы</param>
|
||||
/// <param name="fuelCompartment">Признак наличия топливного отсека</param>
|
||||
public DrawningLocomotive(int speed, double weight, Color bodyColor, Color additionalColor, bool exehaustPipe, bool fuelCompartment) : base(120, 60)
|
||||
{
|
||||
_EntityLocomotive = new EntityLocomotive(speed, weight, bodyColor, additionalColor, exehaustPipe, fuelCompartment);
|
||||
}
|
||||
|
||||
public override void DrawTransport(Graphics g)
|
||||
{
|
||||
if (_EntityLocomotive == null || _EntityLocomotive is not EntityLocomotive entityLocomotive || !_startPosX.HasValue || !_startPosY.HasValue)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Pen pen = new(Color.Black);
|
||||
Brush additionalBrush = new SolidBrush(entityLocomotive.AdditionalColor);
|
||||
Brush bodyBrush = new SolidBrush(entityLocomotive.BodyColor);
|
||||
//Brush blackBrush = new SolidBrush(Color.Black);
|
||||
//Brush whiteBrush = new SolidBrush(Color.White);
|
||||
//g.FillRectangle(additionalBrush, _startPosX.Value + 5, _startPosY.Value + +10 + 20, 110, 20);
|
||||
g.DrawRectangle(pen, _startPosX.Value + 5, _startPosY.Value + 20 + 10, 110, 20);
|
||||
base.DrawTransport(g);
|
||||
if (entityLocomotive.ExehaustPipe)
|
||||
{
|
||||
Brush greyBrush = new SolidBrush(Color.Gray);
|
||||
g.FillRectangle(additionalBrush, _startPosX.Value + 80, _startPosY.Value, 5, 10);
|
||||
g.DrawRectangle(pen, _startPosX.Value + 80, _startPosY.Value, 5, 10);
|
||||
}
|
||||
// отсек для топлива
|
||||
if (entityLocomotive.FuelCompartment)
|
||||
{
|
||||
g.FillRectangle(additionalBrush, _startPosX.Value + 25, _startPosY.Value + 10 + 10, 10, 20);
|
||||
g.DrawRectangle(pen, _startPosX.Value + 25, _startPosY.Value + 10 + 10, 10, 20);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
namespace LocomativeProject.Entities
|
||||
{
|
||||
/// <summary>
|
||||
/// Класс-сущность базовый тепловоз
|
||||
/// </summary>
|
||||
public class EntityBaseLocomotive
|
||||
{
|
||||
/// <summary>
|
||||
/// Скорость
|
||||
/// </summary>
|
||||
public int Speed { get; private set; }
|
||||
/// <summary>
|
||||
/// Вес
|
||||
/// </summary>
|
||||
public double Weight { get; private set; }
|
||||
/// <summary>
|
||||
/// Основной цвет
|
||||
/// </summary>
|
||||
public Color BodyColor { get; private set; }
|
||||
/// <summary>
|
||||
/// Шаг перемещения тепловоза
|
||||
/// </summary>
|
||||
public double Step => Speed * 100 / Weight;
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес тепловоза</param>
|
||||
/// <param name="bodyColor">Основной цвет</param>
|
||||
public EntityBaseLocomotive(int speed, double weight, Color bodyColor)
|
||||
{
|
||||
Speed = speed;
|
||||
Weight = weight;
|
||||
BodyColor = bodyColor;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
using LocomativeProject.Entities;
|
||||
|
||||
namespace LocomotiveProject.Entities
|
||||
{
|
||||
public class EntityLocomotive : EntityBaseLocomotive
|
||||
{
|
||||
public Color AdditionalColor { get; private set; }
|
||||
/// <summary>
|
||||
/// Признак (опция) наличие трубы
|
||||
/// </summary>
|
||||
public bool ExehaustPipe { get; private set; }
|
||||
/// <summary>
|
||||
/// Признак (опция) наличие топливного отсека
|
||||
/// </summary>
|
||||
public bool FuelCompartment { get; private set; }
|
||||
/// <summary>
|
||||
/// Конструктор сущности
|
||||
/// </summary>
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес тепловоза</param>
|
||||
/// <param name="bodyColor">Основной цвет</param>
|
||||
/// <param name="additionalColor">Дополнительный цвет</param>
|
||||
/// <param name="exehaustPipe">Признак наличия трубы</param>
|
||||
/// <param name="fuelCompartment">Признак наличия топливного отсека</param>
|
||||
public EntityLocomotive(int speed, double weight, Color bodyColor, Color additionalColor, bool exehaustPipe, bool fuelCompartment) : base(speed, weight, bodyColor)
|
||||
{
|
||||
AdditionalColor = additionalColor;
|
||||
ExehaustPipe = exehaustPipe;
|
||||
FuelCompartment = fuelCompartment;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,39 +0,0 @@
|
||||
namespace LocomativeProject
|
||||
{
|
||||
partial class Form1
|
||||
{
|
||||
/// <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()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(800, 450);
|
||||
this.Text = "Form1";
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
@ -1,10 +0,0 @@
|
||||
namespace LocomativeProject
|
||||
{
|
||||
public partial class Form1 : Form
|
||||
{
|
||||
public Form1()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net6.0-windows</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
26
LocomativeProject/LocomativeProject/LocomotiveProject.csproj
Normal file
26
LocomativeProject/LocomativeProject/LocomotiveProject.csproj
Normal file
@ -0,0 +1,26 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net7.0-windows7.0</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
</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>
|
298
LocomativeProject/LocomativeProject/LocomotiveProjectCollection.Designer.cs
generated
Normal file
298
LocomativeProject/LocomativeProject/LocomotiveProjectCollection.Designer.cs
generated
Normal file
@ -0,0 +1,298 @@
|
||||
namespace LocomativeProject
|
||||
{
|
||||
partial class LocomotiveProjectCollection
|
||||
{
|
||||
/// <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()
|
||||
{
|
||||
groupBox1 = new GroupBox();
|
||||
panelCompany = new Panel();
|
||||
buttonModifLocomotive = new Button();
|
||||
buttonAddLocomotive = new Button();
|
||||
maskedTextBox = new MaskedTextBox();
|
||||
buttonRefresh = new Button();
|
||||
buttonRemoveLocomotive = new Button();
|
||||
buttonGoToCheck = new Button();
|
||||
buttonCreateCompany = new Button();
|
||||
panelStorage = new Panel();
|
||||
buttonCollectionDel = new Button();
|
||||
listBoxCollection = new ListBox();
|
||||
buttonCollectionAdd = new Button();
|
||||
radioButtonList = new RadioButton();
|
||||
radioButtonMassive = new RadioButton();
|
||||
textBoxCollectionName = new TextBox();
|
||||
labelCollectionName = new Label();
|
||||
comboBoxSelectorCompany = new ComboBox();
|
||||
pictureBox = new PictureBox();
|
||||
groupBox1.SuspendLayout();
|
||||
panelCompany.SuspendLayout();
|
||||
panelStorage.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBox).BeginInit();
|
||||
SuspendLayout();
|
||||
//
|
||||
// groupBox1
|
||||
//
|
||||
groupBox1.Controls.Add(panelCompany);
|
||||
groupBox1.Controls.Add(buttonCreateCompany);
|
||||
groupBox1.Controls.Add(panelStorage);
|
||||
groupBox1.Controls.Add(comboBoxSelectorCompany);
|
||||
groupBox1.Dock = DockStyle.Right;
|
||||
groupBox1.Location = new Point(912, 0);
|
||||
groupBox1.Name = "groupBox1";
|
||||
groupBox1.Size = new Size(180, 581);
|
||||
groupBox1.TabIndex = 0;
|
||||
groupBox1.TabStop = false;
|
||||
groupBox1.Text = "Инструменты";
|
||||
//
|
||||
// panelCompany
|
||||
//
|
||||
panelCompany.Controls.Add(buttonModifLocomotive);
|
||||
panelCompany.Controls.Add(buttonAddLocomotive);
|
||||
panelCompany.Controls.Add(maskedTextBox);
|
||||
panelCompany.Controls.Add(buttonRefresh);
|
||||
panelCompany.Controls.Add(buttonRemoveLocomotive);
|
||||
panelCompany.Controls.Add(buttonGoToCheck);
|
||||
panelCompany.Dock = DockStyle.Bottom;
|
||||
panelCompany.Enabled = false;
|
||||
panelCompany.Location = new Point(3, 346);
|
||||
panelCompany.Name = "panelCompany";
|
||||
panelCompany.Size = new Size(174, 232);
|
||||
panelCompany.TabIndex = 9;
|
||||
//
|
||||
// buttonModifLocomotive
|
||||
//
|
||||
buttonModifLocomotive.Location = new Point(15, 38);
|
||||
buttonModifLocomotive.Name = "buttonModifLocomotive";
|
||||
buttonModifLocomotive.Size = new Size(150, 43);
|
||||
buttonModifLocomotive.TabIndex = 2;
|
||||
buttonModifLocomotive.Text = "Добавление модиф поезда";
|
||||
buttonModifLocomotive.UseVisualStyleBackColor = true;
|
||||
buttonModifLocomotive.Click += ButtonModifLocomotive_Click;
|
||||
//
|
||||
// buttonAddLocomotive
|
||||
//
|
||||
buttonAddLocomotive.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
buttonAddLocomotive.Location = new Point(15, 6);
|
||||
buttonAddLocomotive.Name = "buttonAddLocomotive";
|
||||
buttonAddLocomotive.Size = new Size(150, 26);
|
||||
buttonAddLocomotive.TabIndex = 1;
|
||||
buttonAddLocomotive.Text = "Добавление поезда";
|
||||
buttonAddLocomotive.UseVisualStyleBackColor = true;
|
||||
buttonAddLocomotive.Click += ButtonAddLocomotive_Click;
|
||||
//
|
||||
// maskedTextBox
|
||||
//
|
||||
maskedTextBox.Location = new Point(15, 87);
|
||||
maskedTextBox.Mask = "00";
|
||||
maskedTextBox.Name = "maskedTextBox";
|
||||
maskedTextBox.Size = new Size(150, 23);
|
||||
maskedTextBox.TabIndex = 3;
|
||||
maskedTextBox.ValidatingType = typeof(int);
|
||||
//
|
||||
// buttonRefresh
|
||||
//
|
||||
buttonRefresh.Location = new Point(27, 190);
|
||||
buttonRefresh.Name = "buttonRefresh";
|
||||
buttonRefresh.Size = new Size(124, 39);
|
||||
buttonRefresh.TabIndex = 6;
|
||||
buttonRefresh.Text = "Обновить";
|
||||
buttonRefresh.UseVisualStyleBackColor = true;
|
||||
buttonRefresh.Click += ButtonRefresh_Click;
|
||||
//
|
||||
// buttonRemoveLocomotive
|
||||
//
|
||||
buttonRemoveLocomotive.Location = new Point(15, 116);
|
||||
buttonRemoveLocomotive.Name = "buttonRemoveLocomotive";
|
||||
buttonRemoveLocomotive.Size = new Size(150, 23);
|
||||
buttonRemoveLocomotive.TabIndex = 4;
|
||||
buttonRemoveLocomotive.Text = "Удалить поезд";
|
||||
buttonRemoveLocomotive.UseVisualStyleBackColor = true;
|
||||
buttonRemoveLocomotive.Click += ButtonRemoveLocomotive_Click;
|
||||
//
|
||||
// buttonGoToCheck
|
||||
//
|
||||
buttonGoToCheck.Location = new Point(29, 145);
|
||||
buttonGoToCheck.Name = "buttonGoToCheck";
|
||||
buttonGoToCheck.Size = new Size(124, 39);
|
||||
buttonGoToCheck.TabIndex = 5;
|
||||
buttonGoToCheck.Text = "Передать на тесты";
|
||||
buttonGoToCheck.UseVisualStyleBackColor = true;
|
||||
buttonGoToCheck.Click += ButtonGoToCheck_Click;
|
||||
//
|
||||
// buttonCreateCompany
|
||||
//
|
||||
buttonCreateCompany.Location = new Point(18, 320);
|
||||
buttonCreateCompany.Name = "buttonCreateCompany";
|
||||
buttonCreateCompany.Size = new Size(150, 23);
|
||||
buttonCreateCompany.TabIndex = 8;
|
||||
buttonCreateCompany.Text = "Создать компанию";
|
||||
buttonCreateCompany.UseVisualStyleBackColor = true;
|
||||
buttonCreateCompany.Click += ButtonCreateCompany_Click;
|
||||
//
|
||||
// panelStorage
|
||||
//
|
||||
panelStorage.Controls.Add(buttonCollectionDel);
|
||||
panelStorage.Controls.Add(listBoxCollection);
|
||||
panelStorage.Controls.Add(buttonCollectionAdd);
|
||||
panelStorage.Controls.Add(radioButtonList);
|
||||
panelStorage.Controls.Add(radioButtonMassive);
|
||||
panelStorage.Controls.Add(textBoxCollectionName);
|
||||
panelStorage.Controls.Add(labelCollectionName);
|
||||
panelStorage.Dock = DockStyle.Top;
|
||||
panelStorage.Location = new Point(3, 19);
|
||||
panelStorage.Name = "panelStorage";
|
||||
panelStorage.Size = new Size(174, 266);
|
||||
panelStorage.TabIndex = 7;
|
||||
//
|
||||
// buttonCollectionDel
|
||||
//
|
||||
buttonCollectionDel.Location = new Point(15, 218);
|
||||
buttonCollectionDel.Name = "buttonCollectionDel";
|
||||
buttonCollectionDel.Size = new Size(150, 23);
|
||||
buttonCollectionDel.TabIndex = 6;
|
||||
buttonCollectionDel.Text = "Удалить коллекцию";
|
||||
buttonCollectionDel.UseVisualStyleBackColor = true;
|
||||
buttonCollectionDel.Click += ButtonCollectionDel_Click;
|
||||
//
|
||||
// listBoxCollection
|
||||
//
|
||||
listBoxCollection.FormattingEnabled = true;
|
||||
listBoxCollection.ItemHeight = 15;
|
||||
listBoxCollection.Location = new Point(15, 118);
|
||||
listBoxCollection.Name = "listBoxCollection";
|
||||
listBoxCollection.Size = new Size(150, 94);
|
||||
listBoxCollection.TabIndex = 5;
|
||||
//
|
||||
// buttonCollectionAdd
|
||||
//
|
||||
buttonCollectionAdd.Location = new Point(15, 89);
|
||||
buttonCollectionAdd.Name = "buttonCollectionAdd";
|
||||
buttonCollectionAdd.Size = new Size(150, 23);
|
||||
buttonCollectionAdd.TabIndex = 4;
|
||||
buttonCollectionAdd.Text = "Добавить коллекцию";
|
||||
buttonCollectionAdd.UseVisualStyleBackColor = true;
|
||||
buttonCollectionAdd.Click += ButtonCollectionAdd_Click;
|
||||
//
|
||||
// radioButtonList
|
||||
//
|
||||
radioButtonList.AutoSize = true;
|
||||
radioButtonList.Location = new Point(99, 64);
|
||||
radioButtonList.Name = "radioButtonList";
|
||||
radioButtonList.Size = new Size(66, 19);
|
||||
radioButtonList.TabIndex = 3;
|
||||
radioButtonList.TabStop = true;
|
||||
radioButtonList.Text = "Список";
|
||||
radioButtonList.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// radioButtonMassive
|
||||
//
|
||||
radioButtonMassive.AutoSize = true;
|
||||
radioButtonMassive.Location = new Point(15, 64);
|
||||
radioButtonMassive.Name = "radioButtonMassive";
|
||||
radioButtonMassive.Size = new Size(67, 19);
|
||||
radioButtonMassive.TabIndex = 2;
|
||||
radioButtonMassive.TabStop = true;
|
||||
radioButtonMassive.Text = "Массив";
|
||||
radioButtonMassive.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// textBoxCollectionName
|
||||
//
|
||||
textBoxCollectionName.Location = new Point(15, 35);
|
||||
textBoxCollectionName.Name = "textBoxCollectionName";
|
||||
textBoxCollectionName.Size = new Size(150, 23);
|
||||
textBoxCollectionName.TabIndex = 1;
|
||||
//
|
||||
// labelCollectionName
|
||||
//
|
||||
labelCollectionName.AutoSize = true;
|
||||
labelCollectionName.Location = new Point(29, 17);
|
||||
labelCollectionName.Name = "labelCollectionName";
|
||||
labelCollectionName.Size = new Size(122, 15);
|
||||
labelCollectionName.TabIndex = 0;
|
||||
labelCollectionName.Text = "Название коллекции";
|
||||
//
|
||||
// comboBoxSelectorCompany
|
||||
//
|
||||
comboBoxSelectorCompany.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
|
||||
comboBoxSelectorCompany.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
comboBoxSelectorCompany.FormattingEnabled = true;
|
||||
comboBoxSelectorCompany.Items.AddRange(new object[] { "Хранилище" });
|
||||
comboBoxSelectorCompany.Location = new Point(18, 291);
|
||||
comboBoxSelectorCompany.Name = "comboBoxSelectorCompany";
|
||||
comboBoxSelectorCompany.Size = new Size(150, 23);
|
||||
comboBoxSelectorCompany.TabIndex = 0;
|
||||
comboBoxSelectorCompany.SelectedIndexChanged += ComboBoxSelectorCompany_SelectedIndexChanged;
|
||||
//
|
||||
// pictureBox
|
||||
//
|
||||
pictureBox.Dock = DockStyle.Fill;
|
||||
pictureBox.Location = new Point(0, 0);
|
||||
pictureBox.Name = "pictureBox";
|
||||
pictureBox.Size = new Size(912, 581);
|
||||
pictureBox.TabIndex = 1;
|
||||
pictureBox.TabStop = false;
|
||||
//
|
||||
// LocomotiveProjectCollection
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
ClientSize = new Size(1092, 581);
|
||||
Controls.Add(pictureBox);
|
||||
Controls.Add(groupBox1);
|
||||
Name = "LocomotiveProjectCollection";
|
||||
Text = "Коллекция Крейсеров";
|
||||
groupBox1.ResumeLayout(false);
|
||||
panelCompany.ResumeLayout(false);
|
||||
panelCompany.PerformLayout();
|
||||
panelStorage.ResumeLayout(false);
|
||||
panelStorage.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBox).EndInit();
|
||||
ResumeLayout(false);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private GroupBox groupBox1;
|
||||
private ComboBox comboBoxSelectorCompany;
|
||||
private Button buttonAddLocomotive;
|
||||
private Button buttonModifLocomotive;
|
||||
private Button buttonRemoveLocomotive;
|
||||
private MaskedTextBox maskedTextBox;
|
||||
private PictureBox pictureBox;
|
||||
private Button buttonRefresh;
|
||||
private Button buttonGoToCheck;
|
||||
private Panel panelStorage;
|
||||
private TextBox textBoxCollectionName;
|
||||
private Label labelCollectionName;
|
||||
private RadioButton radioButtonMassive;
|
||||
private Button buttonCollectionDel;
|
||||
private ListBox listBoxCollection;
|
||||
private Button buttonCollectionAdd;
|
||||
private RadioButton radioButtonList;
|
||||
private Button buttonCreateCompany;
|
||||
private Panel panelCompany;
|
||||
}
|
||||
}
|
@ -0,0 +1,268 @@
|
||||
using LocomativeProject.Drawnings;
|
||||
using LocomotiveProject;
|
||||
using LocomotiveProject.CollectionGenericObjects;
|
||||
using LocomotiveProject.Drawnings;
|
||||
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 LocomativeProject;
|
||||
|
||||
public partial class LocomotiveProjectCollection : Form
|
||||
{
|
||||
/// <summary>
|
||||
/// Хранилище коллекций
|
||||
/// </summary>
|
||||
private readonly StorageCollection<DrawningBaseLocomotive> _storageCollection;
|
||||
/// <summary>
|
||||
/// Компания
|
||||
/// </summary>
|
||||
private AbstractCompany? _company = null;
|
||||
/// <summary>
|
||||
/// Консруктор
|
||||
/// </summary>
|
||||
public LocomotiveProjectCollection()
|
||||
{
|
||||
InitializeComponent();
|
||||
_storageCollection = new();
|
||||
}
|
||||
/// <summary>
|
||||
/// Выбор компании
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ComboBoxSelectorCompany_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
panelCompany.Enabled = false;
|
||||
}
|
||||
/// <summary>
|
||||
/// Создание объекта класса-перемещения
|
||||
/// </summary>
|
||||
/// <param name="type"> тип создаваемого объекта</param>
|
||||
private void CreateObject(string type)
|
||||
{
|
||||
if (_company == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Random rnd = new();
|
||||
DrawningBaseLocomotive DrawningBaseLocomotive;
|
||||
switch (type)
|
||||
{
|
||||
case nameof(DrawningBaseLocomotive):
|
||||
DrawningBaseLocomotive = new DrawningBaseLocomotive(rnd.Next(100, 300), rnd.Next(1000, 3000), GetColor(rnd));
|
||||
break;
|
||||
case nameof(DrawningLocomotive):
|
||||
DrawningBaseLocomotive = new DrawningLocomotive(rnd.Next(100, 300), rnd.Next(1000, 3000), GetColor(rnd), GetColor(rnd),
|
||||
Convert.ToBoolean(rnd.Next(0, 2)), Convert.ToBoolean(rnd.Next(0, 2)));
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
if (_company + DrawningBaseLocomotive != -1)
|
||||
{
|
||||
MessageBox.Show("Объект добавлен");
|
||||
pictureBox.Image = _company.Show();
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Не удалось добавить объект");
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Получение рандом цвета
|
||||
/// </summary>
|
||||
/// <param name="rnd"></param>
|
||||
/// <returns></returns>
|
||||
private static Color GetColor(Random rnd)
|
||||
{
|
||||
Color color = Color.FromArgb(rnd.Next(0, 256), rnd.Next(0, 256), rnd.Next(255, 256));
|
||||
ColorDialog dialog = new ColorDialog();
|
||||
if (dialog.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
color = dialog.Color;
|
||||
}
|
||||
return color;
|
||||
}
|
||||
/// <summary>
|
||||
/// Кнопка создания обычного крейсера
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonAddLocomotive_Click(object sender, EventArgs e) => CreateObject(nameof(DrawningBaseLocomotive));
|
||||
/// <summary>
|
||||
/// Кнопка создания модиф крейсера
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonModifLocomotive_Click(object sender, EventArgs e) => CreateObject(nameof(DrawningLocomotive));
|
||||
/// <summary>
|
||||
/// Кнопка удаления Крейсера
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonRemoveLocomotive_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (_company == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (string.IsNullOrEmpty(maskedTextBox.Text))
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (MessageBox.Show("Удалить объект?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
|
||||
{
|
||||
return;
|
||||
}
|
||||
int pos = Convert.ToInt32(maskedTextBox.Text);
|
||||
if (_company - pos != null)
|
||||
{
|
||||
MessageBox.Show("Объект удален");
|
||||
pictureBox.Image = _company.Show();
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("Не удалось удалить объект");
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Кнопка отправить на полигон для испытаний
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonGoToCheck_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (_company == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
DrawningBaseLocomotive baseLocomotive = null;
|
||||
int counter = 100;
|
||||
while (baseLocomotive == null)
|
||||
{
|
||||
baseLocomotive = _company.GetRandomObject();
|
||||
counter--;
|
||||
if (counter <= 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (baseLocomotive == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
LocomotiveProjectForm form = new() { SetLocomotive = baseLocomotive };
|
||||
form.ShowDialog();
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// Кнопка обновления компании
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonRefresh_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (_company != null)
|
||||
pictureBox.Image = _company.Show();
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonCollectionAdd_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (string.IsNullOrEmpty(textBoxCollectionName.Text) || (!radioButtonList.Checked && !radioButtonMassive.Checked))
|
||||
{
|
||||
MessageBox.Show("Не все данные заполнены", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
CollectionType collectionType = CollectionType.None;
|
||||
if (radioButtonMassive.Checked)
|
||||
{
|
||||
collectionType = CollectionType.Massive;
|
||||
}
|
||||
else if (radioButtonList.Checked)
|
||||
{
|
||||
collectionType = CollectionType.List;
|
||||
}
|
||||
|
||||
_storageCollection.AddCollection(textBoxCollectionName.Text, collectionType);
|
||||
RerfreshListBoxItems();
|
||||
}
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonCollectionDel_Click(object sender, EventArgs e)
|
||||
{
|
||||
// TODO прописать логику удаления элемента из коллекции
|
||||
// нужно убедиться, что есть выбранная коллекция
|
||||
// спросить у пользователя через MessageBox, что он подтверждает, что хочет удалить запись
|
||||
// удалить и обновить ListBox
|
||||
if (listBoxCollection.SelectedItem == null || listBoxCollection.SelectedIndex < 0)
|
||||
{
|
||||
MessageBox.Show("Коллекция для удаления не выбрана");
|
||||
return;
|
||||
}
|
||||
_storageCollection.DelCollection(listBoxCollection.SelectedItem.ToString());
|
||||
RerfreshListBoxItems();
|
||||
}
|
||||
/// <summary>
|
||||
/// Обновление списка в listBoxCollection
|
||||
/// </summary>
|
||||
private void RerfreshListBoxItems()
|
||||
{
|
||||
listBoxCollection.Items.Clear();
|
||||
for (int i = 0; i < _storageCollection.Keys?.Count; ++i)
|
||||
{
|
||||
string? colName = _storageCollection.Keys?[i];
|
||||
if (!string.IsNullOrEmpty(colName))
|
||||
{
|
||||
listBoxCollection.Items.Add(colName);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// Создание компании
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonCreateCompany_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (listBoxCollection.SelectedIndex < 0 || listBoxCollection.SelectedItem == null)
|
||||
{
|
||||
MessageBox.Show("Коллекция не выбрана");
|
||||
return;
|
||||
}
|
||||
|
||||
ICollectionGenericObjects<DrawningBaseLocomotive>? collection = _storageCollection[listBoxCollection.SelectedItem.ToString() ?? string.Empty];
|
||||
if (collection == null)
|
||||
{
|
||||
MessageBox.Show("Коллекция не проинициализирована");
|
||||
return;
|
||||
}
|
||||
|
||||
switch (comboBoxSelectorCompany.Text)
|
||||
{
|
||||
case "Хранилище":
|
||||
_company = new LocomotiveStation(pictureBox.Width, pictureBox.Height, collection);
|
||||
break;
|
||||
}
|
||||
|
||||
panelCompany.Enabled = true;
|
||||
RerfreshListBoxItems();
|
||||
}
|
||||
}
|
@ -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>
|
160
LocomativeProject/LocomativeProject/LocomotiveProjectForm.Designer.cs
generated
Normal file
160
LocomativeProject/LocomativeProject/LocomotiveProjectForm.Designer.cs
generated
Normal file
@ -0,0 +1,160 @@
|
||||
namespace LocomotiveProject
|
||||
{
|
||||
partial class LocomotiveProjectForm
|
||||
{
|
||||
/// <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()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LocomotiveProjectForm));
|
||||
pictureBox1 = new PictureBox();
|
||||
pictureBoxLocomotive = new PictureBox();
|
||||
buttonUp = new Button();
|
||||
buttonDown = new Button();
|
||||
buttonLeft = new Button();
|
||||
buttonRight = new Button();
|
||||
comboBox1 = new ComboBox();
|
||||
buttonStrategyStep = new Button();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBox1).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxLocomotive).BeginInit();
|
||||
SuspendLayout();
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
pictureBox1.Location = new Point(0, 0);
|
||||
pictureBox1.Name = "pictureBox1";
|
||||
pictureBox1.Size = new Size(100, 50);
|
||||
pictureBox1.TabIndex = 0;
|
||||
pictureBox1.TabStop = false;
|
||||
//
|
||||
// pictureBoxLocomotive
|
||||
//
|
||||
pictureBoxLocomotive.Dock = DockStyle.Fill;
|
||||
pictureBoxLocomotive.Location = new Point(0, 0);
|
||||
pictureBoxLocomotive.Name = "pictureBoxLocomotive";
|
||||
pictureBoxLocomotive.Size = new Size(880, 561);
|
||||
pictureBoxLocomotive.TabIndex = 1;
|
||||
pictureBoxLocomotive.TabStop = false;
|
||||
//
|
||||
// buttonUp
|
||||
//
|
||||
buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||
buttonUp.BackgroundImage = (Image)resources.GetObject("buttonUp.BackgroundImage");
|
||||
buttonUp.BackgroundImageLayout = ImageLayout.Stretch;
|
||||
buttonUp.Location = new Point(771, 473);
|
||||
buttonUp.Name = "buttonUp";
|
||||
buttonUp.Size = new Size(35, 35);
|
||||
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.Stretch;
|
||||
buttonDown.Location = new Point(771, 514);
|
||||
buttonDown.Name = "buttonDown";
|
||||
buttonDown.Size = new Size(35, 35);
|
||||
buttonDown.TabIndex = 4;
|
||||
buttonDown.UseVisualStyleBackColor = true;
|
||||
buttonDown.Click += ButtonMove_Click;
|
||||
//
|
||||
// buttonLeft
|
||||
//
|
||||
buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||
buttonLeft.BackgroundImage = (Image)resources.GetObject("buttonLeft.BackgroundImage");
|
||||
buttonLeft.BackgroundImageLayout = ImageLayout.Stretch;
|
||||
buttonLeft.Location = new Point(730, 514);
|
||||
buttonLeft.Name = "buttonLeft";
|
||||
buttonLeft.Size = new Size(35, 35);
|
||||
buttonLeft.TabIndex = 5;
|
||||
buttonLeft.UseVisualStyleBackColor = true;
|
||||
buttonLeft.Click += ButtonMove_Click;
|
||||
//
|
||||
// buttonRight
|
||||
//
|
||||
buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||
buttonRight.BackgroundImage = (Image)resources.GetObject("buttonRight.BackgroundImage");
|
||||
buttonRight.BackgroundImageLayout = ImageLayout.Stretch;
|
||||
buttonRight.Location = new Point(812, 514);
|
||||
buttonRight.Name = "buttonRight";
|
||||
buttonRight.Size = new Size(35, 35);
|
||||
buttonRight.TabIndex = 6;
|
||||
buttonRight.UseVisualStyleBackColor = true;
|
||||
buttonRight.Click += ButtonMove_Click;
|
||||
//
|
||||
// comboBox1
|
||||
//
|
||||
comboBox1.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
comboBox1.FormattingEnabled = true;
|
||||
comboBox1.Items.AddRange(new object[] { "К центру", "К краю" });
|
||||
comboBox1.Location = new Point(667, 12);
|
||||
comboBox1.Name = "comboBox1";
|
||||
comboBox1.Size = new Size(121, 23);
|
||||
comboBox1.TabIndex = 8;
|
||||
//
|
||||
// buttonStrategyStep
|
||||
//
|
||||
buttonStrategyStep.Location = new Point(713, 41);
|
||||
buttonStrategyStep.Name = "buttonStrategyStep";
|
||||
buttonStrategyStep.Size = new Size(75, 23);
|
||||
buttonStrategyStep.TabIndex = 9;
|
||||
buttonStrategyStep.Text = "Шаг";
|
||||
buttonStrategyStep.UseVisualStyleBackColor = true;
|
||||
buttonStrategyStep.Click += buttonStrategyStep_Click;
|
||||
//
|
||||
// LocomotiveProject
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
ClientSize = new Size(880, 561);
|
||||
Controls.Add(buttonStrategyStep);
|
||||
Controls.Add(comboBox1);
|
||||
Controls.Add(buttonRight);
|
||||
Controls.Add(buttonLeft);
|
||||
Controls.Add(buttonDown);
|
||||
Controls.Add(buttonUp);
|
||||
Controls.Add(pictureBoxLocomotive);
|
||||
Controls.Add(pictureBox1);
|
||||
Name = "LocomotiveProject";
|
||||
Text = "Тепловоз";
|
||||
((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxLocomotive).EndInit();
|
||||
ResumeLayout(false);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private PictureBox pictureBox1;
|
||||
private PictureBox pictureBoxLocomotive;
|
||||
private Button buttonUp;
|
||||
private Button buttonDown;
|
||||
private Button buttonLeft;
|
||||
private Button buttonRight;
|
||||
private ComboBox comboBox1;
|
||||
private Button buttonStrategyStep;
|
||||
}
|
||||
}
|
172
LocomativeProject/LocomativeProject/LocomotiveProjectForm.cs
Normal file
172
LocomativeProject/LocomativeProject/LocomotiveProjectForm.cs
Normal file
@ -0,0 +1,172 @@
|
||||
using LocomotiveProject;
|
||||
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;
|
||||
using LocomotiveProject.Entities;
|
||||
using LocomotiveProject.Drawnings;
|
||||
using LocomativeProject.Drawnings;
|
||||
using LocomativeProject.MovementStrategy;
|
||||
|
||||
namespace LocomotiveProject
|
||||
{
|
||||
public partial class LocomotiveProjectForm : Form
|
||||
{
|
||||
private DrawningBaseLocomotive? _drawningLocomotive;
|
||||
|
||||
private AbstractStrategy? _strategy;
|
||||
|
||||
public DrawningBaseLocomotive SetLocomotive
|
||||
{
|
||||
set
|
||||
{
|
||||
_drawningLocomotive = value;
|
||||
_drawningLocomotive.SetPictureSize(pictureBox1.Width, pictureBox1.Height);
|
||||
comboBox1.Enabled = true;
|
||||
_strategy = null;
|
||||
Draw();
|
||||
}
|
||||
}
|
||||
|
||||
public LocomotiveProjectForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
_strategy = null;
|
||||
}
|
||||
|
||||
private void Draw()
|
||||
{
|
||||
if (_drawningLocomotive == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Bitmap bmp = new(pictureBoxLocomotive.Width, pictureBoxLocomotive.Height);
|
||||
Graphics gr = Graphics.FromImage(bmp);
|
||||
_drawningLocomotive.DrawTransport(gr);
|
||||
pictureBoxLocomotive.Image = bmp;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Создание объекта класса-перемещения
|
||||
/// </summary>
|
||||
/// <param name="type">Тип создаваемого объекта</param>
|
||||
private void CreateObject(string type)
|
||||
{
|
||||
Random random = new();
|
||||
switch (type)
|
||||
{
|
||||
case nameof(DrawningBaseLocomotive):
|
||||
_drawningLocomotive = new DrawningBaseLocomotive(random.Next(100, 300), random.Next(1000, 3000),
|
||||
Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)));
|
||||
break;
|
||||
case nameof(DrawningLocomotive):
|
||||
_drawningLocomotive = new DrawningLocomotive(random.Next(100, 300), random.Next(1000, 3000),
|
||||
Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)),
|
||||
Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)),
|
||||
Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)));
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
_drawningLocomotive.SetPictureSize(pictureBoxLocomotive.Width, pictureBoxLocomotive.Height);
|
||||
_drawningLocomotive.SetPosition(random.Next(10, 100), random.Next(10, 100));
|
||||
_strategy = null;
|
||||
comboBox1.Enabled = true;
|
||||
Draw();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обработка нажатия кнопки "Создать базовый поезд"
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonCreateBaseLocomotive_Click(object sender, EventArgs e) => CreateObject(nameof(DrawningBaseLocomotive));
|
||||
|
||||
/// <summary>
|
||||
/// Обработка нажатия кнопки "Создать продвинутый поезд"
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonCreateLocomotive_Click(object sender, EventArgs e) => CreateObject(nameof(DrawningLocomotive));
|
||||
|
||||
|
||||
private void ButtonMove_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (_drawningLocomotive == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
string name = ((Button)sender)?.Name ?? string.Empty;
|
||||
bool result = false;
|
||||
switch (name)
|
||||
{
|
||||
case "buttonUp":
|
||||
result = _drawningLocomotive.MoveTransport(DirectionType.Up);
|
||||
break;
|
||||
case "buttonDown":
|
||||
result = _drawningLocomotive.MoveTransport(DirectionType.Down);
|
||||
break;
|
||||
case "buttonLeft":
|
||||
result = _drawningLocomotive.MoveTransport(DirectionType.Left);
|
||||
break;
|
||||
case "buttonRight":
|
||||
result = _drawningLocomotive.MoveTransport(DirectionType.Right);
|
||||
break;
|
||||
}
|
||||
if (result)
|
||||
{
|
||||
Draw();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void buttonStrategyStep_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (_drawningLocomotive == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (comboBox1.Enabled)
|
||||
{
|
||||
_strategy = comboBox1.SelectedIndex switch
|
||||
{
|
||||
0 => new MoveToCenter(),
|
||||
1 => new MoveToBorder(),
|
||||
_ => null,
|
||||
};
|
||||
if (_strategy == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_strategy.SetData(new MoveableLocomotive(_drawningLocomotive), pictureBoxLocomotive.Width, pictureBoxLocomotive.Height);
|
||||
}
|
||||
|
||||
if (_strategy == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
comboBox1.Enabled = false;
|
||||
_strategy.MakeStep();
|
||||
Draw();
|
||||
|
||||
if (_strategy.GetStatus() == StrategyStatus.Finish)
|
||||
{
|
||||
comboBox1.Enabled = true;
|
||||
_strategy = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
649
LocomativeProject/LocomativeProject/LocomotiveProjectForm.resx
Normal file
649
LocomativeProject/LocomativeProject/LocomotiveProjectForm.resx
Normal file
@ -0,0 +1,649 @@
|
||||
<?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>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="buttonUp.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAN
|
||||
0AAADdABEGw9BwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAABm2SURBVHhe7dxZ
|
||||
rHb9WRbwFgRxoKJWqSJoBRUVtc444AAOHKDoqQcmHnjskYnGaKxoGUrpRNGKSkURrSIOgLOgojiAM4gz
|
||||
TiAVEBAlMUK9Hru239Ov9/e+e7/vs+//Wuv+Xcnv5Er6pTx7rXVfNE1f9u53vxsYIPmI+PXx5vjK+I74
|
||||
2vj8+E3xsdW/DjinsgTOI3n/+M3x3XEpnuSL41XVPwc4l7IEziH56PiquD7yT/Ot8euqfx5wHmUJHF/y
|
||||
K+N/xfVxf4i3xcurfzZwfGUJHFtyOf73+Y/8n+ZzwgiAEypL4LiSXxG3OP53jAA4obIEjin55XHL43/H
|
||||
CICTKUvgeJLHOv53jAA4kbIEjiX5ZfE8/4W/+zIC4CTKEjiO5BOi4/jfMQLgBMoSOIak+/jfMQLg4MoS
|
||||
2L/k42PF8b9jBMCBlSWwb8kvjf8Z1wd5Bf9jQXBQZQnsV7KX43/HCIADKktgn5JfEns6/neMADiYsgT2
|
||||
J9nr8b/zturfN7BPZQnsS/KL47u2Q7tnRgAcRFkC+5H8ojjC8b9jBMABlCWwD8nRjv8dIwB2riyB9ZKP
|
||||
iyMe/ztGAOxYWQJrJZfj/z+2Q3pkRgDsVFkC6yS/MM5w/O8YAbBDZQmskfyCONPxv/PZ1f+9wDplCfRL
|
||||
znr87xgBsCNlCfRKfn5853Yoz8wIgJ0oS6BPMuX43zECYAfKEuiR/LyYdPzvGAGwWFkCjy+5HP/v2A7i
|
||||
REYALFSWwONKPjYmH/87RgAsUpbA40l+bjj+LzACYIGyBB5H4vjXjABoVpbA7SU/J759O3i8r7dWvxvw
|
||||
OMoSuK3E8b8fIwCalCVwO8nPDsf//owAaFCWwG0kl+P/37fDxv0ZAfDIyhJ4fsnPCsf/2RkB8IjKEng+
|
||||
yc8Mx//5GQHwSMoSeHbJ5fh/23bAeH5GADyCsgSeTfIzwvG/PSMAbqwsgYdLHP/HZQTADZUl8DDJTw/H
|
||||
//EZAXAjZQncX3I5/t+6HSge31uqvwPwMGUJ3E/ymnD8+xkB8JzKEni6xPFfywiA51CWwJMlPy2+ZTtE
|
||||
rGMEwDMqS+ClJY7/vhgB8AzKEqglPzUc//0xAuCByhJ4X8nl+P+37eCwP0YAPEBZAu8t+Snh+O+fEQD3
|
||||
VJbAC5LL8X/XdmDYPyMA7qEsgfdIPiYc/+N5c/X3BF5QlsDlhjj+B2cEwBOUJUyX/OT45u2QcFxGALyE
|
||||
soTJEsf/XIwAKJQlTJX8pHD8z8cIgBcpS5gouRz//7odDM7HCIArZQnTJD8xHP/zMwJgU5YwSeL4z2IE
|
||||
QJQlTJF8dHzTdhiYwwhgvLKECRLHfzYjgNHKEs4u+QnxjdshYK43Vc8HTFCWcGaJ4881I4CRyhLOKvnx
|
||||
4fjzYkYA45QlnFFyOf7/Zfvgw4sZAYxSlnA2yY8Lx5+nMQIYoyzhTBLHn4cwAhihLOEsko+K/7x92OG+
|
||||
jABOryzhDBLHn+dhBHBqZQlHl3xk/KftQw7PygjgtMoSjixx/LklI4BTKks4quTHxn/cPtxwK2+snjc4
|
||||
srKEI0ocfx6TEcCplCUcTeL408EI4DTKEo4keXX8h+0DDY/NCOAUyhKOInH8WcEI4PDKEo4g+THxDdsH
|
||||
GboZARxaWcLeJY4/e2AEcFhlCXuW/Ohw/NkLI4BDKkvYq+Ry/P/99uGFvTACOJyyhD1KPiIcf/bqs6rn
|
||||
FvaqLGFvksvx/3fbhxb2ygjgMMoS9iRx/DkSI4BDKEvYi+TD499uH1Y4CiOA3StL2IPE8efIjAB2rSxh
|
||||
teRHxb/ZPqRwVEYAu1WWsFLi+HMmRgC7VJawSuL4c0ZGALtTlrBC8mHxr7cPJpyNEcCulCV0Sxx/JnhD
|
||||
9fzDCmUJnZIfGf9q+0DC2RkB7EJZQpfE8WciI4DlyhI6JJfj/y+3DyJMYwSwVFnCY0t+RDj+TGcEsExZ
|
||||
wmNKLsf/67cPIExnBLBEWcJjSV4Vjj+8NyOAdmUJjyG5HP9/sX3wgPdmBNCqLOHWEscfns4IoE1Zwi0l
|
||||
Hxpft33ggCczAmhRlnArieMPD/eZ1fsEt1SWcAvJ5fh/7fZBAx7GCOBRlSU8r+SHh+MPz8cI4NGUJTyP
|
||||
5HL8//n2AQOejxHAoyhLeFbJDwvHH27LCODmyhKeRXI5/v9s+2ABt2UEcFNlCQ+VOP7w+IwAbqYs4SGS
|
||||
V8Y/3T5QwOMyAriJsoT7Shx/6GcE8NzKEu4juRz/f7J9kIBer6/eS7ivsoSnSX5oOP6wlhHAMytLeJLk
|
||||
cvz/8fYBAtYyAngmZQkvJXH8YX+MAB6sLKGS/JD4R9sHB9gXI4AHKUt4scTxh/0zAri3soRryeX4/8Pt
|
||||
AwPsmxHAvZQl3El+cDj+cCxGAE9VlnCRXI7/12wfFOBYjACeqCwhcfzh+IwAXlJZMlvyIfHV2wcEOLbP
|
||||
qN5zKEvmSi7H/x9sHw7gHIwA3kdZMlPi+MN5GQG8l7JknuRy/P/+9qEAzskI4P8rS2ZJflA4/jCDEcD/
|
||||
U5bMkVyO/9/bPgzADEYAeRKKkhkSxx/mMgKGK0vOL3lF/N3tQwDMZAQMVpacW3I5/l+1fQCA2YyAocqS
|
||||
80ocf+DFPr36XnBuZck5JR8cf2d74QGuGQHDlCXnkzj+wNMYAYOUJeeSXI7/395ecIAnMQKGKEvOI3H8
|
||||
gYcyAgYoS84h+YHxldsLDfAQRsDJlSXHl1yO/9/aXmSAZ2EEnFhZcmyJ4w/cihFwUmXJcSWX4/83txcX
|
||||
4BaMgBMqS44p+QHh+AOP4dOq7w7HVZYcT3I5/n9je1EBHoMRcCJlybEkl+P/FdsLCvCYjICTKEuOI/n+
|
||||
4fgDnYyAEyhLjiG5HP8v315IgE5GwMGVJfuXOP7AakbAgZUl+5Zcjv9f315AgJWMgIMqS/Yr+X7x17YX
|
||||
D2APjIADKkv2KXH8gb0yAg6mLNmf5HL8/+r2ogHs0adW3y/2qSzZl+Ry/P/K9oIB7JkRcBBlyX4kjj9w
|
||||
NEbAAZQl+5B8UPzl7YUCOBIjYOfKkvUSxx84OiNgx8qStZLL8f9L2wsEcGRGwE6VJeskl+P/F7cXB+AM
|
||||
jIAdKkvWSL5vOP7AGRkBO1OW9Esux/8vbC8KwBkZATtSlvRKLsf/y7YXBODMXld9B+lXlvRJHH9gGiNg
|
||||
B8qSHsnl+H/p9kIATGIELFaWPL7kA+NLthcBYCIjYKGy5HEljj/AexgBi5Qljye5HP8/vz34ABgBS5Ql
|
||||
jyO5HP8/tz3wALzACGhWltxe4vgDPJkR0Kgsua3kA+LPbg84AC/NCGhSltxOcjn+f2Z7sAF4OiOgQVly
|
||||
G4njD/Bsfk/1XeV2ypLnl1yO/xdvDzIAD2cEPKKy5Pkkl+P/p7cHGIBnZwQ8krLk2SWOP8BtGQGPoCx5
|
||||
Nsn3iS/aHlgAbscIuLGy5OGSy/H/U9uDCsDtGQE3VJY8TOL4A/QwAm6kLLm/5HL8/+T2YALw+IyAGyhL
|
||||
7ie5HP93bg8kAH2MgOdUljxdcjn+f2J7EAHo97ur7zP3U5Y8WfL+4fgDrGcEPKOy5KUll+P/x7cHD4D1
|
||||
jIBnUJbUksvx/8LtgQNgP4yABypL3lfi+APsmxHwAGXJe0sux/+PbQ8YAPtlBNxTWfKC5HL8v2B7sADY
|
||||
PyPgHsqS90gux/+Pbg8UAMdhBDxFWXJ5dl72fuH4AxyXEfAEZTldcjn+f2R7gAA4rk+pvvPkp6nKyZLL
|
||||
8f/87cEB4PiMgEJZTpVcjv8f3h4YAM7DCHiRspwocfwBzs0IuFKW0ySX4/+O7QEB4LyMgE1ZTpJcjv/n
|
||||
bQ8GAOdnBERZTpFcjv8f2h4IAOYYPwLKcoLk5eH4A8w1egSU5dkll+P/B7cHAIC5xo6Asjyz5HL8/8D2
|
||||
hweA31Xdi7Mry7NKLsf/c7c/OADcGTcCyvKMEscfgCcZNQLK8mySy/H//dsfGABeypgRUJZnklyO/9u3
|
||||
PywAPM2IEVCWZ5Fcjv/v2/6gAHBfpx8BZXkGieMPwPM49Qgoy6NLLsf/925/QAB4VqcdAWV5ZMnl+H/O
|
||||
9ocDgOd1yhFQlkeWvO3qjwYAt/Da6uYcWVkeVfLZV38sALilU42AsjyixPEH4LGdZgSU5dEkb7364wDA
|
||||
YzrFCCjLI0necvVHAYAOhx8BZXkUyZuv/hgA0OnQI6AsjyB509UfAQBWOOwIKMu9Sxx/APbikCOgLPcs
|
||||
eePVjw4Ae3C4EVCWe5V81tWPDQB78jur27VXZblHyRuufmQA2KPDjICy3JvkM69+XADYs0OMgLLck8Tx
|
||||
B+Bodj8CynIvktdf/ZgAcCS7HgFluQfJZ1z9iABwRLsdAWW5WvLpVz8eABzZLkdAWa6UfNrVjwYAZ7C7
|
||||
EVCWqySvvfqxAOBMfmt1+1YpyxWST4zv3X4kADib74lPqG7gCmXZLXlVvCuufygAOJtvig+tbmG3suyW
|
||||
vH37YQDg7N5W3cJuZdkp+cD4tu1HAYCz+5b4gOomdirLTsknbz8IAEzxq6ub2KksOyWvu/pBAGCC11U3
|
||||
sVNZdkrecvWDAMAEb61uYqey7JR83tUPAgATvKO6iZ3KslPyxqsfBAAmeEN1EzuVZafk1179IAAwwSdV
|
||||
N7FTWXZKXhn+FwABmOL/xCuqm9ipLLslX7r9KABwdu+sbmG3suyWfGR89/bDAMBZfVd8eHULu5XlCsnv
|
||||
2H4cADir31LdwBXKcoXk/eJt2w8EAGfzpnh5dQNXKMuVkt++/VAAcBa/rbp5K5Xlaslr4gvj8t+UvP4B
|
||||
AeAoLjfscsteU9261cpyL5JXx2+IT40viq/gdL49rl8YmOSro3ovOK7LrbrcrMvtenV12/aiLKFLcnlh
|
||||
rj+IMMku/z9DZihL6JIYAExmALBMWUKXxABgMgOAZcoSuiQGAJMZACxTltAlMQCYzABgmbKELokBwGQG
|
||||
AMuUJXRJDAAmMwBYpiyhS2IAMJkBwDJlCV0SA4DJDACWKUvokhgATGYAsExZQpfEAGAyA4BlyhK6JAYA
|
||||
kxkALFOW0CUxAJjMAGCZsoQuiQHAZAYAy5QldEkMACYzAFimLKFLYgAwmQHAMmUJXRIDgMkMAJYpS+iS
|
||||
GABMZgCwTFlCl8QAYDIDgGXKErokBgCTGQAsU5bQJTEAmMwAYJmyhC6JAcBkBgDLlCV0SQwAJjMAWKYs
|
||||
oUtiADCZAcAyZQldEgOAyQwAlilL6JIYAExmALBMWUKXxABgMgOAZcoSuiQGAJMZACxTltAlMQCYzABg
|
||||
mbKELokBwGQGAMuUJXRJDAAmMwBYpiyhS2IAMJkBwDJlCV0SA4DJDACWKUvokhgATGYAsExZQpfEAGAy
|
||||
A4BlyhK6JAYAkxkALFOW0CUxAJjMAGCZsoQuiQHAZAYAy5QldEkMACYzAFimLKFLYgAwmQHAMmUJXRID
|
||||
gMkMAJYpS+iSGABMZgCwTFlCl8QAYDIDgGXKErokBgCTGQAsU5bQJTEAmMwAYJmyhC6JAcBkBgDLlCV0
|
||||
SQwAJjMAWKYsoUtiADCZAcAyZQldEgOAyQwAlilL6JIYAExmALBMWUKXxABgMgOAZcoSuiQGAJMZACxT
|
||||
ltAlMQCYzABgmbKELokBwGQGAMuUJXRJDAAmMwBYpiyhS2IAMJkBwDJlCV0SA4DJDACWKUvokhgATGYA
|
||||
sExZQpfEAGAyA4BlyhK6JAYAkxkALFOW0CUxAJjMAGCZsoQuiQHAZAYAy5QldEkMACYzAFimLKFLYgAw
|
||||
mQHAMmUJXRIDgMkMAJYpS+iSGABMZgCwTFlCl8QAYDIDgGXKErokBgCTGQAsU5bQJTEAmMwAYJmyhC6J
|
||||
AcBkBgDLlCV0SQwAJjMAWKYsoUtiADCZAcAyZQldEgOAyQwAlilL6JIYAExmALBMWUKXxABgMgOAZcoS
|
||||
uiQGAJMZACxTltAlMQCYzABgmbKELokBwGQGAMuUJXRJDAAmMwBYpiyhS2IAMJkBwDJlCV0SA4DJDACW
|
||||
KUvokhgATGYAsExZQpfEAGAyA4BlyhK6JAYAkxkALFOW0CUxAJjMAGCZsoQuiQHAZAYAy5QldEkMACYz
|
||||
AFimLKFLYgAwmQHAMmUJXRIDgMkMAJYpS+iSGABMZgCwTFlCl8QAYDIDgGXKErokBgCTGQAsU5bQJTEA
|
||||
mMwAYJmyhC6JAcBkBgDLlCV0SQwAJjMAWKYsoUtiADCZAcAyZQldEgOAyQwAlilL6JIYAExmALBMWUKX
|
||||
xABgMgOAZcoSuiQGAJMZACxTltAlMQCYzABgmbKELokBwGQGAMuUJXRJDAAmMwBYpiyhS2IAMJkBwDJl
|
||||
CV0SA4DJDACWKUvokhgATGYAsExZQpfEAGAyA4BlyhK6JAYAkxkALFOW0CUxAJjMAGCZsoQuiQHAZAYA
|
||||
y5QldEkMACYzAFimLKFLYgAwmQHAMmUJXRIDgMkMAJYpS+iSGABMZgCwTFlCl8QAYDIDgGXKErokBgCT
|
||||
GQAsU5bQJTEAmMwAYJmyhC6JAcBkBgDLlCV0SQwAJjMAWKYsoUtiADCZAcAyZQldEgOAyQwAlilL6JIY
|
||||
AExmALBMWUKXxABgMgOAZcoSuiQGAJMZACxTltAlMQCYzABgmbKELokBwGQGAMuUJXRJDAAmMwBYpiyh
|
||||
S2IAMJkBwDJlCV0SA4DJDACWKUvokhgATGYAsExZQpfEAGAyA4BlyhK6JAYAkxkALFOW0CUxAJjMAGCZ
|
||||
soQuiQHAZAYAy5QldEkMACYzAFimLKFLYgAwmQHAMmUJXRIDgMkMAJYpS+iSGABMZgCwTFlCl8QAYDID
|
||||
gGXKErokBgCTGQAsU5bQJTEAmMwAYJmyhC6JAcBkBgDLlCV0SQwAJjMAWKYsoUtiADCZAcAyZQldEgOA
|
||||
yQwAlilL6JIYAExmALBMWUKXxABgMgOAZcoSuiQGAJMZACxTltAlMQCYzABgmbKELokBwGQGAMuUJXRJ
|
||||
DAAmMwBYpiyhS2IAMJkBwDJlCV0SA4DJDACWKUvokhgATGYAsExZQpfEAGAyA4BlyhK6JAYAkxkALFOW
|
||||
0CUxAJjMAGCZsoQuiQHAZAYAy5QldEkMACYzAFimLKFLYgAwmQHAMmUJXRIDgMkMAJYpS+iSGABMZgCw
|
||||
TFlCl8QAYDIDgGXKErokBgCTGQAsU5bQJTEAmMwAYJmyhC6JAcBkBgDLlCV0SQwAJjMAWKYsoUtiADCZ
|
||||
AcAyZQldEgOAyQwAlilL6JIYAExmALBMWUKXxABgMgOAZcoSuiQGAJMZACxTltAlMQCYzABgmbKELokB
|
||||
wGQGAMuUJXRJDAAmMwBYpiyhS2IAMJkBwDJlCV0SA4DJDACWKUvokhgATGYAsExZQpfEAGAyA4BlyhK6
|
||||
JAYAkxkALFOW0CUxAJjMAGCZsoQuiQHAZAYAy5QldEkMACYzAFimLKFLYgAwmQHAMmUJXRIDgMkMAJYp
|
||||
S+iSGABMZgCwTFlCl8QAYDIDgGXKErokBgCTGQAsU5bQJTEAmMwAYJmyhC6JAcBkBgDLlCV0SQwAJjMA
|
||||
WKYsoUtiADCZAcAyZQldEgOAyQwAlilL6JIYAExmALBMWUKXxABgMgOAZcoSuiQGAJMZACxTltAlMQCY
|
||||
zABgmbKELokBwGQGAMuUJXRJDAAmMwBYpiyhS2IAMJkBwDJlCV0SA4DJDACWKUvokhgATGYAsExZQpfE
|
||||
AGAyA4BlyhK6JAYAkxkALFOW0CUxAJjMAGCZsoQuiQHAZAYAy5QldEkMACYzAFimLKFLYgAwmQHAMmUJ
|
||||
XRIDgMkMAJYpS+iSGABMZgCwTFlCl8QAYDIDgGXKErokBgCTGQAsU5bQJTEAmMwAYJmyhC6JAcBkBgDL
|
||||
lCV0SQwAJjMAWKYsoUtiADCZAcAyZQldEgOAyQwAlilL6JIYAExmALBMWUKXxABgMgOAZcoSuiQGAJMZ
|
||||
ACxTltAlMQCYzABgmbKELokBwGQGAMuUJXRJDAAmMwBYpiyhS2IAMJkBwDJlCV0SA4DJDACWKUvokhgA
|
||||
TGYAsExZQpfEAGAyA4BlyhK6JAYAkxkALFOW0CUxAJjMAGCZsoQuiQHAZAYAy5QldEkMACYzAFimLKFL
|
||||
YgAwmQHAMmUJXRIDgMkMAJYpS+iSGABMZgCwTFlCl8QAYDIDgGXKErokBgCTGQAsU5bQJTEAmMwAYJmy
|
||||
hC6JAcBkBgDLlCV0SQwAJjMAWKYsoUtiADCZAcAyZQldEgOAyQwAlilL6JIYAExmALBMWUKXxABgMgOA
|
||||
ZcoSuiQGAJMZACxTltAlMQCYzABgmbKELokBwGQGAMuUJXRJDAAmMwBYpiyhS2IAMJkBwDJlCV0SA4DJ
|
||||
DACWKUvokhgATGYAsExZQpfEAGAyA4BlyhK6JAYAkxkALFOW0CUxAJjMAGCZsoQuiQHAZAYAy5QldEkM
|
||||
ACYzAFimLKFLYgAwmQHAMmUJXRIDgMkMAJYpS+iSGABMZgCwTFlCl8QAYDIDgGXKErokBgCTGQAsU5bQ
|
||||
JTEAmMwAYJmyhC6JAcBkBgDLlCV0SQwAJjMAWKYsoUtiADCZAcAyZQldEgOAyQwAlilL6JIYAExmALBM
|
||||
WUKX5EuuPoYwzUdV7wV0KEvoknzK1ccQJvnOeHn1XkCHsoQuySdvH0OY5surdwK6lCV0ST7s6oMIk7y+
|
||||
eiegS1lCp+Trrz6KMMUnVu8DdClL6JR8XHzP9lGECd5ZvQvQqSyhW/KGq48jnNk3xyur9wA6lSV0Sz4o
|
||||
vi6uP5RwNt8bv6Z6B6BbWcIKyYfEO+L6gwln8Q3x8dWzDyuUJayUfFJ8Y1x/POHIPjc+uHreYZWyhNWS
|
||||
V8SvitfGl8W74vqDCnv1v+Nr4u3xG+Njqmcc1nr3y/4vo55jX7gxtEUAAAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
<data name="buttonDown.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</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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
|
||||
AABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="buttonRight.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
AAAASUVORK5CYII=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
@ -0,0 +1,140 @@
|
||||
namespace LocomativeProject.MovementStrategy
|
||||
{
|
||||
/// <summary>
|
||||
/// Класс-стратегия перемещения объекта
|
||||
/// </summary>
|
||||
public abstract class AbstractStrategy
|
||||
{
|
||||
/// <summary>
|
||||
/// Перемещаемый объект
|
||||
/// </summary>
|
||||
private IMoveableObject? _moveableObject;
|
||||
|
||||
/// <summary>
|
||||
/// Статус перемещения
|
||||
/// </summary>
|
||||
private StrategyStatus _state = StrategyStatus.NotInit;
|
||||
|
||||
/// <summary>
|
||||
/// Ширина поля
|
||||
/// </summary>
|
||||
protected int FieldWidth { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Высота поля
|
||||
/// </summary>
|
||||
protected int FieldHeight { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Получение статуса перемещения
|
||||
/// </summary
|
||||
public StrategyStatus 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 = StrategyStatus.NotInit;
|
||||
return;
|
||||
}
|
||||
|
||||
_state = StrategyStatus.InProgress;
|
||||
_moveableObject = moveableObject;
|
||||
FieldWidth = width;
|
||||
FieldHeight = height;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Шаг перемещения
|
||||
/// </summary>
|
||||
public void MakeStep()
|
||||
{
|
||||
if (_state != StrategyStatus.InProgress)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (IsTargetDestinaion())
|
||||
{
|
||||
_state = StrategyStatus.Finish;
|
||||
return;
|
||||
}
|
||||
|
||||
MoveToTarget();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Перемещение влево
|
||||
/// </summary>
|
||||
/// <returns>Результат перемещения (true - удалось переместиться, false - неудача)</returns>
|
||||
protected bool MoveLeft() => MoveTo(MovementDirection.Left);
|
||||
|
||||
/// <summary>
|
||||
/// Перемещение вправо
|
||||
/// </summary>
|
||||
/// <returns>Результат перемещения (true - удалось переместиться, false - неудача)</returns>
|
||||
protected bool MoveRight() => MoveTo(MovementDirection.Right);
|
||||
|
||||
/// <summary>
|
||||
/// Перемещение вверх
|
||||
/// </summary>
|
||||
/// <returns>Результат перемещения (true - удалось переместиться, false - неудача)</returns>
|
||||
protected bool MoveUp() => MoveTo(MovementDirection.Up);
|
||||
|
||||
/// <summary>
|
||||
/// Перемещение вниз
|
||||
/// </summary>
|
||||
/// <returns>Результат перемещения (true - удалось переместиться, false - неудача)</returns>
|
||||
protected bool MoveDown() => MoveTo(MovementDirection.Down);
|
||||
|
||||
/// <summary>
|
||||
/// Параметры объекта
|
||||
/// </summary>
|
||||
protected ObjectParameters? GetObjectParameters => _moveableObject?.GetObjectPosition;
|
||||
|
||||
/// <summary>
|
||||
/// Шаг объекта
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
protected int? GetStep()
|
||||
{
|
||||
if (_state != StrategyStatus.InProgress)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return _moveableObject?.GetStep;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Перемещение к цели
|
||||
/// </summary>
|
||||
protected abstract void MoveToTarget();
|
||||
|
||||
/// <summary>
|
||||
/// Достигнута ли цель
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
protected abstract bool IsTargetDestinaion();
|
||||
|
||||
/// <summary>
|
||||
/// Попытка перемещения в требуемом направлении
|
||||
/// </summary>
|
||||
/// <param name="movementDirection">Направление</param>
|
||||
/// <returns>Результат попытки (true - удалось переместиться, false - неудача)</returns>
|
||||
private bool MoveTo(MovementDirection movementDirection)
|
||||
{
|
||||
if (_state != StrategyStatus.InProgress)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return _moveableObject?.TryMoveObject(movementDirection) ?? false;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
namespace LocomativeProject.MovementStrategy;
|
||||
/// <summary>
|
||||
/// Интерфейс для работы с перемещаемым объектом
|
||||
/// </summary>
|
||||
public interface IMoveableObject
|
||||
{
|
||||
/// <summary>
|
||||
/// Получение координаты объекта
|
||||
/// </summary>
|
||||
ObjectParameters? GetObjectPosition { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Шаг объекта
|
||||
/// </summary>
|
||||
int GetStep { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Попытка переместить объект в указанном направлении
|
||||
/// </summary>
|
||||
/// <param name="direction">Направление</param>
|
||||
/// <returns>true - объект перемещен, false - перемещение невозможно</returns>
|
||||
bool TryMoveObject(MovementDirection direction);
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace LocomativeProject.MovementStrategy;
|
||||
|
||||
public class MoveToBorder : AbstractStrategy
|
||||
{
|
||||
protected override bool IsTargetDestinaion()
|
||||
{
|
||||
ObjectParameters? objParams = GetObjectParameters;
|
||||
if (objParams == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return objParams.RightBorder - GetStep() <= FieldWidth && objParams.DownBorder - GetStep() < FieldHeight &&
|
||||
objParams.RightBorder + GetStep() >= FieldWidth && objParams.DownBorder + GetStep() >= FieldHeight;
|
||||
}
|
||||
|
||||
protected override void MoveToTarget()
|
||||
{
|
||||
ObjectParameters? objParams = GetObjectParameters;
|
||||
if (objParams == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (objParams.RightBorder + GetStep() <= FieldWidth)
|
||||
{
|
||||
MoveRight();
|
||||
}
|
||||
if (objParams.DownBorder + GetStep() <= FieldHeight)
|
||||
{
|
||||
MoveDown();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,54 @@
|
||||
namespace LocomativeProject.MovementStrategy;
|
||||
|
||||
/// <summary>
|
||||
/// Стратегия перемещения объекта в центр экрана
|
||||
/// </summary>
|
||||
public class MoveToCenter : AbstractStrategy
|
||||
{
|
||||
protected override bool IsTargetDestinaion()
|
||||
{
|
||||
ObjectParameters? objParams = GetObjectParameters;
|
||||
if (objParams == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return objParams.ObjectMiddleHorizontal - GetStep() <= FieldWidth / 2 && objParams.ObjectMiddleHorizontal + GetStep() >= FieldWidth / 2 &&
|
||||
objParams.ObjectMiddleVertical - GetStep() <= FieldHeight / 2 && objParams.ObjectMiddleVertical + GetStep() >= FieldHeight / 2;
|
||||
}
|
||||
|
||||
protected override void MoveToTarget()
|
||||
{
|
||||
ObjectParameters? objParams = GetObjectParameters;
|
||||
if (objParams == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
int diffX = objParams.ObjectMiddleHorizontal - FieldWidth / 2;
|
||||
if (Math.Abs(diffX) > GetStep())
|
||||
{
|
||||
if (diffX > 0)
|
||||
{
|
||||
MoveLeft();
|
||||
}
|
||||
else
|
||||
{
|
||||
MoveRight();
|
||||
}
|
||||
}
|
||||
|
||||
int diffY = objParams.ObjectMiddleVertical - FieldHeight / 2;
|
||||
if (Math.Abs(diffY) > GetStep())
|
||||
{
|
||||
if (diffY > 0)
|
||||
{
|
||||
MoveUp();
|
||||
}
|
||||
else
|
||||
{
|
||||
MoveDown();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,64 @@
|
||||
using LocomativeProject.Drawnings;
|
||||
namespace LocomativeProject.MovementStrategy;
|
||||
|
||||
/// <summary>
|
||||
/// Класс-реализация IMoveableObject с использованием DrawningLocomotive
|
||||
/// </summary>
|
||||
public class MoveableLocomotive : IMoveableObject
|
||||
{
|
||||
/// <summary>
|
||||
/// Поле-объект класса DrawningBaseLocomotive или его наследника
|
||||
/// </summary>
|
||||
private readonly DrawningBaseLocomotive? _locomotive = null;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="_locomotive">Объект класса DrawningBaseLocomotive</param>
|
||||
public MoveableLocomotive(DrawningBaseLocomotive locomotive)
|
||||
{
|
||||
_locomotive = locomotive;
|
||||
}
|
||||
|
||||
public ObjectParameters? GetObjectPosition
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_locomotive == null || _locomotive._EntityLocomotive == null || !_locomotive.GetPosX.HasValue || !_locomotive.GetPosY.HasValue)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return new ObjectParameters(_locomotive.GetPosX.Value, _locomotive.GetPosY.Value, _locomotive.GetWidth, _locomotive.GetHeight);
|
||||
}
|
||||
}
|
||||
|
||||
public int GetStep => (int)(_locomotive?._EntityLocomotive?.Step ?? 0);
|
||||
|
||||
public bool TryMoveObject(MovementDirection direction)
|
||||
{
|
||||
if (_locomotive == null || _locomotive._EntityLocomotive == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return _locomotive.MoveTransport(GetDirectionType(direction));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Конвертация из MovementDirection в DirectionType
|
||||
/// </summary>
|
||||
/// <param name="direction">MovementDirection</param>
|
||||
/// <returns>DirectionType</returns>
|
||||
private static DirectionType GetDirectionType(MovementDirection direction)
|
||||
{
|
||||
return direction switch
|
||||
{
|
||||
MovementDirection.Left => DirectionType.Left,
|
||||
MovementDirection.Right => DirectionType.Right,
|
||||
MovementDirection.Up => DirectionType.Up,
|
||||
MovementDirection.Down => DirectionType.Down,
|
||||
_ => DirectionType.Unknow,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,26 @@
|
||||
namespace LocomativeProject.MovementStrategy;
|
||||
/// <summary>
|
||||
/// Направление перемещения
|
||||
/// </summary>
|
||||
public enum MovementDirection : byte
|
||||
{
|
||||
/// <summary>
|
||||
/// Вверх
|
||||
/// </summary>
|
||||
Up = 1,
|
||||
|
||||
/// <summary>
|
||||
/// Вниз
|
||||
/// </summary>
|
||||
Down,
|
||||
|
||||
/// <summary>
|
||||
/// Влево
|
||||
/// </summary>
|
||||
Left,
|
||||
|
||||
/// <summary>
|
||||
/// Вправо
|
||||
/// </summary>
|
||||
Right
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
namespace LocomativeProject.MovementStrategy;
|
||||
/// <summary>
|
||||
/// Параметры-координаты объекта
|
||||
/// </summary>
|
||||
public class ObjectParameters
|
||||
{
|
||||
/// <summary>
|
||||
/// Координата X
|
||||
/// </summary>
|
||||
private readonly int _x;
|
||||
|
||||
/// <summary>
|
||||
/// Координата Y
|
||||
/// </summary>
|
||||
private readonly int _y;
|
||||
|
||||
/// <summary>
|
||||
/// Ширина объекта
|
||||
/// </summary>
|
||||
private readonly int _width;
|
||||
|
||||
/// <summary>
|
||||
/// Высота объекта
|
||||
/// </summary>
|
||||
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;
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
namespace LocomativeProject.MovementStrategy;
|
||||
/// <summary>
|
||||
/// Статус выполнения операции перемещения
|
||||
/// </summary>
|
||||
public enum StrategyStatus
|
||||
{
|
||||
/// <summary>
|
||||
/// Все готово к началу
|
||||
/// </summary>
|
||||
NotInit,
|
||||
|
||||
/// <summary>
|
||||
/// Выполняется
|
||||
/// </summary>
|
||||
InProgress,
|
||||
|
||||
/// <summary>
|
||||
/// Завершено
|
||||
/// </summary>
|
||||
Finish
|
||||
}
|
@ -1,4 +1,6 @@
|
||||
namespace LocomativeProject
|
||||
using LocomativeProject;
|
||||
|
||||
namespace LocomotiveProject
|
||||
{
|
||||
internal static class Program
|
||||
{
|
||||
@ -11,7 +13,7 @@ namespace LocomativeProject
|
||||
// To customize application configuration such as set high DPI settings or default font,
|
||||
// see https://aka.ms/applicationconfiguration.
|
||||
ApplicationConfiguration.Initialize();
|
||||
Application.Run(new Form1());
|
||||
Application.Run(new LocomotiveProjectCollection());
|
||||
}
|
||||
}
|
||||
}
|
73
LocomativeProject/LocomativeProject/Properties/Resources.Designer.cs
generated
Normal file
73
LocomativeProject/LocomativeProject/Properties/Resources.Designer.cs
generated
Normal file
@ -0,0 +1,73 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// Этот код создан программой.
|
||||
// Исполняемая версия:4.0.30319.42000
|
||||
//
|
||||
// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае
|
||||
// повторной генерации кода.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace LocomotiveProject.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("LocomotiveProject.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;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Поиск локализованного ресурса типа System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap up_arrow {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("up-arrow", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -117,4 +117,8 @@
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="up-arrow" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\up-arrow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
BIN
LocomativeProject/LocomativeProject/Resources/up-arrow.png
Normal file
BIN
LocomativeProject/LocomativeProject/Resources/up-arrow.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.5 KiB |
2
desktop.ini
Normal file
2
desktop.ini
Normal file
@ -0,0 +1,2 @@
|
||||
[.ShellClassInfo]
|
||||
LocalizedResourceName=ÎÎÏ Êèðèëèí ÏÈáä11(final version)
|
BIN
source/img/arrow_down.png
Normal file
BIN
source/img/arrow_down.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.6 KiB |
BIN
source/img/arrow_left.png
Normal file
BIN
source/img/arrow_left.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.5 KiB |
BIN
source/img/arrow_right.png
Normal file
BIN
source/img/arrow_right.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.2 KiB |
BIN
source/img/arrow_up.png
Normal file
BIN
source/img/arrow_up.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.5 KiB |
Loading…
Reference in New Issue
Block a user