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

View File

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