PIbd-23. Elatomtsev L.K. Lab work 02 #2
135
AircraftCarrier/AircraftCarrier/AbstractStrategy.cs
Normal file
135
AircraftCarrier/AircraftCarrier/AbstractStrategy.cs
Normal file
@ -0,0 +1,135 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using ProjectAircraftCarrier.DrawingObjects;
|
||||
|
||||
namespace ProjectAircraftCarrier.MovementStrategy
|
||||
{
|
||||
/// <summary>
|
||||
/// Класс-стратегия перемещения объекта
|
||||
/// </summary>
|
||||
public abstract class AbstractStrategy
|
||||
{
|
||||
/// <summary>
|
||||
/// Перемещаемый объект
|
||||
/// </summary>
|
||||
private IMoveableObject? _moveableObject;
|
||||
/// <summary>
|
||||
/// Статус перемещения
|
||||
/// </summary>
|
||||
private Status _state = Status.NotInit;
|
||||
/// <summary>
|
||||
/// Ширина поля
|
||||
/// </summary>
|
||||
protected int FieldWidth { get; private set; }
|
||||
/// <summary>
|
||||
/// Высота поля
|
||||
/// </summary>
|
||||
protected int FieldHeight { get; private set; }
|
||||
/// <summary>
|
||||
/// Статус перемещения
|
||||
/// </summary>
|
||||
public Status GetStatus() { return _state; }
|
||||
/// <summary>
|
||||
/// Установка данных
|
||||
/// </summary>
|
||||
/// <param name="moveableObject">Перемещаемый объект</param>
|
||||
/// <param name="width">Ширина поля</param>
|
||||
/// <param name="height">Высота поля</param>
|
||||
public void SetData(IMoveableObject moveableObject, int width, int
|
||||
height)
|
||||
{
|
||||
if (moveableObject == null)
|
||||
{
|
||||
_state = Status.NotInit;
|
||||
return;
|
||||
}
|
||||
_state = Status.InProgress;
|
||||
_moveableObject = moveableObject;
|
||||
FieldWidth = width;
|
||||
FieldHeight = height;
|
||||
}
|
||||
/// <summary>
|
||||
/// Шаг перемещения
|
||||
/// </summary>
|
||||
public void MakeStep()
|
||||
{
|
||||
if (_state != Status.InProgress)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (IsTargetDestinaion())
|
||||
{
|
||||
_state = Status.Finish;
|
||||
return;
|
||||
}
|
||||
MoveToTarget();
|
||||
}
|
||||
/// <summary>
|
||||
/// Перемещение влево
|
||||
/// </summary>
|
||||
/// <returns>Результат перемещения (true - удалось переместиться, false - неудача)</returns>
|
||||
protected bool MoveLeft() => MoveTo(DirectionType.Left);
|
||||
/// <summary>
|
||||
/// Перемещение вправо
|
||||
/// </summary>
|
||||
/// <returns>Результат перемещения (true - удалось переместиться, false - неудача)</returns>
|
||||
protected bool MoveRight() => MoveTo(DirectionType.Right);
|
||||
/// <summary>
|
||||
/// Перемещение вверх
|
||||
/// </summary>
|
||||
/// <returns>Результат перемещения (true - удалось переместиться, false - неудача)</returns>
|
||||
protected bool MoveUp() => MoveTo(DirectionType.Up);
|
||||
/// <summary>
|
||||
/// Перемещение вниз
|
||||
/// </summary>
|
||||
/// <returns>Результат перемещения (true - удалось переместиться, false - неудача)</returns>
|
||||
protected bool MoveDown() => MoveTo(DirectionType.Down);
|
||||
/// <summary>
|
||||
/// Параметры объекта
|
||||
/// </summary>
|
||||
protected ObjectParameters? GetObjectParameters =>
|
||||
_moveableObject?.GetObjectPosition;
|
||||
/// <summary>
|
||||
/// Шаг объекта
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
protected int? GetStep()
|
||||
{
|
||||
if (_state != Status.InProgress)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return _moveableObject?.GetStep;
|
||||
}
|
||||
/// <summary>
|
||||
/// Перемещение к цели
|
||||
/// </summary>
|
||||
protected abstract void MoveToTarget();
|
||||
/// <summary>
|
||||
/// Достигнута ли цель
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
protected abstract bool IsTargetDestinaion();
|
||||
/// <summary>
|
||||
/// Попытка перемещения в требуемом направлении
|
||||
/// </summary>
|
||||
/// <param name="directionType">Направление</param>
|
||||
/// <returns>Результат попытки (true - удалось переместиться, false - неудача)</returns>
|
||||
private bool MoveTo(DirectionType directionType)
|
||||
{
|
||||
if (_state != Status.InProgress)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (_moveableObject?.CheckCanMove(directionType) ?? false)
|
||||
{
|
||||
_moveableObject.MoveObject(directionType);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
@ -3,172 +3,49 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using ProjectAircraftCarrier.DrawingObjects;
|
||||
using ProjectAircraftCarrier.Entities;
|
||||
|
||||
namespace ProjectAircraftCarrier
|
||||
namespace ProjectAircraftCarrier.DrawingObjects
|
||||
{
|
||||
/// <summary>
|
||||
/// Класс, отвечающий за прорисовку и перемещение объекта-сущности
|
||||
/// </summary>
|
||||
internal class DrawingAircraftCarrier
|
||||
internal class DrawingAircraftCarrier : DrawingWarship
|
||||
{
|
||||
/// <summary>
|
||||
/// Класс-сущность
|
||||
/// </summary>
|
||||
public EntityAircraftCarrier? EntityAircraftCarrier { get; private set; }
|
||||
/// <summary>
|
||||
/// Ширина окна
|
||||
/// </summary>
|
||||
private int _pictureWidth;
|
||||
/// <summary>
|
||||
/// Высота окна
|
||||
/// </summary>
|
||||
private int _pictureHeight;
|
||||
/// <summary>
|
||||
/// Левая координата прорисовки авианосца
|
||||
/// </summary>
|
||||
private int _startPosX;
|
||||
/// <summary>
|
||||
/// Верхняя кооридната прорисовки авианосца
|
||||
/// </summary>
|
||||
private int _startPosY;
|
||||
/// <summary>
|
||||
/// Ширина прорисовки авианосца
|
||||
/// </summary>
|
||||
private readonly int _carrierWidth = 196;
|
||||
/// <summary>
|
||||
/// Высота прорисовки авианосца
|
||||
/// </summary>
|
||||
private readonly int _carrierHeight = 58;
|
||||
/// <summary>
|
||||
/// Инициализация свойств
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес</param>
|
||||
/// <param name="bodyColor">Цвет кузова</param>
|
||||
/// <param name="bodyColor">Основной цвет</param>
|
||||
/// <param name="additionalColor">Дополнительный цвет</param>
|
||||
/// <param name="cabin">Признак наличия кабины</param>
|
||||
/// <param name="runway">Признак наличия ввп</param>
|
||||
/// <param name="runway">Признак наличия антикрыла</param>
|
||||
/// <param name="cabin">Признак наличия гоночной полосы</param>
|
||||
/// <param name="width">Ширина картинки</param>
|
||||
/// <param name="height">Высота картинки</param>
|
||||
/// <returns>true - объект создан, false - проверка не пройдена,нельзя создать объект в этих размерах</returns>
|
||||
public bool Init(int speed, double weight, Color bodyColor, Color
|
||||
additionalColor, bool cabin, bool runway, int width, int height)
|
||||
public DrawingAircraftCarrier(int speed, double weight, Color bodyColor, Color additionalColor, bool runway, bool cabin, int width, int height) :
|
||||
base(speed, weight, bodyColor, width, height, 196, 58)
|
||||
{
|
||||
if (width < _carrierWidth || height < _carrierHeight)
|
||||
return false;
|
||||
_pictureWidth = width;
|
||||
_pictureHeight = height;
|
||||
EntityAircraftCarrier = new EntityAircraftCarrier();
|
||||
EntityAircraftCarrier.Init(speed, weight, bodyColor, additionalColor, cabin, runway);
|
||||
return true;
|
||||
}
|
||||
/// <summary>
|
||||
/// Установка позиции
|
||||
/// </summary>
|
||||
/// <param name="x">Координата X</param>
|
||||
/// <param name="y">Координата Y</param>
|
||||
public void SetPosition(int x, int y)
|
||||
{
|
||||
if (x < 0 || y < 0 || x + _carrierWidth > _pictureWidth || y + _carrierHeight > _pictureHeight)
|
||||
if (EntityWarship != null)
|
||||
{
|
||||
x = 0;
|
||||
y = 0;
|
||||
}
|
||||
_startPosX = x;
|
||||
_startPosY = y;
|
||||
}
|
||||
/// <summary>
|
||||
/// Изменение направления перемещения
|
||||
/// </summary>
|
||||
/// <param name="direction">Направление</param>
|
||||
public void MoveTransport(DirectionType direction)
|
||||
{
|
||||
if (EntityAircraftCarrier == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
switch (direction)
|
||||
{
|
||||
//влево
|
||||
case DirectionType.Left:
|
||||
if (_startPosX - EntityAircraftCarrier.Step > 0)
|
||||
{
|
||||
_startPosX -= (int)EntityAircraftCarrier.Step;
|
||||
}
|
||||
break;
|
||||
//вверх
|
||||
case DirectionType.Up:
|
||||
if (_startPosY - EntityAircraftCarrier.Step > 0)
|
||||
{
|
||||
_startPosY -= (int)EntityAircraftCarrier.Step;
|
||||
}
|
||||
break;
|
||||
// вправо
|
||||
case DirectionType.Right:
|
||||
if (_startPosX + _carrierWidth + EntityAircraftCarrier.Step < _pictureWidth)
|
||||
{
|
||||
_startPosX += (int)EntityAircraftCarrier.Step;
|
||||
}
|
||||
break;
|
||||
//вниз
|
||||
case DirectionType.Down:
|
||||
if (_startPosY + _carrierHeight + EntityAircraftCarrier.Step < _pictureHeight)
|
||||
{
|
||||
_startPosY += (int)EntityAircraftCarrier.Step;
|
||||
}
|
||||
break;
|
||||
EntityWarship = new EntityAircraftCarrier(speed, weight, bodyColor, additionalColor, runway, cabin);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Прорисовка объекта
|
||||
/// </summary>
|
||||
/// <param name="g"></param>
|
||||
public void DrawTransport(Graphics g)
|
||||
|
||||
public override void DrawTransport(Graphics g)
|
||||
{
|
||||
if (EntityAircraftCarrier == null)
|
||||
if (EntityWarship is not EntityAircraftCarrier aircraftCarrier)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Pen pen = new(Color.Black);
|
||||
Brush additionalBrush = new SolidBrush(EntityAircraftCarrier.AdditionalColor);
|
||||
Brush bodyBrush = new SolidBrush(EntityAircraftCarrier.BodyColor);
|
||||
//двигатели
|
||||
Point[] PointEngine1 = {
|
||||
new Point(_startPosX + 0, _startPosY + 11),
|
||||
new Point(_startPosX + 2, _startPosY + 11),
|
||||
new Point(_startPosX + 2, _startPosY + 24),
|
||||
new Point(_startPosX + 0, _startPosY + 24),
|
||||
};
|
||||
Point[] PointEngine2 = {
|
||||
new Point(_startPosX + 0, _startPosY + 31),
|
||||
new Point(_startPosX + 2, _startPosY + 31),
|
||||
new Point(_startPosX + 2, _startPosY + 44),
|
||||
new Point(_startPosX + 0, _startPosY + 44),
|
||||
};
|
||||
Brush brBlack = new SolidBrush(Color.Black);
|
||||
g.FillPolygon(brBlack, PointEngine1);
|
||||
g.DrawPolygon(pen, PointEngine1);
|
||||
g.FillPolygon(brBlack, PointEngine2);
|
||||
g.DrawPolygon(pen, PointEngine2);
|
||||
//границы авианосца
|
||||
Point[] PointBorders = {
|
||||
new Point(_startPosX + 4, _startPosY + 0),
|
||||
new Point(_startPosX + 142, _startPosY + 0),
|
||||
new Point(_startPosX + 196, _startPosY + 29),
|
||||
new Point(_startPosX + 142, _startPosY + 58),
|
||||
new Point(_startPosX + 4, _startPosY + 58),
|
||||
};
|
||||
g.FillPolygon(bodyBrush, PointBorders);
|
||||
g.DrawPolygon(pen, PointBorders);
|
||||
//отсеки
|
||||
g.DrawRectangle(pen, _startPosX + 98, _startPosY + 18, 10, 23);
|
||||
g.FillRectangle(additionalBrush, _startPosX + 99, _startPosY + 19, 9, 22);
|
||||
g.DrawRectangle(pen, _startPosX + 78, _startPosY + 23, 20, 13);
|
||||
g.FillRectangle(additionalBrush, _startPosX + 79, _startPosY + 24, 19, 12);
|
||||
g.DrawEllipse(pen, _startPosX + 138, _startPosY + 22, 11, 11);
|
||||
g.FillEllipse(additionalBrush, _startPosX + 138, _startPosY + 22, 11, 11);
|
||||
Brush additionalBrush = new
|
||||
SolidBrush(aircraftCarrier.AdditionalColor);
|
||||
|
||||
base.DrawTransport(g);
|
||||
//впп
|
||||
if (EntityAircraftCarrier.Runway)
|
||||
if (aircraftCarrier.Runway)
|
||||
{
|
||||
Pen penWhite = new Pen(Color.White, 3);
|
||||
Pen penThinWhite = new Pen(Color.White, 1);
|
||||
@ -177,7 +54,7 @@ additionalColor, bool cabin, bool runway, int width, int height)
|
||||
g.DrawLine(penThinWhite, _startPosX + 3, _startPosY + 20, _startPosX + 148, _startPosY + 3);
|
||||
}
|
||||
// кабина
|
||||
if (EntityAircraftCarrier.Cabin)
|
||||
if (aircraftCarrier.Cabin)
|
||||
{
|
||||
Point[] PointCabin = {
|
||||
new Point(_startPosX + 15, _startPosY + 42),
|
||||
|
39
AircraftCarrier/AircraftCarrier/DrawingObjectWarship.cs
Normal file
39
AircraftCarrier/AircraftCarrier/DrawingObjectWarship.cs
Normal file
@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using ProjectAircraftCarrier.DrawingObjects;
|
||||
|
||||
namespace ProjectAircraftCarrier.MovementStrategy
|
||||
{
|
||||
/// <summary>
|
||||
/// Реализация интерфейса IdrawingObject для работы с объектом drawingCar (паттерн Adapter)
|
||||
/// </summary>
|
||||
public class DrawingObjectWarship : IMoveableObject
|
||||
{
|
||||
private readonly DrawingWarship? _drawingWarship = null;
|
||||
public DrawingObjectWarship(DrawingWarship drawingWarship)
|
||||
{
|
||||
_drawingWarship = drawingWarship;
|
||||
}
|
||||
public ObjectParameters? GetObjectPosition
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_drawingWarship == null || _drawingWarship.EntityWarship ==
|
||||
null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return new ObjectParameters(_drawingWarship.GetPosX,
|
||||
_drawingWarship.GetPosY, _drawingWarship.GetWidth, _drawingWarship.GetHeight);
|
||||
}
|
||||
}
|
||||
public int GetStep => (int)(_drawingWarship?.EntityWarship?.Step ?? 0);
|
||||
public bool CheckCanMove(DirectionType direction) =>
|
||||
_drawingWarship?.CanMove(direction) ?? false;
|
||||
public void MoveObject(DirectionType direction) =>
|
||||
_drawingWarship?.MoveTransport(direction);
|
||||
}
|
||||
}
|
216
AircraftCarrier/AircraftCarrier/DrawingWarship.cs
Normal file
216
AircraftCarrier/AircraftCarrier/DrawingWarship.cs
Normal file
@ -0,0 +1,216 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using ProjectAircraftCarrier.Entities;
|
||||
|
||||
namespace ProjectAircraftCarrier.DrawingObjects
|
||||
{
|
||||
public class DrawingWarship
|
||||
{
|
||||
/// <summary>
|
||||
/// Класс-сущность
|
||||
/// </summary>
|
||||
public EntityWarship? EntityWarship { get; protected set; }
|
||||
/// <summary>
|
||||
/// Ширина окна
|
||||
/// </summary>
|
||||
private int _pictureWidth;
|
||||
/// <summary>
|
||||
/// Высота окна
|
||||
/// </summary>
|
||||
private int _pictureHeight;
|
||||
/// <summary>
|
||||
/// Левая координата прорисовки авианосца
|
||||
/// </summary>
|
||||
protected int _startPosX;
|
||||
/// <summary>
|
||||
/// Верхняя кооридната прорисовки авианосца
|
||||
/// </summary>
|
||||
protected int _startPosY;
|
||||
/// <summary>
|
||||
/// Ширина прорисовки авианосца
|
||||
/// </summary>
|
||||
private readonly int _warshipWidth = 196;
|
||||
/// <summary>
|
||||
/// Высота прорисовки авианосца
|
||||
/// </summary>
|
||||
private readonly int _warshipHeight = 58;
|
||||
/// <summary>
|
||||
/// Координата X объекта
|
||||
/// </summary>
|
||||
public int GetPosX => _startPosX;
|
||||
/// <summary>
|
||||
/// Координата Y объекта
|
||||
/// </summary>
|
||||
public int GetPosY => _startPosY;
|
||||
/// <summary>
|
||||
/// Ширина объекта
|
||||
/// </summary>
|
||||
public int GetWidth => _warshipWidth;
|
||||
/// <summary>
|
||||
/// Высота объекта
|
||||
/// </summary>
|
||||
public int GetHeight => _warshipHeight;
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес</param>
|
||||
/// <param name="bodyColor">Цвет кузова</param>
|
||||
/// <param name="width">Ширина картинки</param>
|
||||
/// <param name="height">Высота картинки</param>
|
||||
/// <returns>true - объект создан, false - проверка не пройдена,нельзя создать объект в этих размерах</returns>
|
||||
public DrawingWarship(int speed, double weight, Color bodyColor, int width, int height)
|
||||
{
|
||||
if (_warshipWidth > width || _warshipHeight > height)
|
||||
return;
|
||||
_pictureWidth = width;
|
||||
_pictureHeight = height;
|
||||
EntityWarship = new EntityWarship(speed, weight, bodyColor);
|
||||
}
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес</param>
|
||||
/// <param name="bodyColor">Основной цвет</param>
|
||||
/// <param name="width">Ширина картинки</param>
|
||||
/// <param name="height">Высота картинки</param>
|
||||
/// <param name="warshipWidth">Ширина прорисовки автомобиля</param>
|
||||
/// <param name="warshipHeight">Высота прорисовки автомобиля</param>
|
||||
protected DrawingWarship(int speed, double weight, Color bodyColor, int
|
||||
width, int height, int warshipWidth, int warshipHeight)
|
||||
{
|
||||
if (_warshipWidth > width || _warshipHeight > height)
|
||||
return;
|
||||
_pictureWidth = width;
|
||||
_pictureHeight = height;
|
||||
_warshipWidth = warshipWidth;
|
||||
_warshipHeight = warshipHeight;
|
||||
EntityWarship = new EntityWarship(speed, weight, bodyColor);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Установка позиции
|
||||
/// </summary>
|
||||
/// <param name="x">Координата X</param>
|
||||
/// <param name="y">Координата Y</param>
|
||||
public void SetPosition(int x, int y)
|
||||
{
|
||||
if (x < 0 || y < 0 || x + _warshipWidth > _pictureWidth || y + _warshipHeight > _pictureHeight)
|
||||
{
|
||||
x = 0;
|
||||
y = 0;
|
||||
}
|
||||
_startPosX = x;
|
||||
_startPosY = y;
|
||||
}
|
||||
/// <summary>
|
||||
/// Проверка, что объект может переместится по указанному направлению
|
||||
/// </summary>
|
||||
/// <param name="direction">Направление</param>
|
||||
/// <returns>true - можно переместится по указанному направлению</returns>
|
||||
public bool CanMove(DirectionType direction)
|
||||
{
|
||||
if (EntityWarship == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return direction switch
|
||||
{
|
||||
//влево
|
||||
DirectionType.Left => _startPosX - EntityWarship.Step > 0,
|
||||
//вверх
|
||||
DirectionType.Up => _startPosY - EntityWarship.Step > 0,
|
||||
// вправо
|
||||
DirectionType.Right => _startPosX + EntityWarship.Step + _warshipWidth < _pictureWidth,
|
||||
//вниз
|
||||
DirectionType.Down => _startPosY + EntityWarship.Step + _warshipHeight < _pictureHeight,
|
||||
_ => false,
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Изменение направления перемещения
|
||||
/// </summary>
|
||||
/// <param name="direction">Направление</param>
|
||||
public void MoveTransport(DirectionType direction)
|
||||
{
|
||||
if (!CanMove(direction) || EntityWarship == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
switch (direction)
|
||||
{
|
||||
//влево
|
||||
case DirectionType.Left:
|
||||
_startPosX -= (int)EntityWarship.Step;
|
||||
break;
|
||||
//вверх
|
||||
case DirectionType.Up:
|
||||
_startPosY -= (int)EntityWarship.Step;
|
||||
break;
|
||||
// вправо
|
||||
case DirectionType.Right:
|
||||
_startPosX += (int)EntityWarship.Step;
|
||||
break;
|
||||
//вниз
|
||||
case DirectionType.Down:
|
||||
_startPosY += (int)EntityWarship.Step;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Прорисовка объекта
|
||||
/// </summary>
|
||||
/// <param name="g"></param>
|
||||
public virtual void DrawTransport(Graphics g)
|
||||
{
|
||||
if (EntityWarship == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Pen pen = new(Color.Black);
|
||||
Brush br = new SolidBrush(EntityWarship.BodyColor);
|
||||
//двигатели
|
||||
Point[] PointEngine1 = {
|
||||
new Point(_startPosX + 0, _startPosY + 11),
|
||||
new Point(_startPosX + 2, _startPosY + 11),
|
||||
new Point(_startPosX + 2, _startPosY + 24),
|
||||
new Point(_startPosX + 0, _startPosY + 24),
|
||||
};
|
||||
Point[] PointEngine2 = {
|
||||
new Point(_startPosX + 0, _startPosY + 31),
|
||||
new Point(_startPosX + 2, _startPosY + 31),
|
||||
new Point(_startPosX + 2, _startPosY + 44),
|
||||
new Point(_startPosX + 0, _startPosY + 44),
|
||||
};
|
||||
Brush brBlack = new SolidBrush(Color.Black);
|
||||
g.FillPolygon(brBlack, PointEngine1);
|
||||
g.DrawPolygon(pen, PointEngine1);
|
||||
g.FillPolygon(brBlack, PointEngine2);
|
||||
g.DrawPolygon(pen, PointEngine2);
|
||||
//границы авианосца
|
||||
Point[] PointBorders = {
|
||||
new Point(_startPosX + 4, _startPosY + 0),
|
||||
new Point(_startPosX + 142, _startPosY + 0),
|
||||
new Point(_startPosX + 196, _startPosY + 29),
|
||||
new Point(_startPosX + 142, _startPosY + 58),
|
||||
new Point(_startPosX + 4, _startPosY + 58),
|
||||
};
|
||||
Brush brGray = new SolidBrush(Color.Gray);
|
||||
g.FillPolygon(br, PointBorders);
|
||||
g.DrawPolygon(pen, PointBorders);
|
||||
//отсеки
|
||||
g.DrawRectangle(pen, _startPosX + 98, _startPosY + 18, 10, 23);
|
||||
g.FillRectangle(brBlack, _startPosX + 99, _startPosY + 19, 9, 22);
|
||||
g.DrawRectangle(pen, _startPosX + 78, _startPosY + 23, 20, 13);
|
||||
g.FillRectangle(brBlack, _startPosX + 79, _startPosY + 24, 19, 12);
|
||||
g.DrawEllipse(pen, _startPosX + 138, _startPosY + 22, 11, 11);
|
||||
g.FillEllipse(brBlack, _startPosX + 138, _startPosY + 22, 11, 11);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,63 +1,44 @@
|
||||
using System;
|
||||
using ProjectAircraftCarrier.Entities;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ProjectAircraftCarrier
|
||||
namespace ProjectAircraftCarrier.Entities
|
||||
{
|
||||
/// <summary>
|
||||
/// Класс - сущность "Авианосец"
|
||||
/// Класс-сущность "Спортивный автомобиль"
|
||||
/// </summary>
|
||||
public class EntityAircraftCarrier
|
||||
public class EntityAircraftCarrier : EntityWarship
|
||||
{
|
||||
/// <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 Color AdditionalColor { get; private set; }
|
||||
/// <summary>
|
||||
/// Признак (опция) наличия кабины
|
||||
/// </summary>
|
||||
public bool Cabin { get; private set; }
|
||||
/// <summary>
|
||||
/// Признак (опция) наличия ввп
|
||||
/// Признак (опция) наличия антикрыла
|
||||
/// </summary>
|
||||
public bool Runway { get; private set; }
|
||||
/// <summary>
|
||||
/// Шаг перемещения авианосца
|
||||
/// Признак (опция) наличия гоночной полосы
|
||||
/// </summary>
|
||||
public double Step => (double)Speed * 100 / Weight;
|
||||
public bool Cabin { get; private set; }
|
||||
/// <summary>
|
||||
/// Инициализация полей объекта-класса спортивного авианосца
|
||||
/// Инициализация полей объекта-класса спортивного автомобиля
|
||||
/// </summary>
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес авианосца</param>
|
||||
/// <param name="weight">Вес автомобиля</param>
|
||||
/// <param name="bodyColor">Основной цвет</param>
|
||||
/// <param name="additionalColor">Дополнительный цвет</param>
|
||||
/// <param name="cabin">Признак наличия антикрыла</param>
|
||||
/// <param name="runway">Признак наличия гоночной полосы</param>
|
||||
|
||||
public void Init(int speed, double weight, Color bodyColor, Color
|
||||
additionalColor, bool cabin, bool runway)
|
||||
/// <param name="runway">Признак наличия антикрыла</param>
|
||||
/// <param name="cabin">Признак наличия гоночной полосы</param>
|
||||
public EntityAircraftCarrier(int speed, double weight, Color bodyColor, Color additionalColor, bool runway, bool cabin)
|
||||
: base(speed, weight, bodyColor)
|
||||
{
|
||||
Speed = speed;
|
||||
Weight = weight;
|
||||
BodyColor = bodyColor;
|
||||
AdditionalColor = additionalColor;
|
||||
Cabin = cabin;
|
||||
Runway = runway;
|
||||
Cabin = cabin;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
43
AircraftCarrier/AircraftCarrier/EntityWarship.cs
Normal file
43
AircraftCarrier/AircraftCarrier/EntityWarship.cs
Normal file
@ -0,0 +1,43 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ProjectAircraftCarrier.Entities
|
||||
{
|
||||
/// <summary>
|
||||
/// Класс-сущность "Автомобиль"
|
||||
/// </summary>
|
||||
public class EntityWarship
|
||||
{
|
||||
/// <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 => (double)Speed * 100 / Weight;
|
||||
/// <summary>
|
||||
/// Конструктор с параметрами
|
||||
/// </summary>
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес автомобиля</param>
|
||||
/// <param name="bodyColor">Основной цвет</param>
|
||||
public EntityWarship(int speed, double weight, Color bodyColor)
|
||||
{
|
||||
Speed = speed;
|
||||
Weight = weight;
|
||||
BodyColor = bodyColor;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,6 @@
|
||||
namespace ProjectAircraftCarrier
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace ProjectAircraftCarrier
|
||||
{
|
||||
partial class FormAircraftCarrier
|
||||
{
|
||||
@ -29,110 +31,160 @@
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormAircraftCarrier));
|
||||
pictureBoxAircraftCarrier = new PictureBox();
|
||||
buttonCreate = new Button();
|
||||
buttonUp = new Button();
|
||||
buttonCreateAircraftCarrier = new Button();
|
||||
buttonLeft = new Button();
|
||||
buttonDown = new Button();
|
||||
buttonRight = new Button();
|
||||
buttonUp = new Button();
|
||||
buttonDown = new Button();
|
||||
pictureBoxAircraftCarrier = new PictureBox();
|
||||
comboBoxStrategy = new ComboBox();
|
||||
buttonStep = new Button();
|
||||
buttonCreateWarship = new Button();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxAircraftCarrier).BeginInit();
|
||||
SuspendLayout();
|
||||
//
|
||||
// pictureBoxAircraftCarrier
|
||||
// buttonCreateAircraftCarrier
|
||||
//
|
||||
pictureBoxAircraftCarrier.Dock = DockStyle.Fill;
|
||||
pictureBoxAircraftCarrier.Location = new Point(0, 0);
|
||||
pictureBoxAircraftCarrier.Name = "pictureBoxAircraftCarrier";
|
||||
pictureBoxAircraftCarrier.Size = new Size(878, 444);
|
||||
pictureBoxAircraftCarrier.SizeMode = PictureBoxSizeMode.AutoSize;
|
||||
pictureBoxAircraftCarrier.TabIndex = 0;
|
||||
pictureBoxAircraftCarrier.TabStop = false;
|
||||
//
|
||||
// buttonCreate
|
||||
//
|
||||
buttonCreate.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
|
||||
buttonCreate.Location = new Point(12, 398);
|
||||
buttonCreate.Name = "buttonCreate";
|
||||
buttonCreate.Size = new Size(112, 34);
|
||||
buttonCreate.TabIndex = 1;
|
||||
buttonCreate.Text = "Create";
|
||||
buttonCreate.UseVisualStyleBackColor = true;
|
||||
buttonCreate.Click += ButtonCreate_Click;
|
||||
//
|
||||
// buttonUp
|
||||
//
|
||||
buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||
buttonUp.BackgroundImage = (Image)resources.GetObject("buttonUp.BackgroundImage");
|
||||
buttonUp.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
buttonUp.Location = new Point(800, 366);
|
||||
buttonUp.Name = "buttonUp";
|
||||
buttonUp.Size = new Size(30, 30);
|
||||
buttonUp.TabIndex = 2;
|
||||
buttonUp.UseVisualStyleBackColor = true;
|
||||
buttonUp.Click += ButtonMove_Click;
|
||||
buttonCreateAircraftCarrier.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
|
||||
buttonCreateAircraftCarrier.Location = new Point(4, 527);
|
||||
buttonCreateAircraftCarrier.Margin = new Padding(4, 3, 4, 3);
|
||||
buttonCreateAircraftCarrier.Name = "buttonCreateAircraftCarrier";
|
||||
buttonCreateAircraftCarrier.Size = new Size(193, 37);
|
||||
buttonCreateAircraftCarrier.TabIndex = 0;
|
||||
buttonCreateAircraftCarrier.Text = "Create Aircraft Carrier";
|
||||
buttonCreateAircraftCarrier.UseVisualStyleBackColor = true;
|
||||
buttonCreateAircraftCarrier.Click += ButtonCreateAircraftCarrier_Click;
|
||||
//
|
||||
// buttonLeft
|
||||
//
|
||||
buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||
buttonLeft.BackgroundImage = (Image)resources.GetObject("buttonLeft.BackgroundImage");
|
||||
buttonLeft.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
buttonLeft.Location = new Point(764, 402);
|
||||
buttonLeft.Location = new Point(969, 523);
|
||||
buttonLeft.Margin = new Padding(4, 3, 4, 3);
|
||||
buttonLeft.Name = "buttonLeft";
|
||||
buttonLeft.Size = new Size(30, 30);
|
||||
buttonLeft.TabIndex = 3;
|
||||
buttonLeft.Size = new Size(37, 37);
|
||||
buttonLeft.TabIndex = 1;
|
||||
buttonLeft.UseVisualStyleBackColor = true;
|
||||
buttonLeft.Click += ButtonMove_Click;
|
||||
//
|
||||
// buttonDown
|
||||
//
|
||||
buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||
buttonDown.BackgroundImage = (Image)resources.GetObject("buttonDown.BackgroundImage");
|
||||
buttonDown.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
buttonDown.Location = new Point(800, 402);
|
||||
buttonDown.Name = "buttonDown";
|
||||
buttonDown.Size = new Size(30, 30);
|
||||
buttonDown.TabIndex = 4;
|
||||
buttonDown.UseVisualStyleBackColor = true;
|
||||
buttonDown.Click += ButtonMove_Click;
|
||||
//
|
||||
// buttonRight
|
||||
//
|
||||
buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||
buttonRight.BackgroundImage = (Image)resources.GetObject("buttonRight.BackgroundImage");
|
||||
buttonRight.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
buttonRight.Location = new Point(836, 402);
|
||||
buttonRight.Location = new Point(1059, 523);
|
||||
buttonRight.Margin = new Padding(4, 3, 4, 3);
|
||||
buttonRight.Name = "buttonRight";
|
||||
buttonRight.Size = new Size(30, 30);
|
||||
buttonRight.TabIndex = 5;
|
||||
buttonRight.Size = new Size(37, 37);
|
||||
buttonRight.TabIndex = 2;
|
||||
buttonRight.UseVisualStyleBackColor = true;
|
||||
buttonRight.Click += ButtonMove_Click;
|
||||
//
|
||||
// buttonUp
|
||||
//
|
||||
buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||
buttonUp.BackgroundImage = (Image)resources.GetObject("buttonUp.BackgroundImage");
|
||||
buttonUp.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
buttonUp.Location = new Point(1014, 478);
|
||||
buttonUp.Margin = new Padding(4, 3, 4, 3);
|
||||
buttonUp.Name = "buttonUp";
|
||||
buttonUp.Size = new Size(37, 37);
|
||||
buttonUp.TabIndex = 3;
|
||||
buttonUp.UseVisualStyleBackColor = true;
|
||||
buttonUp.Click += ButtonMove_Click;
|
||||
//
|
||||
// buttonDown
|
||||
//
|
||||
buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
|
||||
buttonDown.BackgroundImage = (Image)resources.GetObject("buttonDown.BackgroundImage");
|
||||
buttonDown.BackgroundImageLayout = ImageLayout.Zoom;
|
||||
buttonDown.Location = new Point(1014, 523);
|
||||
buttonDown.Margin = new Padding(4, 3, 4, 3);
|
||||
buttonDown.Name = "buttonDown";
|
||||
buttonDown.Size = new Size(37, 37);
|
||||
buttonDown.TabIndex = 4;
|
||||
buttonDown.UseVisualStyleBackColor = true;
|
||||
buttonDown.Click += ButtonMove_Click;
|
||||
//
|
||||
// pictureBoxAircraftCarrier
|
||||
//
|
||||
pictureBoxAircraftCarrier.Dock = DockStyle.Fill;
|
||||
pictureBoxAircraftCarrier.Location = new Point(0, 0);
|
||||
pictureBoxAircraftCarrier.Margin = new Padding(4, 3, 4, 3);
|
||||
pictureBoxAircraftCarrier.Name = "pictureBoxAircraftCarrier";
|
||||
pictureBoxAircraftCarrier.Size = new Size(1103, 567);
|
||||
pictureBoxAircraftCarrier.SizeMode = PictureBoxSizeMode.CenterImage;
|
||||
pictureBoxAircraftCarrier.TabIndex = 5;
|
||||
pictureBoxAircraftCarrier.TabStop = false;
|
||||
//
|
||||
// comboBoxStrategy
|
||||
//
|
||||
comboBoxStrategy.DropDownStyle = ComboBoxStyle.DropDownList;
|
||||
comboBoxStrategy.FormattingEnabled = true;
|
||||
comboBoxStrategy.Items.AddRange(new object[] { "Move to center", "Move to border" });
|
||||
comboBoxStrategy.Location = new Point(923, 12);
|
||||
comboBoxStrategy.Margin = new Padding(4, 5, 4, 5);
|
||||
comboBoxStrategy.Name = "comboBoxStrategy";
|
||||
comboBoxStrategy.Size = new Size(171, 33);
|
||||
comboBoxStrategy.TabIndex = 6;
|
||||
//
|
||||
// buttonStep
|
||||
//
|
||||
buttonStep.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||
buttonStep.Location = new Point(989, 57);
|
||||
buttonStep.Margin = new Padding(4, 5, 4, 5);
|
||||
buttonStep.Name = "buttonStep";
|
||||
buttonStep.Size = new Size(107, 38);
|
||||
buttonStep.TabIndex = 7;
|
||||
buttonStep.Text = "Step";
|
||||
buttonStep.UseVisualStyleBackColor = true;
|
||||
buttonStep.Click += ButtonStep_Click;
|
||||
//
|
||||
// buttonCreateWarship
|
||||
//
|
||||
buttonCreateWarship.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
|
||||
buttonCreateWarship.Location = new Point(206, 525);
|
||||
buttonCreateWarship.Margin = new Padding(4, 3, 4, 3);
|
||||
buttonCreateWarship.Name = "buttonCreateWarship";
|
||||
buttonCreateWarship.Size = new Size(200, 38);
|
||||
buttonCreateWarship.TabIndex = 8;
|
||||
buttonCreateWarship.Text = "Create Warship";
|
||||
buttonCreateWarship.UseVisualStyleBackColor = true;
|
||||
buttonCreateWarship.Click += ButtonCreateWarship_Click;
|
||||
//
|
||||
// FormAircraftCarrier
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(10F, 25F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
ClientSize = new Size(878, 444);
|
||||
Controls.Add(buttonRight);
|
||||
ClientSize = new Size(1103, 567);
|
||||
Controls.Add(buttonCreateWarship);
|
||||
Controls.Add(buttonStep);
|
||||
Controls.Add(comboBoxStrategy);
|
||||
Controls.Add(buttonDown);
|
||||
Controls.Add(buttonLeft);
|
||||
Controls.Add(buttonUp);
|
||||
Controls.Add(buttonCreate);
|
||||
Controls.Add(buttonRight);
|
||||
Controls.Add(buttonLeft);
|
||||
Controls.Add(buttonCreateAircraftCarrier);
|
||||
Controls.Add(pictureBoxAircraftCarrier);
|
||||
Margin = new Padding(4, 3, 4, 3);
|
||||
Name = "FormAircraftCarrier";
|
||||
StartPosition = FormStartPosition.CenterScreen;
|
||||
Text = "AircraftCarrier";
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxAircraftCarrier).EndInit();
|
||||
ResumeLayout(false);
|
||||
PerformLayout();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private PictureBox pictureBoxAircraftCarrier;
|
||||
private Button buttonCreate;
|
||||
private Button buttonCreateAircraftCarrier;
|
||||
private Button buttonUp;
|
||||
private Button buttonLeft;
|
||||
private Button buttonDown;
|
||||
private Button buttonRight;
|
||||
private ComboBox comboBoxStrategy;
|
||||
private Button buttonStep;
|
||||
private Button buttonCreateWarship;
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,7 @@
|
||||
using ProjectAircraftCarrier.MovementStrategy;
|
||||
using ProjectAircraftCarrier.DrawingObjects;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace ProjectAircraftCarrier
|
||||
{
|
||||
public partial class FormAircraftCarrier : Form
|
||||
@ -5,7 +9,11 @@ namespace ProjectAircraftCarrier
|
||||
/// <summary>
|
||||
/// Ïîëå-îáúåêò äëÿ ïðîðèñîâêè îáúåêòà
|
||||
/// </summary>
|
||||
private DrawingAircraftCarrier? _drawingAircraftCarrier;
|
||||
private DrawingWarship? _drawingWarship;
|
||||
/// <summary>
|
||||
/// Ñòðàòåãèÿ ïåðåìåùåíèÿ
|
||||
/// </summary>
|
||||
private AbstractStrategy? _abstractStrategy;
|
||||
/// <summary>
|
||||
/// Èíèöèàëèçàöèÿ ôîðìû
|
||||
/// </summary>
|
||||
@ -18,13 +26,13 @@ namespace ProjectAircraftCarrier
|
||||
/// </summary>
|
||||
private void Draw()
|
||||
{
|
||||
if (_drawingAircraftCarrier == null)
|
||||
{
|
||||
if (_drawingWarship == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Bitmap bmp = new(pictureBoxAircraftCarrier.Width, pictureBoxAircraftCarrier.Height);
|
||||
Graphics gr = Graphics.FromImage(bmp);
|
||||
_drawingAircraftCarrier.DrawTransport(gr);
|
||||
_drawingWarship.DrawTransport(gr);
|
||||
pictureBoxAircraftCarrier.Image = bmp;
|
||||
|
||||
}
|
||||
@ -33,11 +41,10 @@ namespace ProjectAircraftCarrier
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonCreate_Click(object sender, EventArgs e)
|
||||
private void ButtonCreateAircraftCarrier_Click(object sender, EventArgs e)
|
||||
{
|
||||
Random random = new();
|
||||
_drawingAircraftCarrier = new DrawingAircraftCarrier();
|
||||
_drawingAircraftCarrier.Init(random.Next(100, 300),
|
||||
_drawingWarship = new DrawingAircraftCarrier(random.Next(100, 300),
|
||||
random.Next(1000, 3000),
|
||||
Color.FromArgb(random.Next(0, 256), random.Next(0, 256),
|
||||
random.Next(0, 256)),
|
||||
@ -46,18 +53,32 @@ namespace ProjectAircraftCarrier
|
||||
Convert.ToBoolean(random.Next(0, 2)),
|
||||
Convert.ToBoolean(random.Next(0, 2)),
|
||||
pictureBoxAircraftCarrier.Width, pictureBoxAircraftCarrier.Height);
|
||||
_drawingAircraftCarrier.SetPosition(random.Next(0, pictureBoxAircraftCarrier.Width),
|
||||
_drawingWarship.SetPosition(random.Next(0, pictureBoxAircraftCarrier.Width),
|
||||
random.Next(0, pictureBoxAircraftCarrier.Height));
|
||||
Draw();
|
||||
}
|
||||
/// <summary>
|
||||
/// Îáðàáîòêà íàæàòèÿ êíîïêè "Create Warship"
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonCreateWarship_Click(object sender, EventArgs e)
|
||||
{
|
||||
Random random = new();
|
||||
_drawingWarship = new DrawingWarship(random.Next(100, 300),
|
||||
random.Next(1000, 3000), Color.FromArgb(random.Next(0, 256),
|
||||
random.Next(0, 256), random.Next(0, 256)), pictureBoxAircraftCarrier.Width, pictureBoxAircraftCarrier.Height);
|
||||
_drawingWarship.SetPosition(random.Next(10, 100), random.Next(10, 100));
|
||||
Draw();
|
||||
}
|
||||
/// <summary>
|
||||
/// Îáðàáîòêà íàæàòèÿ êíîïîê äâèæåíèÿ
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonMove_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (_drawingAircraftCarrier == null)
|
||||
if (_drawingWarship == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@ -65,19 +86,57 @@ namespace ProjectAircraftCarrier
|
||||
switch (name)
|
||||
{
|
||||
case "buttonUp":
|
||||
_drawingAircraftCarrier.MoveTransport(DirectionType.Up);
|
||||
_drawingWarship.MoveTransport(DirectionType.Up);
|
||||
break;
|
||||
case "buttonDown":
|
||||
_drawingAircraftCarrier.MoveTransport(DirectionType.Down);
|
||||
_drawingWarship.MoveTransport(DirectionType.Down);
|
||||
break;
|
||||
case "buttonLeft":
|
||||
_drawingAircraftCarrier.MoveTransport(DirectionType.Left);
|
||||
_drawingWarship.MoveTransport(DirectionType.Left);
|
||||
break;
|
||||
case "buttonRight":
|
||||
_drawingAircraftCarrier.MoveTransport(DirectionType.Right);
|
||||
_drawingWarship.MoveTransport(DirectionType.Right);
|
||||
break;
|
||||
}
|
||||
Draw();
|
||||
}
|
||||
/// <summary>
|
||||
/// Îáðàáîòêà íàæàòèÿ êíîïêè "Øàã"
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonStep_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (_drawingWarship == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (comboBoxStrategy.Enabled)
|
||||
{
|
||||
_abstractStrategy = comboBoxStrategy.SelectedIndex switch
|
||||
{
|
||||
0 => new MoveToCenter(),
|
||||
1 => new MoveToBorder(),
|
||||
_ => null,
|
||||
};
|
||||
if (_abstractStrategy == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_abstractStrategy.SetData(new DrawingObjectWarship(_drawingWarship), pictureBoxAircraftCarrier.Width, pictureBoxAircraftCarrier.Height);
|
||||
comboBoxStrategy.Enabled = false;
|
||||
}
|
||||
if (_abstractStrategy == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_abstractStrategy.MakeStep();
|
||||
Draw();
|
||||
if (_abstractStrategy.GetStatus() == Status.Finish)
|
||||
{
|
||||
comboBoxStrategy.Enabled = true;
|
||||
_abstractStrategy = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -118,6 +118,195 @@
|
||||
<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="buttonLeft.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
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
|
||||
</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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
|
||||
</value>
|
||||
</data>
|
||||
<data name="buttonUp.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAA5gAAAOYBAMAAABC5kGOAAAABGdBTUEAALGPC/xhBQAAABJQTFRF5ubm
|
||||
@ -219,95 +408,6 @@
|
||||
pBOOkE44QjrhDI3DQBdodMIPGp3wg0Yn/KDRCT9odMIPGp3wg0Yn/KDRCT9odMIPGp3wg0Yn/KDRCT9o
|
||||
dMIPGp3wgxwGekI64QjphCOkE46QTjhCOuEI6YQjpBOOkE44QjrhCOmEI6QTjpBOOEI64QjphBc0+z+G
|
||||
ED9UnMHLKAAAAABJRU5ErkJggg==
|
||||
</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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
|
||||
</value>
|
||||
</data>
|
||||
<data name="buttonDown.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
@ -405,106 +505,6 @@
|
||||
QiY5DNRJMMEkPSaYYJIeE0wwSY8JJpikxwQTTNJjggkm6THBBJP0mInDQKlkJISSkRBKRkIoGQmhZCSE
|
||||
kpEQSkZCKBkJoWQkhJKREEpGQigZCaFkJISSkZBJDgN1EkwwSY8JJpikv0zp/814JuW3a02NAAAAAElF
|
||||
TkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="buttonRight.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAA5gAAAOYBAMAAABC5kGOAAAABGdBTUEAALGPC/xhBQAAABJQTFRF5ubm
|
||||
////AAAAIyMjycnJiIiI9drrEwAAFf5JREFUeNrtncuS28a2RBNhaU7ElX4AOJjrSuDcbNlzUpb//1dO
|
||||
89G2xNMPgqgC9k6tDE9WhxxRlSsAslm7CbXnbHQOmBlpwghpwghpwghpwghpwghpwghpwghpwghpwghp
|
||||
wghpwghpwghpwghpwgwf01x+BCZG0YQPiiZ8UDThg6IJHxRN+KBowgdFEz4omvBB0YQPiiZ8UDThg6IJ
|
||||
HxRN+KBowgc5DHRCmjBCmjBCmjBCmjBCmjBCmjBCmjBCmjBCmjBCmjBCmjBCmjBCmjBCmjBDcRhogaIJ
|
||||
HxRN+KBowgdFEz4omvBB0YQPiiZ8UDThg6IJHxRN+KBowgdFEz4omvBB0YQPchjohDRhhDRhhDRhhDRh
|
||||
hDRhhDRhhDRhhDRhhDRhhDRhhDRhhDRhhDRhhDRhhuIw0AJFEz4omvBB0YQPiiZ8UDThg6IJHxRN+KBo
|
||||
wgdFEz4omvBB0YQPiiZ8UDThg6IJH+Qw0Alpwghpwghpwghpwghpwghpwghpwghpwghpwghpwghpwghp
|
||||
wghpwghpwgzFYaAFiiZ8UDThg6IJHxRN+KBowgdFEz4omvBB0YQPiiZ8UDThg6IJHxRN+KBowgdFEz7I
|
||||
YaAT0oQR0oQR0oQR0oQR0oQR0oQR0oQR0oQR0oQR0oQR0oQR0oQR0oQR0oQZisNACxRN+KBowgdFEz4o
|
||||
mvBB0YQPiiZ8UDThg6IJHxRN+KBowgdFEz4omvBB0YQPiiZ8kMNAJ6QJI6QJI6QJI6QJI6QJI6QJI6QJ
|
||||
I6QJI6QJI6QJI6QJI6QJI6QJI6QJMxSHgRYomvBB0YQPiiZ8UDThg6IJHxRN+KBowgdFEz4omvBB0YQP
|
||||
iiZ8UDThg6IJHxRN+CCHgU5IE0ZIE0ZIE0ZIE0ZIE0ZIE0ZIE0ZIE0ZIE0ZIE0ZIE0ZIE0ZIE0ZIE2Yo
|
||||
DgMtUDThg6IJHxRN+KBowgdFEz6oX7yJ5vwzZDrgu7+3f39vkOmAf37uHrPdITM//tWdM+wsdqTcy5+H
|
||||
X7unbC12pNzLn4UfP/8js9s77Ei5lz8Lv/3rsut3BjtS7uXPwY/djxkMdqTcy5+D336Seb7R5t7Rr3v6
|
||||
9+HzzzL7gziczorvu6tsG2QmxebhWmb3fYPMpPj5f2T2O2TmxA//K/PxRpt8g8mXfze+757JPvkGky//
|
||||
bnxW5uWjA2Qmw9+ek9mNuTfY5l7+vfjDh+w/5ZB6g9nWWwofnpfZN5k3mG29hbB9Qeb5RotMiyvzfKNF
|
||||
ponMoUGmXGQeb7TITIXtyzL7Q+oN6hc8z3xZZjfsOJy2kfn00QEyHWT2h5wbVLL1FsPXZF4GgpBpIfPp
|
||||
Rptsg0q23mL4usyck5dKtt5i+LrMnJOXSrbeYviGzO5Twg0q2XqL4VsyTzfaZBtUsvUWw7dknm60yTao
|
||||
ZOsthm/KPA4EJdugkq23GL4t8/FGm2yDSrbeYvi2zG6LTB+Z3X6Ta4NSrvUWw1tk9rtcG+Q88/Ubba4N
|
||||
tsnWWwpvknkZcUemhczzZ7TI9JC5TbXB8Ausg7e9Zl7OqZFpcWWeR9yRaSIz1eRl+AVWwptldgdkmrxm
|
||||
dscRd2TaXJndiEwfmf98Rht+g+EXWAmnyBx2STYYfoF1sJ0i8+lGG36D4RdYCSfJ7M832vAbDL/ASjhJ
|
||||
5uM72jQbFOeZb2XMsEFFX2AtnCgzxeSloi+wFk6UmWLyUtEXWAunyjyOuEffoKIvsBZOlplg8lLRF1gL
|
||||
J8t8vNFG36CiL7AWTpcZf/JSCr7AWniHzPCTl1LwBdbCO2RePjpApoXMy2e0yLSQ+WUXeoNKZaAg3iXz
|
||||
9LgMZJrIPL2jRaaJzOM7WmSayDzeaOPKvPyESYNbL80Dh9PJD6d/tNkg00Zm5MnLVAYK4v0yA09epjJQ
|
||||
DtsZMvuwk5eZDAS5Mvuwk5epDBTEGTKfbrTxNpjKQEGcJfM84h5vg6kMlMN2lszzO9p4G8xkIMyVeR5x
|
||||
j7fBVAYK4jyZpxttvA2mMlAQZ8o83mjjbTCVgXLYzpX5eKONt8FMBiJdmacHwEXbYCoDBXG2zH+eSxRs
|
||||
g+I88458uXxGy+G0gczzQBAyWwuZ4SYvlVnIHCwhs/99I2S2HjLPI+7I9JDZfd8gs3WRGWvyUpmFzMEy
|
||||
MmNNXiqzkDlYSObjjRaZNjL7HTJtZD7eaMNsUJmFzMFiMgM9bVyZhczBYjJP3+IeY4PKLGQOlpMZ52nj
|
||||
yixkDhaU2R2CbJBJgwLpo0xeJhay8uH0DxkbIdNFZhdk8jKzkDlYVmaQycvMQmZgW1ZmkMnLxEICXZnH
|
||||
G22ADWYWMgdLywwxeZlZyBwsLTPE5GVmITOwLS7z/BBcZMrhyjx9i3uLTFnIPH6Le4tMechc/2njRn6m
|
||||
YFtB5vlGi0yLK/Pxl80WmXKRebzRrr1BcZ5ZKEPD4bSNzG6/QaaNzFUnL2XkZxJWkvnvZ7QrbFBGfiZh
|
||||
LZndipOXMvIzCavJfPqMdoUNysjPJKwmc8XJSxn5mYT1ZK43eSkjP5Owosxht9IGZeRnElaUudrTxmXk
|
||||
ZxLWlHm60a6wQRn5mYRVZQ4NMm1kHm+0K2xQRn4mYV2ZjzfaFTYoIz+TsLLMy0NwF5Z5+QmTBoWzyuSl
|
||||
j58Ah9M/5Omv45FpIPPp+ASZDjIvN1pkGrxmPt1okWlxZa4weemr63VcQOZpxB2ZJjIXn7z01fUqtkvI
|
||||
PN5okWlyZR5H3JFpI7PfIdNGZrdtl9ygr65XsV1I5ulb3BfboK2uGFfmsk8b99X1Oi4l8+kwbLENivPM
|
||||
illu8lK+uqLI7HfIrIzLyVxu8lK+usLIXGzyUr664sjsG2TayFxq8lK+ugLJXGjyUr66IsnsF5m8lK+u
|
||||
UDLHzQIblK+uSDLP3+IuZHrIHBZ42rh8dcWSucTTxvXL2FtbZn+60SLTQubpcRnINJF5utHWlXn5CZMG
|
||||
9XMccedwOvXh9A8ZkOkjs/uETB+ZtScvfxl7P2O7iszHGy0yK+A6MitPXt7z/7XN5vRfZlxJZv/7JobM
|
||||
Vpcfv/vjHOVFfevWSdXJy5v/YbP584tRPncr5XyjXVnm5q+u78js1Hza+K3/8NElKZJts7bM5mtHCqXe
|
||||
08Zv/IcfVnuN8Uu/W1kmF2bBPN5o15TJhVk0NZ82rjfPyv6vIwVTafLyRplr/Yptmn5s1pPJXbZ0qkxe
|
||||
3ibzfUfK5vLX8SvI5JfM8hlXk8lLZvlUmLy8SaaQWT4VJi9vksn7nxopP3l5k8x3HSmf44j7GldmRyqk
|
||||
+NPGb5L5sSM1Mm6QaZN+3yLTJgNXplE+IdMnZZ82ftNZGTKrpezkJTLXzbhBpk2+7JDpk6FBpk++b5Bp
|
||||
k4KTl7f8Qz6brZpyk5dcmeun2OQlMtfP00cHyHTIFplGOSDTJ32zmEzezVbPyJVplAMyfXI6p17ir8CQ
|
||||
uUAKTF4iM0zmT14iM0zmT14iM05mT14iM05mT14iM1AGrkyjjMj0yczJS2SGyoBMo4zI9MmXHTJ9MiDT
|
||||
KHtk+uT4jhaZLtnyV2BG+X735CUyw+X+yUtkxssWmUY5INMnlxstMi0y1pPJ3OziOXBl+qRvkOmTEZlG
|
||||
OSDTJ0ODTJ+MvJs1yoEr0ydDg0yfPD2X6GaZl3CeGTD94RUpHE4ny2XEHZkWGZHpky8HZPpkQKZRPiHT
|
||||
J1MmL5EZPQMyjbJHpk8uD8FFpkX+0yDTJ3tk+uRyfIJMixyQ6ZPzY4n4KzCLDG874nA6TQ7I9Mn/I9Mn
|
||||
IzJ9MiDTJ1/KyWRudu3c+HdEXJkZcvrrW2SaBJlGOSDTJ1yZRiknk3ezq4cr0yf8amKUvm35KzCXDBtx
|
||||
OO2S/yDTJv0nIdMmB2TaZBAybXLrQBcyE4RRS58MQqZL+v0GmS4Z+MMhm/AnfUbhj219wp/B+4QvqDDK
|
||||
pK+OufyE88yYOb2TvcURh9Ph0++FTJecP5RFpkOGnZBpkqfP8ZBpkPFNe3fIZG52lQxtDZlcmWuk51EY
|
||||
Pqn0kBpkrhAeH2UUHuzmk2qPXOTd7OIZmpYr0yU8ptgndz5A/BLOMyPlMvbz5gHmFSIzYm6drURm/Gxv
|
||||
na1EZvjcPluJzPC5fbYSmdGzbZHpkimzlcgMnn2LTJdMemAmMkPn9F2kyPTIpxaZLhlaZLrkfJNFpkXG
|
||||
FpkuGZqZMi8/4Txz/dwxW3mFyAyTsUWmS+6ZrURmzPSHFpkuuWu2Epkhc99s5R0ymZutnv6+2UquzIiZ
|
||||
MVuJzGC5fFyATIccWmS6ZNsi0yVPhyW8mzXIfsOV6ZLt/faQGSzHAfZCMi/hPHO1zJitvEJkrp1ti0yX
|
||||
zJqtRGas7FtkumTbItMlM2crkRkpn1pkumTubCUy46Q/rCDzfUdqZNysIPNdRypkaLSCTE5NauT4Dexr
|
||||
XJmfO1I8x8dcrCBT3zpSOqfHXKwgs0Fm8Zwfc1FY5uUnr5+V/daRwikzW3mFN/1DftEsnUKzlffI/MA7
|
||||
oMIpNFt5j8wNL5plU2q28h6Z7deOFEyx2cq7rkzus0VTbLbyLpkNl2bBbButKZMPgQqm8GzldJlcmuVy
|
||||
/LhgVZna/NWRItkWtHenTGwWyvkb2FeWqc2fX4yy2nuA75sIMtVuLj9+98c5SoxrfQxyeczF6jL/xfan
|
||||
ZMT2oVsl/e+KJjM/riXz+6b2BlX6YC0BriNzqLpB/TL2Isjsf0emjczSs5XIPOMaMovPViLzjCvI7PdC
|
||||
povM8rOVyDzj8jKHRsg0kVljthKZZ1xc5ripvkH9MvZWljk09TcoX12hZPZ3PhMcmbfgwjLHzQIblK+u
|
||||
SDIvN1lkOsg8LLJB+eoKJHNcZoOcZy6QerOVV2ir6w1cUma92UpknnBBmaexn0U26Ksrisyas5XIPGU5
|
||||
meePCxbZoK2uKFfmdsEN+up6HZeSeb7JItNCZv3Zyh/QV9eruNRr5rZdcoO2ukJcmf1u0Q366nodl5G5
|
||||
b5HpInNokenymnn8UhFkmlyZn1pkykTmsMoGxXlmhRwH2JfdoHx1vY71ZS4wW3mF8tX1OlaXucRs5RXK
|
||||
yM8krC1zkdnKK5SRn0lYW+Yis5VXKCM/k7CyzGVmK69QRn4mYV2Z/WGNDcrIzySsK3Nskekic2iQaSPz
|
||||
0CLTRea40gZl5GcSVpQ57FbaoIz8TMKKMg9rbVBGfiZhPZnjahuUkZ9JWE1m2WeCT0ImDUrn8pnsKhv0
|
||||
8RPjcHpcc4NGfiZhJZkLz1ZeoZGfSVhJ5qFFpstr5rZFpsuVufhs5RUa+ZmEVWTuW2TKROZ27Q0a+ZmC
|
||||
NV4zzx8XINPiytyvvkEjP5OwvMxh/Q1mFjIHi8t8+kwWmQavmWOADSYWEurK/OdZQshML7Ov9UzwySjO
|
||||
M+dmjLBBZRYyB8vKXGm28gqVWcgcLCqzP7TIdJE5xtigMguZgyVlnt/Jrr9BZRYyB0vKPATZoDILmYMF
|
||||
ZY5RNqjMQuZgOZl9E2WDyixkDpaTeQizQWUWMgeLydzG2aAyC5mDpWT2O2TayNxvkOkicxtpg8osZA6W
|
||||
kXn8BnZkmsg8fgN7IJmXnzBpcE+GYBtMLGT1w+n1ZyuvMLOQOVhC5j7aBjMLmYMFZA7hNpjKQDks8JoZ
|
||||
YbbyCjMZiHVljvE2mMpAQZwtM8Rs5RWmMlAQ58rs9wE3mMpAOZz9mjlukOlyZR6/HDjeBlMZKIjzZPaL
|
||||
PRN8EqYyUBDnyRxjVpfKQDmc95o57GJuMJOBKFdmv+AzwSdhKgMFcY7My1eqxdygOM+ckqePC8JtUKkM
|
||||
FMQZMg9RN6hUBgri/TK3YTeoVAYK4t0yI81WXqFSGSiId8uMNFt5hUploCDeK3PbCJkmMmPNVl6hUhko
|
||||
iHfKPH5cgEwPmdtGyGw9ZPa70BtUKgMF8S6Z3zehN6hUBgriPTJXeCb4JFTsyuvhHTLPN1lktg4yn54l
|
||||
hMz8MofwG2TS4NbE+d7KlzH8AivhZJkhZyuvMPwCK+FUmTFnK68w/AIr4USZ/V7IdHnNHFN0FX6BlXCa
|
||||
zPPHBeE3GH6BlXCSzLCzlVcYfoGVcJLM0LOVP2D4BdbBSa+Zwy7JBsMvsBJOkNmv+UzwSRh+gZVwgswx
|
||||
zQbDL7AS3i5zaJBp85p5aJHpcmWOLTJdZB6/gT3VBsV55osJPVt5hYq+wFp4o8xtpg0q+gJr4W0yg89W
|
||||
XqGiL7AWPtx8k0VmayFz26TaoKIvsBY+3HyTRWbrIDP8bOUVSrnWWwxvkLnNtkElW28xfLjhJotMG5n7
|
||||
FpkuMocWmS4yT9/AnmyDSrbeYvjw9k0WmSYyh4wbVLL1FsOHt2+y+WRefsKkwU/JMlt5hdnWWwpflXn5
|
||||
e3dkGsjMM1t5hdnWWwof3r7JIrPN/5qZaLbyCrOttxS+LLM/tMh0kTm2yHSRefwGdmSmwpdfMw8tMmVy
|
||||
ZY6ZN5htvaXwBZl9k3mD2dZbCNuvL99kkZkNf3v5JovMbPj+2ZvsLvcG29zLvxuflbk32KB+wfPMzefn
|
||||
brK5N6jcy5+B3567yebeoHIvfwY+PHeTzb1B5V7+DPx47XJokZkVP3x+5p1s7g0q9/Ln4Ldn3snm3pFy
|
||||
L38O/nyf3RrsSLmXPwu/Xd9kkZkXP/7wqvnJYUfKvfx5+PXqJovMzPjX028lO4sdKffy5+Kfpzvtduex
|
||||
I+Ve/mz84++//v7eCJkO2Jx/hkwwGP6y55mWSBNGSBNGSBNGSBNGSBNGSBNGSBNGSBNGSBNGSBNGSBNG
|
||||
SBNGSBNGSBNmKA4DLVA04YOiCR8UTfigaMIHRRM+KJrwQdGED4omfFA04YOiCR8UTfigaMIHRRM+KJrw
|
||||
QQ4DnZAmjJAmjJAmjJAmjJAmjJAmjJAmjJAmjJAmjJAmjJAmjJAmjJAmjJAmzFAcBlqgaMIHRRM+KJrw
|
||||
QdGED4omfFA04YOiCR8UTfigaMIHRRM+KJrwQdGED4omfFA04YMcBjohTRghTRghTRghTRghTRghTRgh
|
||||
TRghTRghTRghTRghTRghTRghTRghTZihOAy0QNGED4omfFA04YOiCR8UTfigaMIHRRM+KJrwQdGED4om
|
||||
fFA04YOiCR8UTfigaMIHOQx0QpowQpowQpowQpowQpowQpowQpowQpowQpowQpowQpowQpowQpowQpow
|
||||
Q3EYaIGiCR8UTfigaMIHRRM+KJrwQdGED4omfFA04YOiCR8UTfigaMIHRRM+KJrwQdGED3IY6IQ0YYQ0
|
||||
YYQ0YYQ0YYQ0YYQ0YYQ0YYQ0YYQ0YYQ0YYQ0YYQ0YYQ0YYQ0YYbiMNACRRM+KJrwQdGED4omfFA04YOi
|
||||
CR8UTfigaMIHRRM+KJrwQdGED4omfFA04YOiCR/kMNAJacIIacIIacIIacIIacIIacIIacIIacIIacII
|
||||
acIIacIIacIIacIIacIMxWGgBYomfFA04YOiCR8UTfigaMIHRRM+KJrwQdGED4omfFA04YOiCR8UTfig
|
||||
aMIHRRM+yGGgE9KEEdKEEdKEEdKEEdKEEdKEEdKEEdKEEdKEEdKEEdKEEdKEEdKEEdKEGYrDQAsUTfig
|
||||
aMIHRRM+KJpwwbb9L4jsPs2xdH95AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
35
AircraftCarrier/AircraftCarrier/IMoveableObject.cs
Normal file
35
AircraftCarrier/AircraftCarrier/IMoveableObject.cs
Normal file
@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using ProjectAircraftCarrier.DrawingObjects;
|
||||
|
||||
namespace ProjectAircraftCarrier.MovementStrategy
|
||||
{
|
||||
/// <summary>
|
||||
/// Интерфейс для работы с перемещаемым объектом
|
||||
/// </summary>
|
||||
public interface IMoveableObject
|
||||
{
|
||||
/// <summary>
|
||||
/// Получение координаты X объекта
|
||||
/// </summary>
|
||||
ObjectParameters? GetObjectPosition { get; }
|
||||
/// <summary>
|
||||
/// Шаг объекта
|
||||
/// </summary>
|
||||
int GetStep { get; }
|
||||
/// <summary>
|
||||
/// Проверка, можно ли переместиться по нужному направлению
|
||||
/// </summary>
|
||||
/// <param name="direction"></param>
|
||||
/// <returns></returns>
|
||||
bool CheckCanMove(DirectionType direction);
|
||||
/// <summary>
|
||||
/// Изменение направления пермещения объекта
|
||||
/// </summary>
|
||||
/// <param name="direction">Направление</param>
|
||||
void MoveObject(DirectionType direction);
|
||||
}
|
||||
}
|
44
AircraftCarrier/AircraftCarrier/MoveToBorder.cs
Normal file
44
AircraftCarrier/AircraftCarrier/MoveToBorder.cs
Normal file
@ -0,0 +1,44 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ProjectAircraftCarrier.MovementStrategy
|
||||
{
|
||||
/// <summary>
|
||||
/// Стратегия перемещения объекта в центр экрана
|
||||
/// </summary>
|
||||
public class MoveToBorder : AbstractStrategy
|
||||
{
|
||||
protected override bool IsTargetDestinaion()
|
||||
{
|
||||
var objParams = GetObjectParameters;
|
||||
if (objParams == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return objParams.RightBorder + GetStep() >= FieldWidth &&
|
||||
objParams.DownBorder + GetStep() >= FieldHeight;
|
||||
}
|
||||
|
||||
protected override void MoveToTarget()
|
||||
{
|
||||
var objParams = GetObjectParameters;
|
||||
if (objParams == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var diffX = objParams.RightBorder - FieldWidth;
|
||||
if (Math.Abs(diffX) > GetStep())
|
||||
{
|
||||
MoveRight();
|
||||
}
|
||||
var diffY = objParams.DownBorder - FieldHeight;
|
||||
if (Math.Abs(diffY) > GetStep())
|
||||
{
|
||||
MoveDown();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
59
AircraftCarrier/AircraftCarrier/MoveToCenter.cs
Normal file
59
AircraftCarrier/AircraftCarrier/MoveToCenter.cs
Normal file
@ -0,0 +1,59 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ProjectAircraftCarrier.MovementStrategy
|
||||
{
|
||||
/// <summary>
|
||||
/// Стратегия перемещения объекта в центр экрана
|
||||
/// </summary>
|
||||
public class MoveToCenter : AbstractStrategy
|
||||
{
|
||||
protected override bool IsTargetDestinaion()
|
||||
{
|
||||
var objParams = GetObjectParameters;
|
||||
if (objParams == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return objParams.ObjectMiddleHorizontal <= FieldWidth / 2 &&
|
||||
objParams.ObjectMiddleHorizontal + GetStep() >= FieldWidth / 2 &&
|
||||
objParams.ObjectMiddleVertical <= FieldHeight / 2 &&
|
||||
objParams.ObjectMiddleVertical + GetStep() >= FieldHeight / 2;
|
||||
}
|
||||
protected override void MoveToTarget()
|
||||
{
|
||||
var objParams = GetObjectParameters;
|
||||
if (objParams == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var diffX = objParams.ObjectMiddleHorizontal - FieldWidth / 2;
|
||||
if (Math.Abs(diffX) > GetStep())
|
||||
{
|
||||
if (diffX > 0)
|
||||
{
|
||||
MoveLeft();
|
||||
}
|
||||
else
|
||||
{
|
||||
MoveRight();
|
||||
}
|
||||
}
|
||||
var diffY = objParams.ObjectMiddleVertical - FieldHeight / 2;
|
||||
if (Math.Abs(diffY) > GetStep())
|
||||
{
|
||||
if (diffY > 0)
|
||||
{
|
||||
MoveUp();
|
||||
}
|
||||
else
|
||||
{
|
||||
MoveDown();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
57
AircraftCarrier/AircraftCarrier/ObjectParameters.cs
Normal file
57
AircraftCarrier/AircraftCarrier/ObjectParameters.cs
Normal file
@ -0,0 +1,57 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ProjectAircraftCarrier.MovementStrategy
|
||||
{
|
||||
/// <summary>
|
||||
/// Параметры-координаты объекта
|
||||
/// </summary>
|
||||
public class ObjectParameters
|
||||
{
|
||||
private readonly int _x;
|
||||
private readonly int _y;
|
||||
private readonly int _width;
|
||||
private readonly int _height;
|
||||
/// <summary>
|
||||
/// Левая граница
|
||||
/// </summary>
|
||||
public int LeftBorder => _x;
|
||||
/// <summary>
|
||||
/// Верхняя граница
|
||||
/// </summary>
|
||||
public int TopBorder => _y;
|
||||
/// <summary>
|
||||
/// Правая граница
|
||||
/// </summary>
|
||||
public int RightBorder => _x + _width;
|
||||
/// <summary>
|
||||
/// Нижняя граница
|
||||
/// </summary>
|
||||
public int DownBorder => _y + _height;
|
||||
/// <summary>
|
||||
/// Середина объекта
|
||||
/// </summary>
|
||||
public int ObjectMiddleHorizontal => _x + _width / 2;
|
||||
/// <summary>
|
||||
/// Середина объекта
|
||||
/// </summary>
|
||||
public int ObjectMiddleVertical => _y + _height / 2;
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="x">Координата X</param>
|
||||
/// <param name="y">Координата Y</param>
|
||||
/// <param name="width">Ширина</param>
|
||||
/// <param name="height">Высота</param>
|
||||
public ObjectParameters(int x, int y, int width, int height)
|
||||
{
|
||||
_x = x;
|
||||
_y = y;
|
||||
_width = width;
|
||||
_height = height;
|
||||
}
|
||||
}
|
||||
}
|
18
AircraftCarrier/AircraftCarrier/Status.cs
Normal file
18
AircraftCarrier/AircraftCarrier/Status.cs
Normal file
@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ProjectAircraftCarrier.MovementStrategy
|
||||
{
|
||||
/// <summary>
|
||||
/// Статус выполнения операции перемещения
|
||||
/// </summary>
|
||||
public enum Status
|
||||
{
|
||||
NotInit,
|
||||
InProgress,
|
||||
Finish
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user