Правки 2лаб
This commit is contained in:
parent
a52eb31b45
commit
083ffec901
@ -6,27 +6,16 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
namespace Tank.MovementStrategy
|
namespace Tank.MovementStrategy
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// Класс-стратегия перемещения объекта
|
/// Класс-стратегия перемещения объекта
|
||||||
/// </summary>
|
|
||||||
public abstract class AbstractStrategy
|
public abstract class AbstractStrategy
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// Перемещаемый объект
|
/// Перемещаемый объект
|
||||||
/// </summary>
|
|
||||||
private IMoveableObject? _moveableObject;
|
private IMoveableObject? _moveableObject;
|
||||||
/// <summary>
|
|
||||||
/// Статус перемещения
|
/// Статус перемещения
|
||||||
/// </summary>
|
|
||||||
private Status _state = Status.NotInit;
|
private Status _state = Status.NotInit;
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Ширина поля
|
/// Ширина поля
|
||||||
/// </summary>
|
|
||||||
protected int FieldWidth { get; private set; }
|
protected int FieldWidth { get; private set; }
|
||||||
/// <summary>
|
|
||||||
/// Высота поля
|
/// Высота поля
|
||||||
/// </summary>
|
|
||||||
protected int FieldHeight { get; private set; }
|
protected int FieldHeight { get; private set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Статус перемещения
|
/// Статус перемещения
|
||||||
|
@ -6,27 +6,12 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
namespace Tank
|
namespace Tank
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// Направление перемещения
|
/// Направление перемещения
|
||||||
/// </summary>
|
|
||||||
public enum Direction
|
public enum Direction
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// Вверх
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
Up = 1,
|
Up = 1,
|
||||||
/// <summary>
|
|
||||||
/// Вниз
|
|
||||||
/// </summary>
|
|
||||||
Down = 2,
|
Down = 2,
|
||||||
/// <summary>
|
|
||||||
/// Влево
|
|
||||||
/// </summary>
|
|
||||||
Left = 3,
|
Left = 3,
|
||||||
/// <summary>
|
|
||||||
/// Вправо
|
|
||||||
/// </summary>
|
|
||||||
Right = 4
|
Right = 4
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ namespace Tank.DrawingObjects
|
|||||||
public int GetWidth => _ArmoredcarWidth;
|
public int GetWidth => _ArmoredcarWidth;
|
||||||
/// Высота объекта
|
/// Высота объекта
|
||||||
public int GetHeight => _ArmoredcarHeight;
|
public int GetHeight => _ArmoredcarHeight;
|
||||||
|
|
||||||
/// Ширина окна
|
/// Ширина окна
|
||||||
private int _pictureWidth;
|
private int _pictureWidth;
|
||||||
/// Высота окна
|
/// Высота окна
|
||||||
|
@ -7,8 +7,7 @@ using Tank.DrawingObjects;
|
|||||||
|
|
||||||
namespace Tank.MovementStrategy
|
namespace Tank.MovementStrategy
|
||||||
{
|
{
|
||||||
/// Реализация интерфейса IDrawningObject для работы с объектом DrawningCar
|
/// Реализация интерфейса IDrawningObject для работы с объектом DrawningCar (паттерн Adapter)
|
||||||
/// (паттерн Adapter)
|
|
||||||
public class DrawningObjectArmoredCar : IMoveableObject
|
public class DrawningObjectArmoredCar : IMoveableObject
|
||||||
{
|
{
|
||||||
private readonly DrawingArmoredCar? _drawningArmoredCar = null;
|
private readonly DrawingArmoredCar? _drawningArmoredCar = null;
|
||||||
|
@ -77,7 +77,7 @@ namespace Tank.DrawingObjects
|
|||||||
g.FillEllipse(brBlack, _startPosX + 55, _startPosY + 32, 10, 10);
|
g.FillEllipse(brBlack, _startPosX + 55, _startPosY + 32, 10, 10);
|
||||||
g.FillEllipse(brBlack, _startPosX + 75, _startPosY + 32, 10, 10);
|
g.FillEllipse(brBlack, _startPosX + 75, _startPosY + 32, 10, 10);
|
||||||
|
|
||||||
//кузов
|
//кузов
|
||||||
Brush br = new SolidBrush(ArmoredCar.BodyColor);
|
Brush br = new SolidBrush(ArmoredCar.BodyColor);
|
||||||
g.FillRectangle(br, _startPosX + 5, _startPosY + 17, 110, 18);
|
g.FillRectangle(br, _startPosX + 5, _startPosY + 17, 110, 18);
|
||||||
g.FillRectangle(br, _startPosX + 30, _startPosY, 50, 15);
|
g.FillRectangle(br, _startPosX + 30, _startPosY, 50, 15);
|
||||||
@ -162,9 +162,7 @@ namespace Tank.DrawingObjects
|
|||||||
//}
|
//}
|
||||||
///// <summary>
|
///// <summary>
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Прорисовка объекта
|
/// Прорисовка объекта
|
||||||
/// </summary>
|
|
||||||
/// <param name="g"></param>
|
/// <param name="g"></param>
|
||||||
//public void DrawTransport(Graphics g)
|
//public void DrawTransport(Graphics g)
|
||||||
//{
|
//{
|
||||||
|
@ -28,5 +28,6 @@ namespace Tank.Entites
|
|||||||
BodyColor = bodyColor;
|
BodyColor = bodyColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ namespace Tank.Entites
|
|||||||
public bool Trunk { get; private set; }
|
public bool Trunk { get; private set; }
|
||||||
// Признак (опция) наличия гоночной полосы
|
// Признак (опция) наличия гоночной полосы
|
||||||
public bool SportLine { get; private set; }
|
public bool SportLine { get; private set; }
|
||||||
// Шаг перемещения танка
|
/// Шаг перемещения танка
|
||||||
// public double Step => (double)Speed * 200 / Weight;
|
// public double Step => (double)Speed * 200 / Weight;
|
||||||
/// Инициализация полей объекта-класса спортивного автомобиля
|
/// Инициализация полей объекта-класса спортивного автомобиля
|
||||||
/// <param name="speed">Скорость</param>
|
/// <param name="speed">Скорость</param>
|
||||||
|
@ -115,7 +115,7 @@ namespace Tank
|
|||||||
_ => null,
|
_ => null,
|
||||||
};
|
};
|
||||||
if (_abstractStrategy == null)
|
if (_abstractStrategy == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
_abstractStrategy.SetData(new
|
_abstractStrategy.SetData(new
|
||||||
|
@ -18,5 +18,6 @@ namespace Tank.MovementStrategy
|
|||||||
bool CheckCanMove(Direction direction);
|
bool CheckCanMove(Direction direction);
|
||||||
/// Изменение направления пермещения объекта
|
/// Изменение направления пермещения объекта
|
||||||
void MoveObject(Direction direction);
|
void MoveObject(Direction direction);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,7 @@ namespace Tank.MovementStrategy
|
|||||||
}
|
}
|
||||||
return objParams.RightBorder + GetStep() >= FieldWidth && objParams.DownBorder + GetStep() >= FieldHeight;
|
return objParams.RightBorder + GetStep() >= FieldWidth && objParams.DownBorder + GetStep() >= FieldHeight;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void MoveToTarget()
|
protected override void MoveToTarget()
|
||||||
{
|
{
|
||||||
var objParams = GetObjectParameters;
|
var objParams = GetObjectParameters;
|
||||||
|
@ -7,6 +7,7 @@ using System.Threading.Tasks;
|
|||||||
namespace Tank.MovementStrategy
|
namespace Tank.MovementStrategy
|
||||||
{
|
{
|
||||||
/// Стратегия перемещения объекта в центр экрана
|
/// Стратегия перемещения объекта в центр экрана
|
||||||
|
|
||||||
public class MoveToCenter : AbstractStrategy
|
public class MoveToCenter : AbstractStrategy
|
||||||
{
|
{
|
||||||
protected override bool IsTargetDestinaion()
|
protected override bool IsTargetDestinaion()
|
||||||
|
@ -25,7 +25,7 @@ namespace Tank.MovementStrategy
|
|||||||
public int ObjectMiddleHorizontal => _x + _width / 2;
|
public int ObjectMiddleHorizontal => _x + _width / 2;
|
||||||
/// Середина объекта
|
/// Середина объекта
|
||||||
public int ObjectMiddleVertical => _y + _height / 2;
|
public int ObjectMiddleVertical => _y + _height / 2;
|
||||||
/// Конструктор
|
/// Конструктор
|
||||||
public ObjectParameters(int x, int y, int width, int height)
|
public ObjectParameters(int x, int y, int width, int height)
|
||||||
{
|
{
|
||||||
_x = x;
|
_x = x;
|
||||||
|
@ -9,7 +9,7 @@ namespace Tank.MovementStrategy
|
|||||||
/// Статус выполнения операции перемещения
|
/// Статус выполнения операции перемещения
|
||||||
public enum Status
|
public enum Status
|
||||||
{
|
{
|
||||||
NotInit,
|
NotInit,
|
||||||
InProgress,
|
InProgress,
|
||||||
Finish
|
Finish
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user