Доделанная лабораторная №2
This commit is contained in:
parent
3a23ad0810
commit
2199a05ce4
@ -18,7 +18,7 @@ public class DrawningAirPlane : DrawningPlane
|
||||
/// <param name="radar">Признак наличия обвеса</param>
|
||||
/// <param name="dopBak">Признак наличия антикрыла</param>
|
||||
/// <param name="chassi">Признак наличия гоночной полосы</param>
|
||||
public DrawningAirPlane(int speed, double weight, Color bodyColor, Color additionalColor, bool radar, bool dopBak, bool chassi) : base(190, 70)
|
||||
public DrawningAirPlane(int speed, double weight, Color bodyColor, Color additionalColor, bool radar, bool dopBak, bool chassi) : base(195, 70)
|
||||
{
|
||||
EntityPlane = new EntityAirPlane(speed, weight, bodyColor, additionalColor, radar, dopBak, chassi);
|
||||
|
||||
@ -46,19 +46,21 @@ public class DrawningAirPlane : DrawningPlane
|
||||
|
||||
}
|
||||
|
||||
_startPosX += 0;
|
||||
_startPosY += 0;
|
||||
|
||||
base.DrawTransport(g);
|
||||
_startPosX -= 0;
|
||||
_startPosY -= 0;
|
||||
|
||||
|
||||
|
||||
if (airPlane.DopBak)
|
||||
{
|
||||
//бак
|
||||
g.FillEllipse(additionalBrush, _startPosX.Value, _startPosY.Value + 45, 40, 20);
|
||||
g.DrawEllipse(pen, _startPosX.Value, _startPosY.Value + 45, 40, 20);
|
||||
|
||||
}
|
||||
|
||||
if (airPlane.Radar)
|
||||
{
|
||||
//радар
|
||||
g.DrawLine(pen, _startPosX.Value + 60, _startPosY.Value + 25, _startPosX.Value + 60, _startPosY.Value + 15);
|
||||
g.DrawLine(pen, _startPosX.Value + 60, _startPosY.Value + 15, _startPosX.Value + 67, _startPosY.Value + 11);
|
||||
@ -73,10 +75,9 @@ public class DrawningAirPlane : DrawningPlane
|
||||
};
|
||||
g.FillPolygon(additionalBrush, curvePoints3);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -32,7 +32,7 @@ public class DrawningPlane
|
||||
/// <summary>
|
||||
/// Ширина прорисовки самолёта
|
||||
/// </summary>
|
||||
private readonly int _drawningAirPlaneWidth = 190;
|
||||
private readonly int _drawningAirPlaneWidth = 195;
|
||||
|
||||
/// <summary>
|
||||
/// Высота прорисовки самолёта
|
||||
@ -91,10 +91,10 @@ public class DrawningPlane
|
||||
/// <param name="drawningAirPlaneHeight">Высота прорисовки самолёта</param>
|
||||
|
||||
|
||||
protected DrawningPlane(int drawningAirPlaneWidth, int drawningAirPlaneHeight) : this()
|
||||
protected DrawningPlane(int drawningPlaneWidth, int drawningPlaneHeight) : this()
|
||||
{
|
||||
_drawningAirPlaneWidth = drawningAirPlaneWidth;
|
||||
_drawningAirPlaneHeight = drawningAirPlaneHeight;
|
||||
_drawningAirPlaneWidth = drawningPlaneWidth;
|
||||
_drawningAirPlaneHeight = drawningPlaneHeight;
|
||||
|
||||
}
|
||||
|
||||
@ -109,9 +109,26 @@ public class DrawningPlane
|
||||
{
|
||||
// TODO проверка, что объект "влезает" в размеры поля
|
||||
|
||||
// если влезает, сохраняем границы и корректируем позицию объекта, если она была уже установлена
|
||||
if (_drawningAirPlaneWidth > width || _drawningAirPlaneHeight > height)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
_pictureWidth = width;
|
||||
_pictureHeight = height;
|
||||
if (_startPosX.HasValue || _startPosY.HasValue)
|
||||
{
|
||||
if (_startPosX + _drawningAirPlaneWidth > _pictureWidth)
|
||||
{
|
||||
_startPosX = _pictureWidth - _drawningAirPlaneWidth;
|
||||
}
|
||||
else if (_startPosX < 0) _startPosX = 0;
|
||||
if (_startPosY + _drawningAirPlaneHeight > _pictureHeight)
|
||||
{
|
||||
_startPosY = _pictureHeight - _drawningAirPlaneHeight;
|
||||
}
|
||||
else if (_startPosY < 0) _startPosY = 0;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -203,6 +220,13 @@ public class DrawningPlane
|
||||
Pen pen = new(Color.Black);
|
||||
Brush additionalBrush = new SolidBrush(EntityPlane.BodyColor);
|
||||
|
||||
|
||||
//шасси
|
||||
g.DrawLine(pen, _startPosX.Value + 50, _startPosY.Value + 55, _startPosX.Value + 50, _startPosY.Value + 70);
|
||||
g.DrawLine(pen, _startPosX.Value + 150, _startPosY.Value + 55, _startPosX.Value + 150, _startPosY.Value + 70);
|
||||
g.FillEllipse(additionalBrush, _startPosX.Value + 40, _startPosY.Value + 65, 10, 10);
|
||||
g.FillEllipse(additionalBrush, _startPosX.Value + 50, _startPosY.Value + 65, 10, 10);
|
||||
g.FillEllipse(additionalBrush, _startPosX.Value + 145, _startPosY.Value + 65, 10, 10);
|
||||
// корпус
|
||||
Brush br = new SolidBrush(EntityPlane.BodyColor);
|
||||
g.DrawRectangle(pen, _startPosX.Value, _startPosY.Value + 25, 170, 30);
|
||||
|
@ -118,6 +118,7 @@
|
||||
ButtonCreatePlane.TabIndex = 6;
|
||||
ButtonCreatePlane.Text = "Создать самолёт";
|
||||
ButtonCreatePlane.UseVisualStyleBackColor = true;
|
||||
ButtonCreatePlane.Click += ButtonCreatePlane_Click;
|
||||
//
|
||||
// comboBoxStrategy
|
||||
//
|
||||
@ -137,7 +138,7 @@
|
||||
buttonStrategyStepS.TabIndex = 8;
|
||||
buttonStrategyStepS.Text = "Шаг";
|
||||
buttonStrategyStepS.UseVisualStyleBackColor = true;
|
||||
buttonStrategyStepS.Click += buttonStrategyStepS_Click;
|
||||
buttonStrategyStepS.Click += ButtonStrategyStep_Click;
|
||||
//
|
||||
// FormAirPlane
|
||||
//
|
||||
|
@ -1,6 +1,7 @@
|
||||
using ProjectAirPlane.Drawnings;
|
||||
using ProjectAirPlane.MovementStrategy;
|
||||
|
||||
|
||||
namespace ProjectAirPlane;
|
||||
|
||||
/// <summary>
|
||||
@ -130,12 +131,9 @@ public partial class FormAirPlane : Form
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void buttonStrategyStepS_Click(object sender, EventArgs e)
|
||||
private void ButtonStrategyStep_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (_drawningPlane == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (_drawningPlane == null) return;
|
||||
|
||||
if (comboBoxStrategy.Enabled)
|
||||
{
|
||||
@ -149,7 +147,7 @@ public partial class FormAirPlane : Form
|
||||
{
|
||||
return;
|
||||
}
|
||||
_strategy.SetData(new MoveablePlane(_drawningPlane), pictureBoxAirPlane.Height, pictureBoxAirPlane.Width);
|
||||
_strategy.SetData(new MoveablePlane(_drawningPlane), pictureBoxAirPlane.Width, pictureBoxAirPlane.Height);
|
||||
}
|
||||
|
||||
if (_strategy == null)
|
||||
@ -167,4 +165,6 @@ public partial class FormAirPlane : Form
|
||||
_strategy = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -21,4 +21,6 @@ public interface IMoveableObject
|
||||
/// <param name="direction">Направление</param>
|
||||
/// <returns>true - объект перемещен, false - перемещение невозможно</returns>
|
||||
bool TryMoveObject(MovementDirection direction);
|
||||
|
||||
protected void Move();
|
||||
}
|
@ -1,5 +1,5 @@
|
||||
namespace ProjectAirPlane.MovementStrategy;
|
||||
|
||||
|
||||
namespace ProjectAirPlane.MovementStrategy;
|
||||
|
||||
/// <summary>
|
||||
/// Стратегия перемещения объекта в центр экрана
|
||||
@ -13,11 +13,9 @@ public class MoveToCenter : AbstractStrategy
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return objParams.ObjectMiddleHorizontal - GetStep() <= FieldWidth / 2 && objParams.ObjectMiddleHorizontal + GetStep() >= FieldWidth / 2 &&
|
||||
objParams.ObjectMiddleVertical - GetStep() <= FieldHeight / 2 && objParams.ObjectMiddleVertical + GetStep() >= FieldHeight / 2;
|
||||
objParams.ObjectMiddleVertical - GetStep() <= FieldHeight / 2 && objParams.ObjectMiddleVertical + GetStep() >= FieldHeight / 2;
|
||||
}
|
||||
|
||||
protected override void MoveToTarget()
|
||||
{
|
||||
ObjectParameters? objParams = GetObjectParameters;
|
||||
@ -25,7 +23,6 @@ public class MoveToCenter : AbstractStrategy
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
int diffX = objParams.ObjectMiddleHorizontal - FieldWidth / 2;
|
||||
if (Math.Abs(diffX) > GetStep())
|
||||
{
|
||||
@ -38,7 +35,6 @@ public class MoveToCenter : AbstractStrategy
|
||||
MoveRight();
|
||||
}
|
||||
}
|
||||
|
||||
int diffY = objParams.ObjectMiddleVertical - FieldHeight / 2;
|
||||
if (Math.Abs(diffY) > GetStep())
|
||||
{
|
||||
@ -53,3 +49,4 @@ public class MoveToCenter : AbstractStrategy
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -58,4 +58,9 @@ public class MoveablePlane : IMoveableObject
|
||||
_ => DirectionType.Unknow,
|
||||
};
|
||||
}
|
||||
|
||||
void IMoveableObject.Move()
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user