Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
4b4f3eed79 | ||
|
35feab6891 | ||
|
b27e94da30 |
133
ProjectBomber/ProjectBomber/AbstractStrategy.cs
Normal file
133
ProjectBomber/ProjectBomber/AbstractStrategy.cs
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
using ProjectBomber.MovementStrategy;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ProjectBomber.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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
28
ProjectBomber/ProjectBomber/Direction.cs
Normal file
28
ProjectBomber/ProjectBomber/Direction.cs
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ProjectBomber
|
||||||
|
{
|
||||||
|
public enum DirectionType
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Вверх
|
||||||
|
/// </summary>
|
||||||
|
Up = 1,
|
||||||
|
/// <summary>
|
||||||
|
/// Вниз
|
||||||
|
/// </summary>
|
||||||
|
Down = 2,
|
||||||
|
/// <summary>
|
||||||
|
/// Влево
|
||||||
|
/// </summary>
|
||||||
|
Left = 3,
|
||||||
|
/// <summary>
|
||||||
|
/// Вправо
|
||||||
|
/// </summary>
|
||||||
|
Right = 4
|
||||||
|
}
|
||||||
|
}
|
284
ProjectBomber/ProjectBomber/DrawningBomber.cs
Normal file
284
ProjectBomber/ProjectBomber/DrawningBomber.cs
Normal file
@ -0,0 +1,284 @@
|
|||||||
|
using ProjectBomber.Entities;
|
||||||
|
using ProjectBomber.MovementStrategy;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Drawing.Drawing2D;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ProjectBomber.DrawningObjects
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Класс, отвечающий за прорисовку и перемещение объекта-сущности
|
||||||
|
/// </summary>
|
||||||
|
public class DrawningBomber
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Класс-сущность
|
||||||
|
/// </summary>
|
||||||
|
public EntityBomber EntityBomber { 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>
|
||||||
|
protected readonly int _bomberWidth = 60;
|
||||||
|
/// <summary>
|
||||||
|
/// Высота прорисовки бомбардировщика
|
||||||
|
/// </summary>
|
||||||
|
protected readonly int _bomberHeight = 55;
|
||||||
|
/// <summary>
|
||||||
|
/// Конструктор
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="speed">Скорость</param>
|
||||||
|
/// <param name="weight">Вес</param>
|
||||||
|
/// <param name="bodyColor">Основной цвет</param>
|
||||||
|
/// <param name="width">Ширина картинки</param>
|
||||||
|
/// <param name="height">Высота картинки</param>
|
||||||
|
public DrawningBomber(int speed, double weight, Color bodyColor, int width, int height)
|
||||||
|
{
|
||||||
|
_pictureWidth = width;
|
||||||
|
_pictureHeight = height;
|
||||||
|
EntityBomber = new EntityBomber(speed, weight, bodyColor);
|
||||||
|
if ((_bomberWidth >= _pictureWidth) || (_bomberHeight >= _pictureHeight))
|
||||||
|
{
|
||||||
|
Console.WriteLine("Проверка не пройдена, нельзя создать объект в этих размерах");
|
||||||
|
if (_bomberWidth >= _pictureWidth)
|
||||||
|
{
|
||||||
|
_bomberWidth = _pictureWidth - _bomberWidth;
|
||||||
|
}
|
||||||
|
if (_bomberHeight >= _pictureHeight)
|
||||||
|
{
|
||||||
|
_bomberHeight = _pictureHeight - _bomberHeight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Console.WriteLine("Объект создан");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Конструктор
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="speed">Скорость</param>
|
||||||
|
/// <param name="weight">Вес</param>
|
||||||
|
/// <param name="bodyColor">Основной цвет</param>
|
||||||
|
/// <param name="width">Ширина картинки</param>
|
||||||
|
/// <param name="height">Высота картинки</param>
|
||||||
|
/// <param name="bomberWidth">Ширина прорисовки бомбардировщика</param>
|
||||||
|
/// <param name="bomberHeight">Высота прорисовки бомбардировщика</param>
|
||||||
|
protected DrawningBomber(int speed, double weight, Color bodyColor, int width, int height, int bomberWidth, int bomberHeight)
|
||||||
|
{
|
||||||
|
_pictureWidth = width;
|
||||||
|
_pictureHeight = height;
|
||||||
|
_bomberWidth = bomberWidth;
|
||||||
|
_bomberHeight = bomberHeight;
|
||||||
|
EntityBomber = new EntityBomber(speed, weight, bodyColor);
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Координата X объекта
|
||||||
|
/// </summary>
|
||||||
|
public int GetPosX => _startPosX;
|
||||||
|
/// <summary>
|
||||||
|
/// Координата Y объекта
|
||||||
|
/// </summary>
|
||||||
|
public int GetPosY => _startPosY;
|
||||||
|
/// <summary>
|
||||||
|
/// Ширина объекта
|
||||||
|
/// </summary>
|
||||||
|
public int GetWidth => _bomberWidth;
|
||||||
|
/// <summary>
|
||||||
|
/// Высота объекта
|
||||||
|
/// </summary>
|
||||||
|
public int GetHeight => _bomberHeight;
|
||||||
|
/// <summary>
|
||||||
|
/// Проверка, что объект может переместится по указанному направлению
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="direction">Направление</param>
|
||||||
|
/// <returns>true - можно переместится по указанному направлению</returns>
|
||||||
|
public bool CanMove(DirectionType direction)
|
||||||
|
{
|
||||||
|
if (EntityBomber == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (direction == DirectionType.Left)
|
||||||
|
{
|
||||||
|
return _startPosX - EntityBomber.Step > 0;
|
||||||
|
}
|
||||||
|
else if (direction == DirectionType.Up)
|
||||||
|
{
|
||||||
|
return _startPosY - EntityBomber.Step > 0;
|
||||||
|
}
|
||||||
|
else if (direction == DirectionType.Down)
|
||||||
|
{
|
||||||
|
return _startPosY + EntityBomber.Step < _pictureHeight;
|
||||||
|
}
|
||||||
|
else if (direction == DirectionType.Right)
|
||||||
|
{
|
||||||
|
return _startPosX + EntityBomber.Step < _pictureWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false; // Возвращаем false в случае неподдерживаемого направления
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Установка позиции
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="x">Координата X</param>
|
||||||
|
/// <param name="y">Координата Y</param>
|
||||||
|
public void SetPosition(int x, int y)
|
||||||
|
{
|
||||||
|
// TODO: Изменение x, y, если при установке объект выходит за границы
|
||||||
|
_startPosX = x;
|
||||||
|
_startPosY = y;
|
||||||
|
// если выходит за границы, возвращаем на форму
|
||||||
|
if (_startPosX + _bomberWidth > _pictureWidth)
|
||||||
|
{
|
||||||
|
_startPosX = _pictureWidth - _bomberWidth;
|
||||||
|
}
|
||||||
|
if (_startPosY + _bomberHeight > _pictureHeight)
|
||||||
|
{
|
||||||
|
_startPosY = _pictureHeight - _bomberHeight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Изменение направления перемещения
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="direction">Направление</param>
|
||||||
|
public void MoveTransport(DirectionType direction)
|
||||||
|
{
|
||||||
|
if (EntityBomber == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch (direction)
|
||||||
|
{
|
||||||
|
//влево
|
||||||
|
case DirectionType.Left:
|
||||||
|
if (_startPosX - EntityBomber.Step > 0)
|
||||||
|
{
|
||||||
|
_startPosX -= (int)EntityBomber.Step;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
//вверх
|
||||||
|
case DirectionType.Up:
|
||||||
|
if (_startPosY - EntityBomber.Step > 0)
|
||||||
|
{
|
||||||
|
_startPosY -= (int)EntityBomber.Step;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
// вправо
|
||||||
|
case DirectionType.Right:
|
||||||
|
if (_startPosX + EntityBomber.Step > 0)
|
||||||
|
{
|
||||||
|
_startPosX += (int)EntityBomber.Step;
|
||||||
|
}
|
||||||
|
if (_startPosX + _bomberWidth > _pictureWidth)
|
||||||
|
{
|
||||||
|
_startPosX = _pictureWidth - _bomberWidth;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
//вниз
|
||||||
|
case DirectionType.Down:
|
||||||
|
if (_startPosY + EntityBomber.Step > 0)
|
||||||
|
{
|
||||||
|
_startPosY += (int)EntityBomber.Step;
|
||||||
|
}
|
||||||
|
if (_startPosY + _bomberHeight > _pictureHeight)
|
||||||
|
{
|
||||||
|
_startPosY = _pictureHeight - _bomberHeight;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Получение объекта IMoveableObject из объекта DrawningCar
|
||||||
|
/// </summary>
|
||||||
|
public IMoveableObject GetMoveableObject => new
|
||||||
|
DrawningObjectBomber(this);
|
||||||
|
public virtual void DrawTransport(Graphics g)
|
||||||
|
{
|
||||||
|
if (EntityBomber == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Pen pen = new Pen(Color.Black);
|
||||||
|
Brush bodyBrush = new SolidBrush(EntityBomber.BodyColor);
|
||||||
|
// крыло 1
|
||||||
|
GraphicsPath path = new GraphicsPath();
|
||||||
|
path.StartFigure();
|
||||||
|
path.AddLine(_startPosX + 20, _startPosY + 30, _startPosX + 20, _startPosY + 0);
|
||||||
|
path.AddLine(_startPosX + 20, _startPosY + 0, _startPosX + 25, _startPosY + 0);
|
||||||
|
path.AddLine(_startPosX + 25, _startPosY + 0, _startPosX + 30, _startPosY + 30);
|
||||||
|
path.AddLine(_startPosX + 30, _startPosY + 30, _startPosX + 20, _startPosY + 30);
|
||||||
|
path.CloseFigure();
|
||||||
|
// Заливаем цветом
|
||||||
|
g.FillPath(Brushes.Blue, path);
|
||||||
|
// Рисуем контур линии
|
||||||
|
// крыло 2
|
||||||
|
g.DrawPath(pen, path);
|
||||||
|
path.StartFigure();
|
||||||
|
path.AddLine(_startPosX + 20, _startPosY + 40, _startPosX + 20, _startPosY + 70);
|
||||||
|
path.AddLine(_startPosX + 20, _startPosY + 70, _startPosX + 25, _startPosY + 70);
|
||||||
|
path.AddLine(_startPosX + 25, _startPosY + 70, _startPosX + 30, _startPosY + 40);
|
||||||
|
path.AddLine(_startPosX + 30, _startPosY + 40, _startPosX + 20, _startPosY + 40);
|
||||||
|
path.CloseFigure();
|
||||||
|
// Заливаем цветом
|
||||||
|
g.FillPath(Brushes.Blue, path);
|
||||||
|
// Рисуем контур линии
|
||||||
|
g.DrawPath(pen, path);
|
||||||
|
// фюзеляж
|
||||||
|
GraphicsPath path1 = new GraphicsPath();
|
||||||
|
Brush brGreen = new SolidBrush(Color.Green);
|
||||||
|
g.FillRectangle(bodyBrush, _startPosX + 10, _startPosY + 30, 50, 10);
|
||||||
|
//нос
|
||||||
|
path1.StartFigure();
|
||||||
|
path1.AddLine(_startPosX + 10, _startPosY + 30, _startPosX + 0, _startPosY + 35);
|
||||||
|
path1.AddLine(_startPosX + 0, _startPosY + 35, _startPosX + 10, _startPosY + 40);
|
||||||
|
path1.AddLine(_startPosX + 10, _startPosY + 40, _startPosX + 10, _startPosY + 30);
|
||||||
|
path1.CloseFigure();
|
||||||
|
// Заливаем цветом
|
||||||
|
Brush brOrange = new SolidBrush(Color.Orange);
|
||||||
|
g.FillPath(brOrange, path1);
|
||||||
|
// Рисуем контур линии
|
||||||
|
g.DrawPath(pen, path1);
|
||||||
|
// Горизонтальное оперение 1
|
||||||
|
path1.StartFigure();
|
||||||
|
path1.AddLine(_startPosX + 50, _startPosY + 30, _startPosX + 60, _startPosY + 20);
|
||||||
|
path1.AddLine(_startPosX + 60, _startPosY + 20, _startPosX + 60, _startPosY + 30);
|
||||||
|
path1.AddLine(_startPosX + 60, _startPosY + 30, _startPosX + 50, _startPosY + 30);
|
||||||
|
path1.CloseFigure();
|
||||||
|
// Заливаем цветом
|
||||||
|
g.FillPath(brOrange, path1);
|
||||||
|
// Рисуем контур линии
|
||||||
|
g.DrawPath(pen, path1);
|
||||||
|
// Горизонтальное оперение 2
|
||||||
|
path1.StartFigure();
|
||||||
|
path1.AddLine(_startPosX + 50, _startPosY + 40, _startPosX + 60, _startPosY + 50);
|
||||||
|
path1.AddLine(_startPosX + 60, _startPosY + 50, _startPosX + 60, _startPosY + 40);
|
||||||
|
path1.AddLine(_startPosX + 60, _startPosY + 40, _startPosX + 50, _startPosY + 40);
|
||||||
|
path1.CloseFigure();
|
||||||
|
// Заливаем цветом
|
||||||
|
g.FillPath(brOrange, path1);
|
||||||
|
// Рисуем контур линии
|
||||||
|
g.DrawPath(pen, path1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
67
ProjectBomber/ProjectBomber/DrawningBomberAdvanced.cs
Normal file
67
ProjectBomber/ProjectBomber/DrawningBomberAdvanced.cs
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using ProjectBomber.Entities;
|
||||||
|
|
||||||
|
namespace ProjectBomber.DrawningObjects
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Класс, отвечающий за прорисовку и перемещение объекта-сущности
|
||||||
|
/// </summary>
|
||||||
|
public class DrawningBomberAdvanced : DrawningBomber
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Конструктор
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="speed">Скорость</param>
|
||||||
|
/// <param name="weight">Вес</param>
|
||||||
|
/// <param name="bodyColor">Основной цвет</param>
|
||||||
|
/// <param name="additionalColor">Дополнительный цвет</param>
|
||||||
|
/// <param name="bombs">Признак наличия обвеса</param>
|
||||||
|
/// <param name="fuelTanks">Признак наличия антикрыла</param>
|
||||||
|
/// <param name="line">Признак наличия гоночной полосы</param>
|
||||||
|
/// <param name="width">Ширина картинки</param>
|
||||||
|
/// <param name="height">Высота картинки</param>
|
||||||
|
public DrawningBomberAdvanced(int speed, double weight, Color bodyColor, Color
|
||||||
|
additionalColor, bool bombs, bool fuelTanks, bool line, int width, int height) :
|
||||||
|
base(speed, weight, bodyColor, width, height, 60, 60)
|
||||||
|
{
|
||||||
|
if (EntityBomber != null)
|
||||||
|
{
|
||||||
|
EntityBomber = new EntityBomberAdvanced(speed, weight, bodyColor,
|
||||||
|
additionalColor, bombs, fuelTanks, line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public override void DrawTransport(Graphics g)
|
||||||
|
{
|
||||||
|
if (EntityBomber is EntityBomberAdvanced bomber)
|
||||||
|
{
|
||||||
|
Pen pen = new Pen(Color.Black);
|
||||||
|
Brush additionalBrush = new SolidBrush(bomber.AdditionalColor);
|
||||||
|
// Бомбы
|
||||||
|
if (bomber.Bombs)
|
||||||
|
{
|
||||||
|
g.FillRectangle(additionalBrush, _startPosX + 15, _startPosY + 18, 18, 4);
|
||||||
|
g.FillRectangle(additionalBrush, _startPosX + 15, _startPosY + 48, 18, 4);
|
||||||
|
}
|
||||||
|
base.DrawTransport(g);
|
||||||
|
// баки с топливом
|
||||||
|
if (bomber.FuelTanks)
|
||||||
|
{
|
||||||
|
g.FillRectangle(additionalBrush, _startPosX + 40, _startPosY + 28, 10, 3);
|
||||||
|
g.FillRectangle(additionalBrush, _startPosX + 40, _startPosY + 40, 10, 3);
|
||||||
|
}
|
||||||
|
// линия
|
||||||
|
if (bomber.Line)
|
||||||
|
{
|
||||||
|
g.FillRectangle(additionalBrush, _startPosX + 10, _startPosY + 34, 50, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
38
ProjectBomber/ProjectBomber/DrawningObjectBomber.cs
Normal file
38
ProjectBomber/ProjectBomber/DrawningObjectBomber.cs
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
using ProjectBomber.DrawningObjects;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ProjectBomber.MovementStrategy
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Реализация интерфейса IDrawningObject для работы с объектом DrawningCar (паттерн Adapter)
|
||||||
|
/// </summary>
|
||||||
|
public class DrawningObjectBomber : IMoveableObject
|
||||||
|
{
|
||||||
|
private readonly DrawningBomber _drawningBomber = null;
|
||||||
|
public DrawningObjectBomber(DrawningBomber drawningBomber)
|
||||||
|
{
|
||||||
|
_drawningBomber = drawningBomber;
|
||||||
|
}
|
||||||
|
public ObjectParameters GetObjectPosition
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
if (_drawningBomber == null || _drawningBomber.EntityBomber == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return new ObjectParameters(_drawningBomber.GetPosX,
|
||||||
|
_drawningBomber.GetPosY, _drawningBomber.GetWidth, _drawningBomber.GetHeight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public int GetStep => (int)(_drawningBomber?.EntityBomber?.Step ?? 0);
|
||||||
|
public bool CheckCanMove(DirectionType direction) =>
|
||||||
|
_drawningBomber?.CanMove(direction) ?? false;
|
||||||
|
public void MoveObject(DirectionType direction) =>
|
||||||
|
_drawningBomber?.MoveTransport(direction);
|
||||||
|
}
|
||||||
|
}
|
44
ProjectBomber/ProjectBomber/EntityBomber.cs
Normal file
44
ProjectBomber/ProjectBomber/EntityBomber.cs
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ProjectBomber.Entities
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Класс-сущность "Бомбардировщик"
|
||||||
|
/// </summary>
|
||||||
|
public class EntityBomber
|
||||||
|
{
|
||||||
|
/// <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 EntityBomber(int speed, double weight, Color bodyColor)
|
||||||
|
{
|
||||||
|
Speed = speed;
|
||||||
|
Weight = weight;
|
||||||
|
BodyColor = bodyColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
51
ProjectBomber/ProjectBomber/EntityBomberAdvanced.cs
Normal file
51
ProjectBomber/ProjectBomber/EntityBomberAdvanced.cs
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using ProjectBomber.Entities;
|
||||||
|
|
||||||
|
namespace ProjectBomber.Entities
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Класс-сущность "Бомбардировщик"
|
||||||
|
/// </summary>
|
||||||
|
public class EntityBomberAdvanced : EntityBomber
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Дополнительный цвет (для опциональных элементов)
|
||||||
|
/// </summary>
|
||||||
|
public Color AdditionalColor { get; private set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Признак (опция) наличия бомб
|
||||||
|
/// </summary>
|
||||||
|
public bool Bombs { get; private set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Признак (опция) наличия топливных баков
|
||||||
|
/// </summary>
|
||||||
|
public bool FuelTanks { get; private set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Признак (опция) наличия полосы
|
||||||
|
/// </summary>
|
||||||
|
public bool Line { get; private set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Инициализация полей объекта-класса спортивного автомобиля
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="speed">Скорость</param>
|
||||||
|
/// <param name="weight">Вес автомобиля</param>
|
||||||
|
/// <param name="bodyColor">Основной цвет</param>
|
||||||
|
/// <param name="additionalColor">Дополнительный цвет</param>
|
||||||
|
/// <param name="bombs">Признак наличия бомб</param>
|
||||||
|
/// <param name="fuelTanks">Признак наличия топливных баков</param>
|
||||||
|
/// <param name="line">Признак наличия полосы</param>
|
||||||
|
public EntityBomberAdvanced(int speed, double weight, Color bodyColor, Color additionalColor, bool bombs, bool fuelTanks, bool line):
|
||||||
|
base(speed, weight, bodyColor)
|
||||||
|
{
|
||||||
|
AdditionalColor = additionalColor;
|
||||||
|
Bombs = bombs;
|
||||||
|
FuelTanks = fuelTanks;
|
||||||
|
Line = line;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
163
ProjectBomber/ProjectBomber/Form1.Designer.cs
generated
163
ProjectBomber/ProjectBomber/Form1.Designer.cs
generated
@ -1,6 +1,6 @@
|
|||||||
namespace ProjectBomber
|
namespace ProjectBomber
|
||||||
{
|
{
|
||||||
partial class Form1
|
partial class FormBomber
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Обязательная переменная конструктора.
|
/// Обязательная переменная конструктора.
|
||||||
@ -28,13 +28,166 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
this.components = new System.ComponentModel.Container();
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormBomber));
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.pictureBoxBomber = new System.Windows.Forms.PictureBox();
|
||||||
this.ClientSize = new System.Drawing.Size(800, 450);
|
this.ButtonCreateBomber = new System.Windows.Forms.Button();
|
||||||
this.Text = "Form1";
|
this.buttonUp = new System.Windows.Forms.Button();
|
||||||
|
this.buttonLeft = new System.Windows.Forms.Button();
|
||||||
|
this.buttonDown = new System.Windows.Forms.Button();
|
||||||
|
this.buttonRight = new System.Windows.Forms.Button();
|
||||||
|
this.comboBox1Strategy = new System.Windows.Forms.ComboBox();
|
||||||
|
this.ButtonCreatePlane = new System.Windows.Forms.Button();
|
||||||
|
this.ButtonStep = new System.Windows.Forms.Button();
|
||||||
|
this.ButtonSelectPlane = new System.Windows.Forms.Button();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBoxBomber)).BeginInit();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// pictureBoxBomber
|
||||||
|
//
|
||||||
|
this.pictureBoxBomber.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
this.pictureBoxBomber.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.pictureBoxBomber.Name = "pictureBoxBomber";
|
||||||
|
this.pictureBoxBomber.Size = new System.Drawing.Size(884, 461);
|
||||||
|
this.pictureBoxBomber.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize;
|
||||||
|
this.pictureBoxBomber.TabIndex = 0;
|
||||||
|
this.pictureBoxBomber.TabStop = false;
|
||||||
|
//
|
||||||
|
// ButtonCreateBomber
|
||||||
|
//
|
||||||
|
this.ButtonCreateBomber.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
|
||||||
|
this.ButtonCreateBomber.Location = new System.Drawing.Point(12, 421);
|
||||||
|
this.ButtonCreateBomber.Name = "ButtonCreateBomber";
|
||||||
|
this.ButtonCreateBomber.Size = new System.Drawing.Size(150, 27);
|
||||||
|
this.ButtonCreateBomber.TabIndex = 2;
|
||||||
|
this.ButtonCreateBomber.Text = "Создать бомбардировщик";
|
||||||
|
this.ButtonCreateBomber.UseVisualStyleBackColor = true;
|
||||||
|
this.ButtonCreateBomber.Click += new System.EventHandler(this.ButtonCreateBomber_Click);
|
||||||
|
//
|
||||||
|
// buttonUp
|
||||||
|
//
|
||||||
|
this.buttonUp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.buttonUp.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("buttonUp.BackgroundImage")));
|
||||||
|
this.buttonUp.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
|
||||||
|
this.buttonUp.Location = new System.Drawing.Point(764, 353);
|
||||||
|
this.buttonUp.Name = "buttonUp";
|
||||||
|
this.buttonUp.Size = new System.Drawing.Size(46, 45);
|
||||||
|
this.buttonUp.TabIndex = 4;
|
||||||
|
this.buttonUp.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonUp.Click += new System.EventHandler(this.ButtonMove_Click);
|
||||||
|
//
|
||||||
|
// buttonLeft
|
||||||
|
//
|
||||||
|
this.buttonLeft.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.buttonLeft.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("buttonLeft.BackgroundImage")));
|
||||||
|
this.buttonLeft.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
|
||||||
|
this.buttonLeft.Location = new System.Drawing.Point(712, 404);
|
||||||
|
this.buttonLeft.Name = "buttonLeft";
|
||||||
|
this.buttonLeft.Size = new System.Drawing.Size(46, 45);
|
||||||
|
this.buttonLeft.TabIndex = 5;
|
||||||
|
this.buttonLeft.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonLeft.Click += new System.EventHandler(this.ButtonMove_Click);
|
||||||
|
//
|
||||||
|
// buttonDown
|
||||||
|
//
|
||||||
|
this.buttonDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.buttonDown.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("buttonDown.BackgroundImage")));
|
||||||
|
this.buttonDown.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
|
||||||
|
this.buttonDown.Location = new System.Drawing.Point(764, 404);
|
||||||
|
this.buttonDown.Name = "buttonDown";
|
||||||
|
this.buttonDown.Size = new System.Drawing.Size(46, 45);
|
||||||
|
this.buttonDown.TabIndex = 6;
|
||||||
|
this.buttonDown.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonDown.Click += new System.EventHandler(this.ButtonMove_Click);
|
||||||
|
//
|
||||||
|
// buttonRight
|
||||||
|
//
|
||||||
|
this.buttonRight.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.buttonRight.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("buttonRight.BackgroundImage")));
|
||||||
|
this.buttonRight.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom;
|
||||||
|
this.buttonRight.Location = new System.Drawing.Point(816, 404);
|
||||||
|
this.buttonRight.Name = "buttonRight";
|
||||||
|
this.buttonRight.Size = new System.Drawing.Size(46, 45);
|
||||||
|
this.buttonRight.TabIndex = 7;
|
||||||
|
this.buttonRight.UseVisualStyleBackColor = true;
|
||||||
|
this.buttonRight.Click += new System.EventHandler(this.ButtonMove_Click);
|
||||||
|
//
|
||||||
|
// comboBox1Strategy
|
||||||
|
//
|
||||||
|
this.comboBox1Strategy.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.comboBox1Strategy.FormattingEnabled = true;
|
||||||
|
this.comboBox1Strategy.Items.AddRange(new object[] {
|
||||||
|
"_abstractStrategy",
|
||||||
|
"_MyabstractStrategy"});
|
||||||
|
this.comboBox1Strategy.Location = new System.Drawing.Point(712, 12);
|
||||||
|
this.comboBox1Strategy.Name = "comboBox1Strategy";
|
||||||
|
this.comboBox1Strategy.Size = new System.Drawing.Size(150, 21);
|
||||||
|
this.comboBox1Strategy.TabIndex = 8;
|
||||||
|
//
|
||||||
|
// ButtonCreatePlane
|
||||||
|
//
|
||||||
|
this.ButtonCreatePlane.Location = new System.Drawing.Point(168, 421);
|
||||||
|
this.ButtonCreatePlane.Name = "ButtonCreatePlane";
|
||||||
|
this.ButtonCreatePlane.Size = new System.Drawing.Size(121, 27);
|
||||||
|
this.ButtonCreatePlane.TabIndex = 9;
|
||||||
|
this.ButtonCreatePlane.Text = "Создать самолет";
|
||||||
|
this.ButtonCreatePlane.UseVisualStyleBackColor = true;
|
||||||
|
this.ButtonCreatePlane.Click += new System.EventHandler(this.ButtonCreatePlane_Click);
|
||||||
|
//
|
||||||
|
// ButtonStep
|
||||||
|
//
|
||||||
|
this.ButtonStep.Location = new System.Drawing.Point(712, 39);
|
||||||
|
this.ButtonStep.Name = "ButtonStep";
|
||||||
|
this.ButtonStep.Size = new System.Drawing.Size(150, 22);
|
||||||
|
this.ButtonStep.TabIndex = 10;
|
||||||
|
this.ButtonStep.Text = "Шаг";
|
||||||
|
this.ButtonStep.UseVisualStyleBackColor = true;
|
||||||
|
this.ButtonStep.Click += new System.EventHandler(this.ButtonStep_Click);
|
||||||
|
//
|
||||||
|
// ButtonSelectPlane
|
||||||
|
//
|
||||||
|
this.ButtonSelectPlane.Location = new System.Drawing.Point(295, 421);
|
||||||
|
this.ButtonSelectPlane.Name = "ButtonSelectPlane";
|
||||||
|
this.ButtonSelectPlane.Size = new System.Drawing.Size(101, 28);
|
||||||
|
this.ButtonSelectPlane.TabIndex = 11;
|
||||||
|
this.ButtonSelectPlane.Text = "Выбрать";
|
||||||
|
this.ButtonSelectPlane.UseVisualStyleBackColor = true;
|
||||||
|
this.ButtonSelectPlane.Click += new System.EventHandler(this.ButtonSelectPlane_Click);
|
||||||
|
//
|
||||||
|
// FormBomber
|
||||||
|
//
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
|
||||||
|
this.ClientSize = new System.Drawing.Size(884, 461);
|
||||||
|
this.Controls.Add(this.ButtonSelectPlane);
|
||||||
|
this.Controls.Add(this.ButtonStep);
|
||||||
|
this.Controls.Add(this.ButtonCreatePlane);
|
||||||
|
this.Controls.Add(this.comboBox1Strategy);
|
||||||
|
this.Controls.Add(this.buttonRight);
|
||||||
|
this.Controls.Add(this.buttonDown);
|
||||||
|
this.Controls.Add(this.buttonLeft);
|
||||||
|
this.Controls.Add(this.buttonUp);
|
||||||
|
this.Controls.Add(this.ButtonCreateBomber);
|
||||||
|
this.Controls.Add(this.pictureBoxBomber);
|
||||||
|
this.Name = "FormBomber";
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
|
this.Text = "Бомбардировщик";
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBoxBomber)).EndInit();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.PictureBox pictureBoxBomber;
|
||||||
|
private System.Windows.Forms.Button ButtonCreateBomber;
|
||||||
|
private System.Windows.Forms.Button buttonUp;
|
||||||
|
private System.Windows.Forms.Button buttonLeft;
|
||||||
|
private System.Windows.Forms.Button buttonDown;
|
||||||
|
private System.Windows.Forms.Button buttonRight;
|
||||||
|
private System.Windows.Forms.ComboBox comboBox1Strategy;
|
||||||
|
private System.Windows.Forms.Button ButtonCreatePlane;
|
||||||
|
private System.Windows.Forms.Button ButtonStep;
|
||||||
|
private System.Windows.Forms.Button ButtonSelectPlane;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
using System;
|
using ProjectBomber.DrawningObjects;
|
||||||
|
using ProjectBomber.MovementStrategy;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
@ -10,11 +12,157 @@ using System.Windows.Forms;
|
|||||||
|
|
||||||
namespace ProjectBomber
|
namespace ProjectBomber
|
||||||
{
|
{
|
||||||
public partial class Form1 : Form
|
public partial class FormBomber : Form
|
||||||
{
|
{
|
||||||
public Form1()
|
/// <summary>
|
||||||
|
/// Поле-объект для прорисовки объекта
|
||||||
|
/// </summary>
|
||||||
|
private DrawningBomber _drawningBomber;
|
||||||
|
/// <summary>
|
||||||
|
/// Стратегии перемещения
|
||||||
|
/// </summary>
|
||||||
|
private AbstractStrategy _abstractStrategy;
|
||||||
|
/// <summary>
|
||||||
|
/// Выбранный автомобиль
|
||||||
|
/// </summary>
|
||||||
|
public DrawningBomber SelectedBomber { get; private set; }
|
||||||
|
public FormBomber()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
_abstractStrategy = null;
|
||||||
|
SelectedBomber = null;
|
||||||
|
}
|
||||||
|
private void Draw()
|
||||||
|
{
|
||||||
|
if (_drawningBomber == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Bitmap bmp = new Bitmap(pictureBoxBomber.Width, pictureBoxBomber.Height);
|
||||||
|
Graphics gr = Graphics.FromImage(bmp);
|
||||||
|
_drawningBomber.DrawTransport(gr);
|
||||||
|
pictureBoxBomber.Image = bmp;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Обработка нажатия кнопки "Создать бомбардировщик"
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void ButtonCreateBomber_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Random random = new Random();
|
||||||
|
Color color = Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256));
|
||||||
|
Color dopColor = Color.FromArgb(random.Next(0, 256),
|
||||||
|
random.Next(0, 256), random.Next(0, 256));
|
||||||
|
//выбор основного цвета и дополнительного
|
||||||
|
ColorDialog colorDialog = new ColorDialog();
|
||||||
|
if (colorDialog.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
color = colorDialog.Color;
|
||||||
|
if (colorDialog.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
dopColor = colorDialog.Color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_drawningBomber = new DrawningBomberAdvanced(random.Next(100, 300), random.Next(1000, 3000),
|
||||||
|
color, dopColor, Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)),
|
||||||
|
Convert.ToBoolean(random.Next(0, 2)), pictureBoxBomber.Width, pictureBoxBomber.Height);
|
||||||
|
_drawningBomber.SetPosition(random.Next(10, 100), random.Next(10, 100));
|
||||||
|
Draw();
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Обработка нажатия кнопки "Создать самолёт"
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void ButtonCreatePlane_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Random random = new Random();
|
||||||
|
Color color = Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256));
|
||||||
|
ColorDialog colorDialog = new ColorDialog();
|
||||||
|
if (colorDialog.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
color = colorDialog.Color;
|
||||||
|
}
|
||||||
|
_drawningBomber = new DrawningBomber(random.Next(100, 300), random.Next(1000, 3000), color, pictureBoxBomber.Width, pictureBoxBomber.Height);
|
||||||
|
_drawningBomber.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 (_drawningBomber == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
string name = ((Button)sender)?.Name ?? string.Empty;
|
||||||
|
switch (name)
|
||||||
|
{
|
||||||
|
case "buttonUp":
|
||||||
|
_drawningBomber.MoveTransport(DirectionType.Up);
|
||||||
|
break;
|
||||||
|
case "buttonDown":
|
||||||
|
_drawningBomber.MoveTransport(DirectionType.Down);
|
||||||
|
break;
|
||||||
|
case "buttonLeft":
|
||||||
|
_drawningBomber.MoveTransport(DirectionType.Left);
|
||||||
|
break;
|
||||||
|
case "buttonRight":
|
||||||
|
_drawningBomber.MoveTransport(DirectionType.Right);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Draw();
|
||||||
|
}
|
||||||
|
private void ButtonStep_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (_drawningBomber == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (comboBox1Strategy.Enabled)
|
||||||
|
{
|
||||||
|
int selectedIndex = comboBox1Strategy.SelectedIndex;
|
||||||
|
|
||||||
|
if (selectedIndex == 0)
|
||||||
|
{
|
||||||
|
_abstractStrategy = new MoveToCenter();
|
||||||
|
}
|
||||||
|
else if (selectedIndex == 1)
|
||||||
|
{
|
||||||
|
_abstractStrategy = new MoveToBottomRight();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_abstractStrategy != null)
|
||||||
|
{
|
||||||
|
_abstractStrategy.SetData(new DrawningObjectBomber(_drawningBomber), pictureBoxBomber.Width, pictureBoxBomber.Height);
|
||||||
|
comboBox1Strategy.Enabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (_abstractStrategy == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_abstractStrategy.MakeStep();
|
||||||
|
Draw();
|
||||||
|
if (_abstractStrategy.GetStatus() == Status.Finish)
|
||||||
|
{
|
||||||
|
comboBox1Strategy.Enabled = true;
|
||||||
|
_abstractStrategy = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Выбор самолета
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void ButtonSelectPlane_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SelectedBomber = _drawningBomber;
|
||||||
|
DialogResult = DialogResult.OK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
788
ProjectBomber/ProjectBomber/Form1.resx
Normal file
788
ProjectBomber/ProjectBomber/Form1.resx
Normal file
@ -0,0 +1,788 @@
|
|||||||
|
<?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>
|
||||||
|
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
|
||||||
|
RU5ErkJggg==
|
||||||
|
</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">
|
||||||
|
<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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
|
||||||
|
RU5ErkJggg==
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
124
ProjectBomber/ProjectBomber/FormPlaneCollection.Designer.cs
generated
Normal file
124
ProjectBomber/ProjectBomber/FormPlaneCollection.Designer.cs
generated
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
namespace ProjectBomber
|
||||||
|
{
|
||||||
|
partial class FormPlaneCollection
|
||||||
|
{
|
||||||
|
/// <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.groupBox1 = new System.Windows.Forms.GroupBox();
|
||||||
|
this.ButtonRefreshCollection = new System.Windows.Forms.Button();
|
||||||
|
this.ButtonRemovePlane = new System.Windows.Forms.Button();
|
||||||
|
this.maskedTextBoxNumber = new System.Windows.Forms.TextBox();
|
||||||
|
this.ButtonAddPlane = new System.Windows.Forms.Button();
|
||||||
|
this.pictureBoxCollection = new System.Windows.Forms.PictureBox();
|
||||||
|
this.groupBox1.SuspendLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBoxCollection)).BeginInit();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// groupBox1
|
||||||
|
//
|
||||||
|
this.groupBox1.Controls.Add(this.ButtonRefreshCollection);
|
||||||
|
this.groupBox1.Controls.Add(this.ButtonRemovePlane);
|
||||||
|
this.groupBox1.Controls.Add(this.maskedTextBoxNumber);
|
||||||
|
this.groupBox1.Controls.Add(this.ButtonAddPlane);
|
||||||
|
this.groupBox1.Location = new System.Drawing.Point(586, 2);
|
||||||
|
this.groupBox1.Name = "groupBox1";
|
||||||
|
this.groupBox1.Size = new System.Drawing.Size(216, 453);
|
||||||
|
this.groupBox1.TabIndex = 0;
|
||||||
|
this.groupBox1.TabStop = false;
|
||||||
|
this.groupBox1.Text = "Инструменты";
|
||||||
|
//
|
||||||
|
// ButtonRefreshCollection
|
||||||
|
//
|
||||||
|
this.ButtonRefreshCollection.Location = new System.Drawing.Point(17, 237);
|
||||||
|
this.ButtonRefreshCollection.Name = "ButtonRefreshCollection";
|
||||||
|
this.ButtonRefreshCollection.Size = new System.Drawing.Size(178, 41);
|
||||||
|
this.ButtonRefreshCollection.TabIndex = 3;
|
||||||
|
this.ButtonRefreshCollection.Text = "Обновить коллекцию";
|
||||||
|
this.ButtonRefreshCollection.UseVisualStyleBackColor = true;
|
||||||
|
this.ButtonRefreshCollection.Click += new System.EventHandler(this.ButtonRefreshCollection_Click);
|
||||||
|
//
|
||||||
|
// ButtonRemovePlane
|
||||||
|
//
|
||||||
|
this.ButtonRemovePlane.Location = new System.Drawing.Point(17, 136);
|
||||||
|
this.ButtonRemovePlane.Name = "ButtonRemovePlane";
|
||||||
|
this.ButtonRemovePlane.Size = new System.Drawing.Size(179, 41);
|
||||||
|
this.ButtonRemovePlane.TabIndex = 2;
|
||||||
|
this.ButtonRemovePlane.Text = "Удалить автомобиль";
|
||||||
|
this.ButtonRemovePlane.UseVisualStyleBackColor = true;
|
||||||
|
this.ButtonRemovePlane.Click += new System.EventHandler(this.ButtonRemovePlane_Click);
|
||||||
|
//
|
||||||
|
// maskedTextBoxNumber
|
||||||
|
//
|
||||||
|
this.maskedTextBoxNumber.Location = new System.Drawing.Point(17, 99);
|
||||||
|
this.maskedTextBoxNumber.Name = "maskedTextBoxNumber";
|
||||||
|
this.maskedTextBoxNumber.Size = new System.Drawing.Size(180, 20);
|
||||||
|
this.maskedTextBoxNumber.TabIndex = 1;
|
||||||
|
//
|
||||||
|
// ButtonAddPlane
|
||||||
|
//
|
||||||
|
this.ButtonAddPlane.Location = new System.Drawing.Point(17, 36);
|
||||||
|
this.ButtonAddPlane.Name = "ButtonAddPlane";
|
||||||
|
this.ButtonAddPlane.Size = new System.Drawing.Size(185, 40);
|
||||||
|
this.ButtonAddPlane.TabIndex = 0;
|
||||||
|
this.ButtonAddPlane.Text = "Добавить самолет";
|
||||||
|
this.ButtonAddPlane.UseVisualStyleBackColor = true;
|
||||||
|
this.ButtonAddPlane.Click += new System.EventHandler(this.ButtonAddPlane_Click);
|
||||||
|
//
|
||||||
|
// pictureBoxCollection
|
||||||
|
//
|
||||||
|
this.pictureBoxCollection.Location = new System.Drawing.Point(-2, 2);
|
||||||
|
this.pictureBoxCollection.Name = "pictureBoxCollection";
|
||||||
|
this.pictureBoxCollection.Size = new System.Drawing.Size(600, 452);
|
||||||
|
this.pictureBoxCollection.TabIndex = 1;
|
||||||
|
this.pictureBoxCollection.TabStop = false;
|
||||||
|
//
|
||||||
|
// FormPlaneCollection
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.ClientSize = new System.Drawing.Size(800, 450);
|
||||||
|
this.Controls.Add(this.pictureBoxCollection);
|
||||||
|
this.Controls.Add(this.groupBox1);
|
||||||
|
this.Name = "FormPlaneCollection";
|
||||||
|
this.Text = "Набор самолетов";
|
||||||
|
this.groupBox1.ResumeLayout(false);
|
||||||
|
this.groupBox1.PerformLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBoxCollection)).EndInit();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.GroupBox groupBox1;
|
||||||
|
private System.Windows.Forms.Button ButtonRefreshCollection;
|
||||||
|
private System.Windows.Forms.Button ButtonRemovePlane;
|
||||||
|
private System.Windows.Forms.TextBox maskedTextBoxNumber;
|
||||||
|
private System.Windows.Forms.Button ButtonAddPlane;
|
||||||
|
private System.Windows.Forms.PictureBox pictureBoxCollection;
|
||||||
|
}
|
||||||
|
}
|
89
ProjectBomber/ProjectBomber/FormPlaneCollection.cs
Normal file
89
ProjectBomber/ProjectBomber/FormPlaneCollection.cs
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
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 ProjectBomber.MovementStrategy;
|
||||||
|
using ProjectBomber.Generics;
|
||||||
|
using ProjectBomber.DrawningObjects;
|
||||||
|
|
||||||
|
namespace ProjectBomber
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Форма для работы с набором объектов класса DrawningCar
|
||||||
|
/// </summary>
|
||||||
|
public partial class FormPlaneCollection : Form
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Набор объектов
|
||||||
|
/// </summary>
|
||||||
|
private readonly PlanesGenericCollection<DrawningBomber,
|
||||||
|
DrawningObjectBomber> _planes;
|
||||||
|
/// <summary>
|
||||||
|
/// Конструктор
|
||||||
|
/// </summary>
|
||||||
|
public FormPlaneCollection()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
_planes = new PlanesGenericCollection<DrawningBomber,
|
||||||
|
DrawningObjectBomber>(pictureBoxCollection.Width, pictureBoxCollection.Height);
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Добавление объекта в набор
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void ButtonAddPlane_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
FormBomber form = new FormBomber();
|
||||||
|
if (form.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
if (_planes + form.SelectedBomber != 1)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Объект добавлен");
|
||||||
|
pictureBoxCollection.Image = _planes.ShowPlanes();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show("Не удалось добавить объект");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Удаление объекта из набора
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void ButtonRemovePlane_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (MessageBox.Show("Удалить объект?", "Удаление",
|
||||||
|
MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int pos = Convert.ToInt32(maskedTextBoxNumber.Text);
|
||||||
|
if (_planes - pos != null)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Объект удален");
|
||||||
|
pictureBoxCollection.Image = _planes.ShowPlanes();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox.Show("Не удалось удалить объект");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Обновление рисунка по набору
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void ButtonRefreshCollection_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
pictureBoxCollection.Image = _planes.ShowPlanes();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
120
ProjectBomber/ProjectBomber/FormPlaneCollection.resx
Normal file
120
ProjectBomber/ProjectBomber/FormPlaneCollection.resx
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<root>
|
||||||
|
<!--
|
||||||
|
Microsoft ResX Schema
|
||||||
|
|
||||||
|
Version 2.0
|
||||||
|
|
||||||
|
The primary goals of this format is to allow a simple XML format
|
||||||
|
that is mostly human readable. The generation and parsing of the
|
||||||
|
various data types are done through the TypeConverter classes
|
||||||
|
associated with the data types.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
... ado.net/XML headers & schema ...
|
||||||
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
|
<resheader name="version">2.0</resheader>
|
||||||
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
|
</data>
|
||||||
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
|
<comment>This is a comment</comment>
|
||||||
|
</data>
|
||||||
|
|
||||||
|
There are any number of "resheader" rows that contain simple
|
||||||
|
name/value pairs.
|
||||||
|
|
||||||
|
Each data row contains a name, and value. The row also contains a
|
||||||
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
|
text/value conversion through the TypeConverter architecture.
|
||||||
|
Classes that don't support this are serialized and stored with the
|
||||||
|
mimetype set.
|
||||||
|
|
||||||
|
The mimetype is used for serialized objects, and tells the
|
||||||
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
|
read any of the formats listed below.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
|
value : The object must be serialized with
|
||||||
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
|
value : The object must be serialized into a byte array
|
||||||
|
: using a System.ComponentModel.TypeConverter
|
||||||
|
: and then encoded with base64 encoding.
|
||||||
|
-->
|
||||||
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:choice maxOccurs="unbounded">
|
||||||
|
<xsd:element name="metadata">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="assembly">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="data">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
|
<xsd:attribute ref="xml:space" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element name="resheader">
|
||||||
|
<xsd:complexType>
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
|
</xsd:sequence>
|
||||||
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:choice>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
|
<resheader name="resmimetype">
|
||||||
|
<value>text/microsoft-resx</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="version">
|
||||||
|
<value>2.0</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="reader">
|
||||||
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
<resheader name="writer">
|
||||||
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
|
</resheader>
|
||||||
|
</root>
|
35
ProjectBomber/ProjectBomber/IMoveableObject.cs
Normal file
35
ProjectBomber/ProjectBomber/IMoveableObject.cs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
using ProjectBomber.MovementStrategy;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ProjectBomber.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);
|
||||||
|
}
|
||||||
|
}
|
43
ProjectBomber/ProjectBomber/MoveToBottomRight.cs
Normal file
43
ProjectBomber/ProjectBomber/MoveToBottomRight.cs
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
using ProjectBomber.MovementStrategy;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ProjectBomber
|
||||||
|
{
|
||||||
|
public class MoveToBottomRight : AbstractStrategy
|
||||||
|
{
|
||||||
|
protected override bool IsTargetDestinaion()
|
||||||
|
{
|
||||||
|
var objParams = GetObjectParameters;
|
||||||
|
if (objParams == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return objParams.RightBorder <= FieldWidth &&
|
||||||
|
objParams.RightBorder + GetStep() >= FieldWidth &&
|
||||||
|
objParams.DownBorder <= FieldHeight &&
|
||||||
|
objParams.DownBorder + GetStep() >= FieldHeight;
|
||||||
|
}
|
||||||
|
protected override void MoveToTarget()
|
||||||
|
{
|
||||||
|
var objParams = GetObjectParameters;
|
||||||
|
if (objParams == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var diffX = FieldWidth - objParams.RightBorder;
|
||||||
|
if (Math.Abs(diffX) > GetStep())
|
||||||
|
{
|
||||||
|
MoveRight();
|
||||||
|
}
|
||||||
|
var diffY = FieldHeight - objParams.DownBorder;
|
||||||
|
if (Math.Abs(diffY) > GetStep())
|
||||||
|
{
|
||||||
|
MoveDown();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
59
ProjectBomber/ProjectBomber/MoveToCenter.cs
Normal file
59
ProjectBomber/ProjectBomber/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 ProjectBomber.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
ProjectBomber/ProjectBomber/ObjectParameters.cs
Normal file
57
ProjectBomber/ProjectBomber/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 ProjectBomber.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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
156
ProjectBomber/ProjectBomber/PlanesGenericCollection.cs
Normal file
156
ProjectBomber/ProjectBomber/PlanesGenericCollection.cs
Normal file
@ -0,0 +1,156 @@
|
|||||||
|
using ProjectBomber.MovementStrategy;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using ProjectBomber.DrawningObjects;
|
||||||
|
|
||||||
|
namespace ProjectBomber.Generics
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Параметризованный класс для набора объектов DrawningBomber
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
/// <typeparam name="U"></typeparam>
|
||||||
|
internal class PlanesGenericCollection<T, U>
|
||||||
|
where T : DrawningBomber
|
||||||
|
where U : IMoveableObject
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Ширина окна прорисовки
|
||||||
|
/// </summary>
|
||||||
|
private readonly int _pictureWidth;
|
||||||
|
/// <summary>
|
||||||
|
/// Высота окна прорисовки
|
||||||
|
/// </summary>
|
||||||
|
private readonly int _pictureHeight;
|
||||||
|
/// <summary>
|
||||||
|
/// Размер занимаемого объектом места (ширина)
|
||||||
|
/// </summary>
|
||||||
|
private readonly int _placeSizeWidth = 200;
|
||||||
|
/// <summary>
|
||||||
|
/// Размер занимаемого объектом места (высота)
|
||||||
|
/// </summary>
|
||||||
|
private readonly int _placeSizeHeight = 90;
|
||||||
|
/// <summary>
|
||||||
|
/// Набор объектов
|
||||||
|
/// </summary>
|
||||||
|
private readonly SetGeneric<T> _collection;
|
||||||
|
/// <summary>
|
||||||
|
/// Конструктор
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="picWidth"></param>
|
||||||
|
/// <param name="picHeight"></param>
|
||||||
|
public PlanesGenericCollection(int picWidth, int picHeight)
|
||||||
|
{
|
||||||
|
int width = picWidth / _placeSizeWidth;
|
||||||
|
int height = picHeight / _placeSizeHeight;
|
||||||
|
_pictureWidth = picWidth;
|
||||||
|
_pictureHeight = picHeight;
|
||||||
|
_collection = new SetGeneric<T>(width * height);
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Перегрузка оператора сложения
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="collect"></param>
|
||||||
|
/// <param name="obj"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static int? operator +(PlanesGenericCollection<T, U> collect, T
|
||||||
|
obj)
|
||||||
|
{
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return collect?._collection.Insert(obj);
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Перегрузка оператора вычитания
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="collect"></param>
|
||||||
|
/// <param name="pos"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static bool operator -(PlanesGenericCollection<T, U> collect, int
|
||||||
|
pos)
|
||||||
|
{
|
||||||
|
T obj = collect._collection.Get(pos);
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return collect._collection.Remove(pos);
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Получение объекта IMoveableObject
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="pos"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public U GetU(int pos)
|
||||||
|
{
|
||||||
|
return (U)_collection.Get(pos)?.GetMoveableObject;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Вывод всего набора объектов
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public Bitmap ShowPlanes()
|
||||||
|
{
|
||||||
|
Bitmap bmp = new Bitmap(_pictureWidth, _pictureHeight);
|
||||||
|
Graphics gr = Graphics.FromImage(bmp);
|
||||||
|
DrawBackground(gr);
|
||||||
|
DrawObjects(gr);
|
||||||
|
return bmp;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Метод отрисовки фона
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="g"></param>
|
||||||
|
private void DrawBackground(Graphics g)
|
||||||
|
{
|
||||||
|
Pen pen = new Pen(Color.Black, 3);
|
||||||
|
int numColumns = _pictureWidth / _placeSizeWidth;
|
||||||
|
int numRows = _pictureHeight / _placeSizeHeight;
|
||||||
|
|
||||||
|
for (int i = 0; i <= numColumns; i++)
|
||||||
|
{
|
||||||
|
for (int j = 0; j <= numRows; ++j)
|
||||||
|
{
|
||||||
|
// Линии разметки места
|
||||||
|
int x = i * _placeSizeWidth;
|
||||||
|
int y = j * _placeSizeHeight;
|
||||||
|
g.DrawLine(pen, x, y, x + _placeSizeWidth / 2, y);
|
||||||
|
}
|
||||||
|
|
||||||
|
g.DrawLine(pen, i * _placeSizeWidth, 0, i * _placeSizeWidth, numRows * _placeSizeHeight);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Метод прорисовки объектов
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="g"></param>
|
||||||
|
private void DrawObjects(Graphics g)
|
||||||
|
{
|
||||||
|
int numColumns = _pictureWidth / _placeSizeWidth;
|
||||||
|
int numRows = _pictureHeight / _placeSizeHeight;
|
||||||
|
|
||||||
|
for (int i = 0; i < _collection.Count; i++)
|
||||||
|
{
|
||||||
|
DrawningBomber plane = _collection.Get(i);
|
||||||
|
if (plane != null)
|
||||||
|
{
|
||||||
|
// Вычисляем позицию объекта
|
||||||
|
int row = i / numColumns; // Номер строки
|
||||||
|
int column = numColumns - 1 - (i % numColumns); // Номер столбца, инвертируем для движения справа налево
|
||||||
|
int x = column * _placeSizeWidth;
|
||||||
|
int y = row * _placeSizeHeight;
|
||||||
|
|
||||||
|
plane.SetPosition(x, y);
|
||||||
|
plane.DrawTransport(g);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -16,7 +16,7 @@ namespace ProjectBomber
|
|||||||
{
|
{
|
||||||
Application.EnableVisualStyles();
|
Application.EnableVisualStyles();
|
||||||
Application.SetCompatibleTextRenderingDefault(false);
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
Application.Run(new Form1());
|
Application.Run(new FormPlaneCollection());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,21 @@
|
|||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
<Deterministic>true</Deterministic>
|
<Deterministic>true</Deterministic>
|
||||||
|
<PublishUrl>publish\</PublishUrl>
|
||||||
|
<Install>true</Install>
|
||||||
|
<InstallFrom>Disk</InstallFrom>
|
||||||
|
<UpdateEnabled>false</UpdateEnabled>
|
||||||
|
<UpdateMode>Foreground</UpdateMode>
|
||||||
|
<UpdateInterval>7</UpdateInterval>
|
||||||
|
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||||
|
<UpdatePeriodically>false</UpdatePeriodically>
|
||||||
|
<UpdateRequired>false</UpdateRequired>
|
||||||
|
<MapFileExtensions>true</MapFileExtensions>
|
||||||
|
<ApplicationRevision>0</ApplicationRevision>
|
||||||
|
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||||
|
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||||
|
<UseApplicationTrust>false</UseApplicationTrust>
|
||||||
|
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
@ -46,14 +61,40 @@
|
|||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Compile Include="AbstractStrategy.cs" />
|
||||||
|
<Compile Include="Direction.cs" />
|
||||||
|
<Compile Include="DrawningBomber.cs" />
|
||||||
|
<Compile Include="DrawningBomberAdvanced.cs" />
|
||||||
|
<Compile Include="DrawningObjectBomber.cs" />
|
||||||
|
<Compile Include="EntityBomber.cs" />
|
||||||
|
<Compile Include="EntityBomberAdvanced.cs" />
|
||||||
<Compile Include="Form1.cs">
|
<Compile Include="Form1.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Form1.Designer.cs">
|
<Compile Include="Form1.Designer.cs">
|
||||||
<DependentUpon>Form1.cs</DependentUpon>
|
<DependentUpon>Form1.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="FormPlaneCollection.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="FormPlaneCollection.Designer.cs">
|
||||||
|
<DependentUpon>FormPlaneCollection.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="IMoveableObject.cs" />
|
||||||
|
<Compile Include="MoveToBottomRight.cs" />
|
||||||
|
<Compile Include="MoveToCenter.cs" />
|
||||||
|
<Compile Include="ObjectParameters.cs" />
|
||||||
|
<Compile Include="PlanesGenericCollection.cs" />
|
||||||
<Compile Include="Program.cs" />
|
<Compile Include="Program.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="SetGeneric.cs" />
|
||||||
|
<Compile Include="Status.cs" />
|
||||||
|
<EmbeddedResource Include="Form1.resx">
|
||||||
|
<DependentUpon>Form1.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="FormPlaneCollection.resx">
|
||||||
|
<DependentUpon>FormPlaneCollection.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="Properties\Resources.resx">
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
@ -76,5 +117,17 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="App.config" />
|
<None Include="App.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<BootstrapperPackage Include=".NETFramework,Version=v4.7.2">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>Microsoft .NET Framework 4.7.2 %28x86 и x64%29</ProductName>
|
||||||
|
<Install>true</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||||
|
<Visible>False</Visible>
|
||||||
|
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||||
|
<Install>false</Install>
|
||||||
|
</BootstrapperPackage>
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
</Project>
|
</Project>
|
123
ProjectBomber/ProjectBomber/SetGeneric.cs
Normal file
123
ProjectBomber/ProjectBomber/SetGeneric.cs
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ProjectBomber.Generics
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Параметризованный набор объектов
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="T"></typeparam>
|
||||||
|
internal class SetGeneric<T>
|
||||||
|
where T : class
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Массив объектов, которые храним
|
||||||
|
/// </summary>
|
||||||
|
private readonly T[] _places;
|
||||||
|
/// <summary>
|
||||||
|
/// Количество объектов в массиве
|
||||||
|
/// </summary>
|
||||||
|
public int Count => _places.Length;
|
||||||
|
/// <summary>
|
||||||
|
/// Конструктор
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="count"></param>
|
||||||
|
public SetGeneric(int count)
|
||||||
|
{
|
||||||
|
_places = new T[count];
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Добавление объекта в набор
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="plane">Добавляемый самолет</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public int Insert(T plane)
|
||||||
|
{
|
||||||
|
int index = -1;
|
||||||
|
for (int i = 0; i < _places.Length; i++)
|
||||||
|
{
|
||||||
|
if (_places[i] == null)
|
||||||
|
{
|
||||||
|
index = i; break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (index < 0)
|
||||||
|
{
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
for (int i = index; i > 0; i--)
|
||||||
|
{
|
||||||
|
_places[i] = _places[i - 1];
|
||||||
|
}
|
||||||
|
_places[0] = plane;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Добавление объекта в набор на конкретную позицию
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="plane">Добавляемый автомобиль</param>
|
||||||
|
/// <param name="position">Позиция</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public int Insert(T plane, int position)
|
||||||
|
{
|
||||||
|
///Проверка позиции
|
||||||
|
if (position < 0 || position >= _places.Length)
|
||||||
|
return -1;
|
||||||
|
/// Проверка, что элемент массива по этой позиции пустой, если нет, то проверка,
|
||||||
|
/// что после вставляемого элемента в массиве есть пустой элемент
|
||||||
|
if (_places[position] != null)
|
||||||
|
{
|
||||||
|
/// Проверка, что после вставляемого элемента в массиве есть пустой элемент
|
||||||
|
int firstEmptyPosition = -1;
|
||||||
|
for (int i = position + 1; i < _places.Length; i++)
|
||||||
|
{
|
||||||
|
if (_places[i] == null)
|
||||||
|
{
|
||||||
|
firstEmptyPosition = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// Нет пустой позиции после вставляемой
|
||||||
|
if (firstEmptyPosition == -1)
|
||||||
|
return -1;
|
||||||
|
/// Сдвиг всех объектов, находящихся справа от позиции, до первого пустого элемента
|
||||||
|
for (int i = firstEmptyPosition; i > position; i--)
|
||||||
|
{
|
||||||
|
_places[i] = _places[i - 1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/// Вставка по позиции
|
||||||
|
_places[position] = plane;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Удаление объекта из набора с конкретной позиции
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="position"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool Remove(int position)
|
||||||
|
{
|
||||||
|
/// Проверка позиции
|
||||||
|
if (position < 0 || position >= _places.Length)
|
||||||
|
return false;
|
||||||
|
/// Удаление объекта из массива, присвоив элементу массива значение null
|
||||||
|
_places[position] = null;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// Получение объекта из набора по позиции
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="position"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public T Get(int position)
|
||||||
|
{
|
||||||
|
// Проверка позиции
|
||||||
|
if (position < 0 || position >= _places.Length)
|
||||||
|
return null;
|
||||||
|
return _places[position];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
24
ProjectBomber/ProjectBomber/Status.cs
Normal file
24
ProjectBomber/ProjectBomber/Status.cs
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace ProjectBomber.MovementStrategy
|
||||||
|
{
|
||||||
|
public enum Status
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Вверх
|
||||||
|
/// </summary>
|
||||||
|
NotInit = 1,
|
||||||
|
/// <summary>
|
||||||
|
/// Вниз
|
||||||
|
/// </summary>
|
||||||
|
InProgress = 2,
|
||||||
|
/// <summary>
|
||||||
|
/// Влево
|
||||||
|
/// </summary>
|
||||||
|
Finish = 3
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user