Compare commits

..

No commits in common. "203daf9a1605840221bc7bb9097d2d2999336c1f" and "d17975562c5fbf8201c44da0fb13a21f13c4e859" have entirely different histories.

6 changed files with 72 additions and 55 deletions

View File

@ -9,26 +9,26 @@ using static System.Windows.Forms.AxHost;
namespace AntiAircraftGun.DrawingObjects namespace AntiAircraftGun.DrawingObjects
{ {
public class AdvancedDrawingAntiAirCraftGun : BaseDrawingAntiAirCraftGun public class AdvancedDrawingAntAirCraftGun : BaseDrawingAntiAirCraftGun
{ {
private Point[] points = new Point[4]; private Point[] points = new Point[4];
public AdvancedDrawingAntiAirCraftGun(int speed, double weight, Color bodyColor, Color additionalColor, Color dopColor, bool rocket,bool radar, int width, int height) : public AdvancedDrawingAntAirCraftGun(int speed, double weight, Color bodyColor, Color additionalColor, Color dopColor, bool rocket,bool radar, int width, int height) :
base(speed, weight, bodyColor, additionalColor, width, height) base(speed, weight, bodyColor, additionalColor, width, height)
{ {
AntiAirСraftGun = new EntityAdvancedAntiAirCraftGun(speed, weight, bodyColor, additionalColor, dopColor, rocket,radar); EntityAntiAirСraftGun = new EntityAdvancedAntiAircraftGun(speed, weight, bodyColor, additionalColor, dopColor, rocket,radar);
} }
public override void DrawTransport(Graphics g) public override void DrawTransport(Graphics g)
{ {
if (AntiAirСraftGun is not EntityAdvancedAntiAirCraftGun advancedGun) if (EntityAntiAirСraftGun is not EntityAdvancedAntiAircraftGun advancedGun)
{ {
return; return;
} }
Pen pen = new Pen(Color.Black); Pen pen = new Pen(Color.Black);
Brush bodyBrush = new SolidBrush(AntiAirСraftGun.BodyColor); Brush bodyBrush = new SolidBrush(EntityAntiAirСraftGun.BodyColor);
Brush additionalBrush = new SolidBrush(AntiAirСraftGun.AdditionalColor); Brush additionalBrush = new SolidBrush(EntityAntiAirСraftGun.AdditionalColor);
base.DrawTransport(g); base.DrawTransport(g);
Brush dopBrush = new SolidBrush(advancedGun.DopColor); Brush dopBrush = new SolidBrush(advancedGun.DopColor);
Pen dopPen = new Pen(advancedGun.DopColor); Pen dopPen = new Pen(advancedGun.DopColor);

View File

@ -10,7 +10,7 @@ namespace AntiAircraftGun.DrawingObjects
{ {
public class BaseDrawingAntiAirCraftGun public class BaseDrawingAntiAirCraftGun
{ {
public EntityAntiAirCraftGun? AntiAirСraftGun { get; protected set; } public EntityAntiAirCraftGun? EntityAntiAirСraftGun { get; protected set; }
private readonly int _pictureWidth; private readonly int _pictureWidth;
private readonly int _pictureHeight; private readonly int _pictureHeight;
protected int _startPosX; protected int _startPosX;
@ -22,7 +22,7 @@ namespace AntiAircraftGun.DrawingObjects
{ {
_pictureWidth = width; _pictureWidth = width;
_pictureHeight = height; _pictureHeight = height;
AntiAirСraftGun = new EntityAntiAirCraftGun(speed, weight, bodyColor, additionalColor); EntityAntiAirСraftGun = new EntityAntiAirCraftGun(speed, weight, bodyColor, additionalColor);
} }
protected BaseDrawingAntiAirCraftGun(int speed, double weight, Color bodyColor, Color additionalColor, int width, int height, int carWidth, int carHeight) protected BaseDrawingAntiAirCraftGun(int speed, double weight, Color bodyColor, Color additionalColor, int width, int height, int carWidth, int carHeight)
@ -31,20 +31,21 @@ namespace AntiAircraftGun.DrawingObjects
_pictureHeight = height; _pictureHeight = height;
_zenitWidth = carWidth; _zenitWidth = carWidth;
_zenitHeight = carHeight; _zenitHeight = carHeight;
AntiAirСraftGun = new EntityAntiAirCraftGun(speed, weight, bodyColor, additionalColor); EntityAntiAirСraftGun = new EntityAntiAirCraftGun(speed, weight, bodyColor, additionalColor);
} }
public void SetPosition(int x, int y) public void SetPosition(int x, int y)
{ {
if (AntiAirСraftGun == null) return; if (x < 0 || y < 0)
{
_startPosX = 10;
_startPosY = 10;
}
else
{
_startPosX = x; _startPosX = x;
_startPosY = y; _startPosY = y;
if (x < 0 || y < 0 || x + _zenitWidth >= _pictureWidth || y + _zenitHeight >= _pictureHeight)
{
_startPosX = 1;
_startPosY = 1;
} }
} }
/// <summary> /// <summary>
/// Координата X объекта /// Координата X объекта
@ -70,20 +71,20 @@ namespace AntiAircraftGun.DrawingObjects
/// <returns>true - можно переместится по указанному направлению</returns> /// <returns>true - можно переместится по указанному направлению</returns>
public bool CanMove(DirectionType direction) public bool CanMove(DirectionType direction)
{ {
if (AntiAirСraftGun == null) if (EntityAntiAirСraftGun == null)
{ {
return false; return false;
} }
return direction switch return direction switch
{ {
//влево //влево
DirectionType.Left => _startPosX - AntiAirСraftGun.Step > 0, DirectionType.Left => _startPosX - EntityAntiAirСraftGun.Step > 0,
//вверх //вверх
DirectionType.Up => _startPosY - AntiAirСraftGun.Step > 0, DirectionType.Up => _startPosY - EntityAntiAirСraftGun.Step > 0,
// вправо // вправо
DirectionType.Right =>_startPosX + AntiAirСraftGun.Step + _zenitWidth < _pictureWidth, DirectionType.Right =>_startPosX + EntityAntiAirСraftGun.Step < _pictureWidth - 110,
//вниз //вниз
DirectionType.Down => _startPosY + AntiAirСraftGun.Step + _zenitHeight< _pictureHeight, DirectionType.Down => _startPosY + EntityAntiAirСraftGun.Step < _pictureHeight - 60,
_ => false, _ => false,
}; };
} }
@ -93,7 +94,7 @@ namespace AntiAircraftGun.DrawingObjects
/// <param name="direction">Направление</param> /// <param name="direction">Направление</param>
public void MoveTransport(DirectionType direction) public void MoveTransport(DirectionType direction)
{ {
if (!CanMove(direction) || AntiAirСraftGun == null) if (!CanMove(direction) || EntityAntiAirСraftGun == null)
{ {
return; return;
} }
@ -101,19 +102,19 @@ namespace AntiAircraftGun.DrawingObjects
{ {
//влево //влево
case DirectionType.Left: case DirectionType.Left:
_startPosX -= (int)AntiAirСraftGun.Step; _startPosX -= (int)EntityAntiAirСraftGun.Step;
break; break;
//вверх //вверх
case DirectionType.Up: case DirectionType.Up:
_startPosY -= (int)AntiAirСraftGun.Step; _startPosY -= (int)EntityAntiAirСraftGun.Step;
break; break;
// вправо // вправо
case DirectionType.Right: case DirectionType.Right:
_startPosX += (int)AntiAirСraftGun.Step; _startPosX += (int)EntityAntiAirСraftGun.Step;
break; break;
//вниз //вниз
case DirectionType.Down: case DirectionType.Down:
_startPosY += (int)AntiAirСraftGun.Step; _startPosY += (int)EntityAntiAirСraftGun.Step;
break; break;
} }
} }
@ -123,8 +124,8 @@ namespace AntiAircraftGun.DrawingObjects
Pen pen = Pens.Black; Pen pen = Pens.Black;
Brush bodyBrush = new SolidBrush(AntiAirСraftGun.BodyColor); Brush bodyBrush = new SolidBrush(EntityAntiAirСraftGun.BodyColor);
Brush additionalBrush = new SolidBrush(AntiAirСraftGun.AdditionalColor); Brush additionalBrush = new SolidBrush(EntityAntiAirСraftGun.AdditionalColor);
g.FillEllipse(additionalBrush, _startPosX, _startPosY + 40, 110, 10); g.FillEllipse(additionalBrush, _startPosX, _startPosY + 40, 110, 10);
g.DrawEllipse(pen, _startPosX, _startPosY + 40, 110, 10); g.DrawEllipse(pen, _startPosX, _startPosY + 40, 110, 10);

View File

@ -6,7 +6,7 @@ using System.Threading.Tasks;
namespace AntiAircraftGun.Enitites namespace AntiAircraftGun.Enitites
{ {
public class EntityAdvancedAntiAirCraftGun : EntityAntiAirCraftGun public class EntityAdvancedAntiAircraftGun : EntityAntiAirCraftGun
{ {
public Color DopColor { get; private set; } public Color DopColor { get; private set; }
@ -17,7 +17,7 @@ namespace AntiAircraftGun.Enitites
public EntityAdvancedAntiAirCraftGun(int speed, double weight, Color bodyColor, Color additionalColor,Color dopColor, bool rocket, bool radar) public EntityAdvancedAntiAircraftGun(int speed, double weight, Color bodyColor, Color additionalColor,Color dopColor, bool rocket, bool radar)
: base(speed, weight, bodyColor, additionalColor) : base(speed, weight, bodyColor, additionalColor)
{ {
DopColor = dopColor; DopColor = dopColor;

View File

@ -6,7 +6,7 @@ namespace AntiAircraftGun
{ {
public partial class FormAntiAirCraftGun : Form public partial class FormAntiAirCraftGun : Form
{ {
private BaseDrawingAntiAirCraftGun _drawingAntiAirCraftGun; private BaseDrawingAntiAirCraftGun _drawing;
private AbstractStrategy? _abstractStrategy; private AbstractStrategy? _abstractStrategy;
@ -20,7 +20,7 @@ namespace AntiAircraftGun
private void ButtonMove_Click(object sender, EventArgs e) private void ButtonMove_Click(object sender, EventArgs e)
{ {
if (_drawingAntiAirCraftGun == null) if (_drawing == null)
{ {
return; return;
} }
@ -28,29 +28,29 @@ namespace AntiAircraftGun
switch (name) switch (name)
{ {
case "buttonUp": case "buttonUp":
_drawingAntiAirCraftGun.MoveTransport(DirectionType.Up); _drawing.MoveTransport(DirectionType.Up);
break; break;
case "buttonDown": case "buttonDown":
_drawingAntiAirCraftGun.MoveTransport(DirectionType.Down); _drawing.MoveTransport(DirectionType.Down);
break; break;
case "buttonLeft": case "buttonLeft":
_drawingAntiAirCraftGun.MoveTransport(DirectionType.Left); _drawing.MoveTransport(DirectionType.Left);
break; break;
case "buttonRight": case "buttonRight":
_drawingAntiAirCraftGun.MoveTransport(DirectionType.Right); _drawing.MoveTransport(DirectionType.Right);
break; break;
} }
Draw(); Draw();
} }
private void Draw() private void Draw()
{ {
if (_drawingAntiAirCraftGun == null) if (_drawing == null)
{ {
return; return;
} }
Bitmap bmp = new Bitmap(pictureBoxAntiAircraftGun.Width, pictureBoxAntiAircraftGun.Height); Bitmap bmp = new Bitmap(pictureBoxAntiAircraftGun.Width, pictureBoxAntiAircraftGun.Height);
Graphics gr = Graphics.FromImage(bmp); Graphics gr = Graphics.FromImage(bmp);
_drawingAntiAirCraftGun.DrawTransport(gr); _drawing.DrawTransport(gr);
pictureBoxAntiAircraftGun.Image = bmp; pictureBoxAntiAircraftGun.Image = bmp;
} }
@ -65,7 +65,7 @@ namespace AntiAircraftGun
bodyColor = dialog.Color; bodyColor = dialog.Color;
if (dialog.ShowDialog() == DialogResult.OK) if (dialog.ShowDialog() == DialogResult.OK)
dopColor = dialog.Color; dopColor = dialog.Color;
_drawingAntiAirCraftGun = new AdvancedDrawingAntiAirCraftGun( _drawing = new AdvancedDrawingAntAirCraftGun(
random.Next(100, 300), // Ńęîđîńňü random.Next(100, 300), // Ńęîđîńňü
random.Next(1000, 3000), // Âĺń random.Next(1000, 3000), // Âĺń
bodyColor, additionalColor, dopColor, bodyColor, additionalColor, dopColor,
@ -75,7 +75,7 @@ namespace AntiAircraftGun
pictureBoxAntiAircraftGun.Height pictureBoxAntiAircraftGun.Height
); );
_drawingAntiAirCraftGun.SetPosition(random.Next(10, 100), random.Next(10, 100)); _drawing.SetPosition(random.Next(10, 100), random.Next(10, 100));
Draw(); Draw();
} }
@ -89,7 +89,7 @@ namespace AntiAircraftGun
{ {
bodyColor = dialog.Color; bodyColor = dialog.Color;
} }
_drawingAntiAirCraftGun = new BaseDrawingAntiAirCraftGun( _drawing = new BaseDrawingAntiAirCraftGun(
random.Next(100, 300), // Ńęîđîńňü random.Next(100, 300), // Ńęîđîńňü
random.Next(1000, 3000), // Âĺń random.Next(1000, 3000), // Âĺń
bodyColor, additionalColor, bodyColor, additionalColor,
@ -97,13 +97,13 @@ namespace AntiAircraftGun
pictureBoxAntiAircraftGun.Height pictureBoxAntiAircraftGun.Height
); );
_drawingAntiAirCraftGun.SetPosition(random.Next(10, 100), random.Next(10, 100)); _drawing.SetPosition(random.Next(10, 100), random.Next(10, 100));
Draw(); Draw();
} }
private void ButtonStep_Click(object sender, EventArgs e) private void ButtonStep_Click(object sender, EventArgs e)
{ {
if (_drawingAntiAirCraftGun == null) if (_drawing == null)
{ {
return; return;
} }
@ -121,7 +121,7 @@ namespace AntiAircraftGun
return; return;
} }
_abstractStrategy.SetData(new _abstractStrategy.SetData(new
DrawingObjectAntiAirCraftGun(_drawingAntiAirCraftGun), pictureBoxAntiAircraftGun.Width, DrawingObjectAntiAirCraftGun(_drawing), pictureBoxAntiAircraftGun.Width,
pictureBoxAntiAircraftGun.Height); pictureBoxAntiAircraftGun.Height);
comboBoxStrategy.Enabled = false; comboBoxStrategy.Enabled = false;
} }
@ -140,7 +140,7 @@ namespace AntiAircraftGun
} }
private void ButtonSelectZenit_Click(object sender, EventArgs e) private void ButtonSelectZenit_Click(object sender, EventArgs e)
{ {
SelectedZenit = _drawingAntiAirCraftGun; SelectedZenit = _drawing;
DialogResult = DialogResult.OK; DialogResult = DialogResult.OK;
} }

View File

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AntiAircraftGun.MovementStrategy
{
public enum BorderDirection
{
Left,
Right,
Top,
Bottom
}
}

View File

@ -9,28 +9,28 @@ namespace AntiAircraftGun.MovementStrategy
{ {
public class DrawingObjectAntiAirCraftGun : IMoveableObject public class DrawingObjectAntiAirCraftGun : IMoveableObject
{ {
private readonly BaseDrawingAntiAirCraftGun? _drawningAntiAirCraftGun = null; private readonly BaseDrawingAntiAirCraftGun? _drawningCar = null;
public DrawingObjectAntiAirCraftGun(BaseDrawingAntiAirCraftGun drawningCar) public DrawingObjectAntiAirCraftGun(BaseDrawingAntiAirCraftGun drawningCar)
{ {
_drawningAntiAirCraftGun = drawningCar; _drawningCar = drawningCar;
} }
public ObjectParameters? GetObjectPosition public ObjectParameters? GetObjectPosition
{ {
get get
{ {
if (_drawningAntiAirCraftGun == null || _drawningAntiAirCraftGun.AntiAirСraftGun == if (_drawningCar == null || _drawningCar.EntityAntiAirСraftGun ==
null) null)
{ {
return null; return null;
} }
return new ObjectParameters(_drawningAntiAirCraftGun.GetPosX, return new ObjectParameters(_drawningCar.GetPosX,
_drawningAntiAirCraftGun.GetPosY, _drawningAntiAirCraftGun.GetWidth, _drawningAntiAirCraftGun.GetHeight); _drawningCar.GetPosY, _drawningCar.GetWidth, _drawningCar.GetHeight);
} }
} }
public int GetStep => (int)(_drawningAntiAirCraftGun?.AntiAirСraftGun?.Step ?? 0); public int GetStep => (int)(_drawningCar?.EntityAntiAirСraftGun?.Step ?? 0);
public bool CheckCanMove(DirectionType direction) => public bool CheckCanMove(DirectionType direction) =>
_drawningAntiAirCraftGun?.CanMove(direction) ?? false; _drawningCar?.CanMove(direction) ?? false;
public void MoveObject(DirectionType direction) => public void MoveObject(DirectionType direction) =>
_drawningAntiAirCraftGun?.MoveTransport(direction); _drawningCar?.MoveTransport(direction);
} }
} }