PIbd-14 Oripov SH. H. LabWork01 Simple #1
@ -7,6 +7,9 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace ProjectAircraft12;
|
||||
|
||||
/// <summary>
|
||||
/// Класс, отвечающий за прорисовку и перемещение объекта-сущности
|
||||
/// </summary>
|
||||
public class DrawningAircraft
|
||||
{
|
||||
|
||||
@ -43,7 +46,7 @@ public class DrawningAircraft
|
||||
/// <summary>
|
||||
/// Высота прорисовки самолета
|
||||
/// </summary>
|
||||
private readonly int _drawingAircraftHeight = 40;
|
||||
private readonly int _drawingAircraftHeight = 50;
|
||||
|
||||
/// <summary>
|
||||
/// Инициализация свойств
|
||||
@ -73,9 +76,19 @@ public class DrawningAircraft
|
||||
public bool SetPictureSize(int width, int height)
|
||||
{
|
||||
// TODO: проверка, что объект "влезает" в размеры поля
|
||||
_pictureWidth = width;
|
||||
_pictureHeight = height;
|
||||
return true;
|
||||
if (width > _drawingAircraftWidth && height > _drawingAircraftHeight)
|
||||
{
|
||||
_pictureWidth = width;
|
||||
_pictureHeight = height;
|
||||
return true;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -92,9 +105,38 @@ public class DrawningAircraft
|
||||
|
||||
// TODO: если при установке объекта в эти координаты, он будет "выходить" за границы формы
|
||||
// то надо изменить координаты, чтобы он оставался в этих границах
|
||||
if (x < 0)
|
||||
{
|
||||
_startPosX = 0;
|
||||
}
|
||||
|
||||
_startPosX = x;
|
||||
_startPosY = y;
|
||||
if(_pictureWidth < x + _drawingAircraftWidth)
|
||||
{
|
||||
_startPosX = _drawingAircraftWidth - _drawingAircraftWidth;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
_startPosX = x;
|
||||
}
|
||||
|
||||
if (y < 0)
|
||||
{
|
||||
_startPosY = 0;
|
||||
}
|
||||
|
||||
if (_pictureHeight < y + _drawingAircraftWidth)
|
||||
{
|
||||
_startPosY = _pictureHeight - _drawingAircraftWidth;
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
_startPosY = y;
|
||||
}
|
||||
|
||||
//_startPosX = x;
|
||||
//_startPosY = y;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -126,21 +168,19 @@ public class DrawningAircraft
|
||||
return true;
|
||||
|
||||
case DirectionType.Right:
|
||||
if (_startPosX.Value + EntityAircraft.Step < _pictureWidth - 60) //-60
|
||||
if (_startPosX.Value + _drawingAircraftWidth + EntityAircraft.Step < _pictureWidth)
|
||||
{
|
||||
_startPosX += (int)EntityAircraft.Step - 20;
|
||||
_startPosX += (int)EntityAircraft.Step;
|
||||
}
|
||||
return true;
|
||||
|
||||
case DirectionType.Down:
|
||||
if (_startPosY.Value + EntityAircraft.Step < _pictureHeight)
|
||||
if (_startPosY.Value + _drawingAircraftHeight + EntityAircraft.Step < _pictureHeight)
|
||||
{
|
||||
_startPosY += (int)EntityAircraft.Step;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
// Если вдруг передали неизвестное направление — возврат по умолчанию
|
||||
return false;
|
||||
|
||||
|
||||
@ -196,12 +236,13 @@ public class DrawningAircraft
|
||||
g.FillPolygon(bodyBrush, trianglePoints); // Закрашенный треугольник
|
||||
g.DrawPolygon(pen, trianglePoints); // Контур треугольника
|
||||
|
||||
|
||||
// бак
|
||||
Rectangle rect = new Rectangle(_startPosX.Value - 5, _startPosY.Value + 5, 30, 10); // Прямоугольник от заданной точки
|
||||
int radius = 4; // Радиус скругления
|
||||
DrawRoundedRectangle(g, bodyBrush, Pens.Black, rect, radius);
|
||||
|
||||
if (EntityAircraft.ExtraFuelTanks)
|
||||
{
|
||||
// бак
|
||||
Rectangle extraFuelTanks = new Rectangle(_startPosX.Value - 5, _startPosY.Value + 5, 30, 10); // Прямоугольник от заданной точки
|
||||
int radius_extraFuelTanks = 4; // Радиус скругления
|
||||
DrawRoundedRectangle(g, bodyBrush, Pens.Black, extraFuelTanks, radius_extraFuelTanks);
|
||||
}
|
||||
|
||||
// oldi uchburchak
|
||||
Point[] triangle_right = {
|
||||
@ -240,11 +281,13 @@ public class DrawningAircraft
|
||||
g.DrawRectangle(koliso3, _startPosX.Value + 88, _startPosY.Value + 35, 4, 4);
|
||||
g.FillRectangle(brush, _startPosX.Value + 88, _startPosY.Value + 35, 4, 4);
|
||||
|
||||
|
||||
// radar
|
||||
Rectangle radar = new Rectangle(_startPosX.Value + 50, _startPosY.Value - 5, 20, 10); // Прямоугольник от заданной точки
|
||||
int radius_radara = 6; // Радиус скругления
|
||||
DrawRoundedRectangle(g, bodyBrush, Pens.Black, radar, radius_radara);
|
||||
if (EntityAircraft.Radar)
|
||||
{
|
||||
// radar
|
||||
Rectangle radar = new Rectangle(_startPosX.Value + 50, _startPosY.Value - 5, 20, 10); // Прямоугольник от заданной точки
|
||||
int radius_radara = 6; // Радиус скругления
|
||||
DrawRoundedRectangle(g, bodyBrush, Pens.Black, radar, radius_radara);
|
||||
}
|
||||
|
||||
Pen os_radar = new Pen(Color.Black, 2); // Чёрная линия толщиной 1 пикселя
|
||||
g.DrawLine(os_radar, _startPosX.Value + 60, _startPosY.Value + 10, _startPosX.Value + 60, _startPosY.Value + 5);
|
||||
|
@ -43,13 +43,10 @@ public class EntityAircraft
|
||||
/// </summary>
|
||||
public double Step => Speed * 100 / Weight;
|
||||
|
||||
public int WindowCount { get; internal set; }
|
||||
public bool BodyKit { get; internal set; }
|
||||
public bool Wing { get; internal set; }
|
||||
|
||||
/// <summary>
|
||||
/// Инициализация полей объекта-класса самолета
|
||||
/// </summary>
|
||||
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес самолета</param>
|
||||
/// <param name="bodyColor">Основной цвет</param>
|
||||
|
Loading…
x
Reference in New Issue
Block a user