LabWork01

This commit is contained in:
cleverman1337 2024-04-04 09:26:44 +04:00
parent 9eff3d959a
commit dcc4f2c688
2 changed files with 46 additions and 34 deletions

View File

@ -39,9 +39,9 @@ public class DrawningArtillery
/// <param name="weight">Вес</param> /// <param name="weight">Вес</param>
/// <param name="bodyColor">Основной цвет</param> /// <param name="bodyColor">Основной цвет</param>
/// <param name="additionalColor">Дополнительный цвет</param> /// <param name="additionalColor">Дополнительный цвет</param>
/// <param name="bodyKit">Признак наличия обвеса</param> /// <param name="cannon">Признак наличия пушки</param>
/// <param name="wing">Признак наличия антикрыла</param> /// <param name="rocket">Признак наличия залповой установки</param>
/// <param name="sportLine">Признак наличия гоночной полосы</param>
public void Init(int speed, double weight, Color bodyColor, Color public void Init(int speed, double weight, Color bodyColor, Color
additionalColor, bool cannon, bool rocket) additionalColor, bool cannon, bool rocket)
{ {
@ -60,15 +60,20 @@ public class DrawningArtillery
/// <returns>true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах</returns> /// <returns>true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах</returns>
public bool SetPictureSize(int width, int height) public bool SetPictureSize(int width, int height)
{ {
// TODO проверка, что объект "влезает" в размеры поля if (_drawningArtilleryHeight > height || _drawningArtilleryWidth > width)
// если влезает, сохраняем границы и корректируем позицию объекта,если она была уже установлена
if (width >= _drawningArtilleryWidth && height >= _drawningArtilleryHeight)
{ {
return false;
}
_pictureWidth = width; _pictureWidth = width;
_pictureHeight = height; _pictureHeight = height;
return true;
if (_startPosX.HasValue && _startPosY.HasValue)
{
SetPosition(_startPosX.Value, _startPosY.Value);
} }
return false;
return true;
} }
/// <summary> /// <summary>
/// Установка позиции /// Установка позиции
@ -83,17 +88,24 @@ public class DrawningArtillery
} }
// TODO если при установке объекта в эти координаты, он будет "выходить" за границы формы // TODO если при установке объекта в эти координаты, он будет "выходить" за границы формы
// то надо изменить координаты, чтобы он оставался в этих границах // то надо изменить координаты, чтобы он оставался в этих границах
if (x + 110 > _pictureWidth.Value) if (x < 0 || x + _drawningArtilleryWidth > _pictureWidth)
{ {
x -= (x + 110) - _pictureWidth.Value; _startPosX = _pictureWidth - _drawningArtilleryWidth;
} }
if (y + 60 > _pictureHeight.Value) else
{ {
y -= (y + 60) - _pictureHeight.Value;
}
_startPosX = x; _startPosX = x;
}
if (y < 0 || y + _drawningArtilleryHeight > _pictureHeight)
{
_startPosY = _pictureHeight - _drawningArtilleryHeight;
}
else
{
_startPosY = y; _startPosY = y;
} }
}
/// <summary> /// <summary>
/// Изменение направления перемещения /// Изменение направления перемещения
/// </summary> /// </summary>
@ -160,53 +172,53 @@ public class DrawningArtillery
Brush grayBrush = new SolidBrush(Color.Gray); Brush grayBrush = new SolidBrush(Color.Gray);
Brush blackBrush = new SolidBrush(Color.Black); Brush blackBrush = new SolidBrush(Color.Black);
//тело //тело
g.FillRectangle(additionalBrush, _startPosX.Value, _startPosY.Value + 40, 110, 20); g.FillRectangle(brush, _startPosX.Value, _startPosY.Value + 40, 110, 20);
g.DrawRectangle(pen, _startPosX.Value, _startPosY.Value + 40, 110, 20); g.DrawRectangle(pen, _startPosX.Value, _startPosY.Value + 40, 110, 20);
//башня //башня
g.FillRectangle(additionalBrush, _startPosX.Value+30, _startPosY.Value+20,50,20); g.FillRectangle(brush, _startPosX.Value+30, _startPosY.Value+20,50,20);
g.DrawRectangle(pen, _startPosX.Value+30, _startPosY.Value + 20, 50, 20); g.DrawRectangle(pen, _startPosX.Value+30, _startPosY.Value + 20, 50, 20);
//ходовая //ходовая
//основа //основа
g.DrawEllipse(pen, _startPosX.Value, _startPosY.Value + 50, 110, 20); g.DrawEllipse(pen, _startPosX.Value, _startPosY.Value + 50, 110, 20);
g.FillEllipse(grayBrush, _startPosX.Value, _startPosY.Value + 50, 110, 20); g.FillEllipse(grayBrush, _startPosX.Value, _startPosY.Value + 50, 110, 20);
//1-e //1-й
g.DrawEllipse(pen, _startPosX.Value + 25, _startPosY.Value + 58, 11, 11); g.DrawEllipse(pen, _startPosX.Value + 25, _startPosY.Value + 58, 11, 11);
g.FillEllipse(blackBrush, _startPosX.Value + 25, _startPosY.Value + 58, 11, 11); g.FillEllipse(blackBrush, _startPosX.Value + 25, _startPosY.Value + 58, 11, 11);
//2-ое //2-й
g.DrawEllipse(pen, _startPosX.Value + 40, _startPosY.Value + 58, 11, 11); g.DrawEllipse(pen, _startPosX.Value + 40, _startPosY.Value + 58, 11, 11);
g.FillEllipse(blackBrush, _startPosX.Value + 40, _startPosY.Value + 58, 11, 11); g.FillEllipse(blackBrush, _startPosX.Value + 40, _startPosY.Value + 58, 11, 11);
//3-ее //3-й
g.DrawEllipse(pen, _startPosX.Value + 55, _startPosY.Value + 58, 11, 11); g.DrawEllipse(pen, _startPosX.Value + 55, _startPosY.Value + 58, 11, 11);
g.FillEllipse(blackBrush, _startPosX.Value + 55, _startPosY.Value + 58, 11, 11); g.FillEllipse(blackBrush, _startPosX.Value + 55, _startPosY.Value + 58, 11, 11);
//4-ое //4-й
g.DrawEllipse(pen, _startPosX.Value + 70, _startPosY.Value + 58, 11, 11); g.DrawEllipse(pen, _startPosX.Value + 70, _startPosY.Value + 58, 11, 11);
g.FillEllipse(blackBrush, _startPosX.Value + 70, _startPosY.Value + 58, 11, 11); g.FillEllipse(blackBrush, _startPosX.Value + 70, _startPosY.Value + 58, 11, 11);
//5-ое //5-ЛевБол
g.DrawEllipse(pen, _startPosX.Value + 90, _startPosY.Value + 52, 15, 15); g.DrawEllipse(pen, _startPosX.Value + 90, _startPosY.Value + 52, 15, 15);
g.FillEllipse(blackBrush, _startPosX.Value + 90, _startPosY.Value + 52, 15, 15); g.FillEllipse(blackBrush, _startPosX.Value + 90, _startPosY.Value + 52, 15, 15);
//6-ое //6-ПравБол
g.DrawEllipse(pen, _startPosX.Value + 7, _startPosY.Value + 52, 15, 15); g.DrawEllipse(pen, _startPosX.Value + 7, _startPosY.Value + 52, 15, 15);
g.FillEllipse(blackBrush, _startPosX.Value + 7, _startPosY.Value + 52, 15, 15); g.FillEllipse(blackBrush, _startPosX.Value + 7, _startPosY.Value + 52, 15, 15);
//орудие //орудие
if (EntityArtillery.Cannon) if (EntityArtillery.Cannon)
{ {
g.FillRectangle(brush, _startPosX.Value+80, _startPosY.Value + 25, 50, 5); g.FillRectangle(additionalBrush, _startPosX.Value+80, _startPosY.Value + 25, 50, 5);
g.DrawRectangle(pen, _startPosX.Value+80, _startPosY.Value + 25, 50, 5); g.DrawRectangle(pen, _startPosX.Value+80, _startPosY.Value + 25, 50, 5);
} }
//установка //установка
if (EntityArtillery.Cannon) if (EntityArtillery.Cannon)
{ {
//колонна //колонна
g.FillRectangle(brush, _startPosX.Value +5, _startPosY.Value + 10, 5, 30); g.FillRectangle(additionalBrush, _startPosX.Value +5, _startPosY.Value + 10, 5, 30);
g.DrawRectangle(pen, _startPosX.Value +5, _startPosY.Value + 10, 5, 30); g.DrawRectangle(pen, _startPosX.Value +5, _startPosY.Value + 10, 5, 30);
//контейнер //контейнер
g.FillRectangle(brush, _startPosX.Value + 3, _startPosY.Value + 5, 50, 13); g.FillRectangle(additionalBrush, _startPosX.Value + 3, _startPosY.Value + 5, 50, 13);
g.DrawRectangle(pen, _startPosX.Value + 3, _startPosY.Value + 5, 50, 13); g.DrawRectangle(pen, _startPosX.Value + 3, _startPosY.Value + 5, 50, 13);
//ракеты //ракеты
g.DrawRectangle(pen, _startPosX.Value + 52, _startPosY.Value + 5, 10, 3); g.DrawRectangle(pen, _startPosX.Value + 52, _startPosY.Value + 5, 10, 3);

View File

@ -1,6 +1,6 @@
namespace SelfPropelledArtilleryUnit; namespace SelfPropelledArtilleryUnit;
/// <summary> /// <summary>
/// Класс-сущность "Спортивный автомобиль" /// Класс-сущность "САУ"
/// </summary> /// </summary>
@ -23,11 +23,11 @@ public class EntityArtillery
/// </summary> /// </summary>
public Color AdditionalColor { get; private set; } public Color AdditionalColor { get; private set; }
/// <summary> /// <summary>
/// Признак (опция) наличия обвеса /// Признак (опция) наличия пушки
/// </summary> /// </summary>
public bool Cannon { get; private set; } public bool Cannon { get; private set; }
/// <summary> /// <summary>
/// Признак (опция) наличия антикрыла /// Признак (опция) наличия залповой установки
/// </summary> /// </summary>
public bool Rocket { get; private set; } public bool Rocket { get; private set; }
@ -42,9 +42,9 @@ public class EntityArtillery
/// <param name="weight">Вес автомобиля</param> /// <param name="weight">Вес автомобиля</param>
/// <param name="bodyColor">Основной цвет</param> /// <param name="bodyColor">Основной цвет</param>
/// <param name="additionalColor">Дополнительный цвет</param> /// <param name="additionalColor">Дополнительный цвет</param>
/// <param name="bodyKit">Признак наличия обвеса</param> /// <param name="cannon">Признак наличия пушки</param>
/// <param name="wing">Признак наличия антикрыла</param> /// <param name="rocket">Признак наличия залповой установки</param>
/// <param name="sportLine">Признак наличия гоночной полосы</param>
public void Init(int speed, double weight, Color bodyColor, Color public void Init(int speed, double weight, Color bodyColor, Color
additionalColor, bool cannon, bool rocket) additionalColor, bool cannon, bool rocket)
{ {