сделала проверки

This commit is contained in:
Камилия Сафиулова 2023-09-26 13:55:59 +04:00
parent 0ed6a26e24
commit 0c81d916fc
3 changed files with 86 additions and 78 deletions

View File

@ -8,7 +8,7 @@ namespace Catamaran
private DrawningCatamaran? _drawningCatamaran;
/// <summary>
/// Ìåòîä ïðîðèñîâêè ìàøèíû
/// Ìåòîä ïðîðèñîâêè êàòàìàðàíà
/// </summary>
private void Draw()
{
@ -70,7 +70,7 @@ namespace Catamaran
Color.FromArgb(random.Next(0, 256), random.Next(0, 256),
random.Next(0, 256)),
Convert.ToBoolean(random.Next(0, 2)),
Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)), pictureBoxCatamaran.Width, pictureBoxCatamaran.Height);
Convert.ToBoolean(random.Next(0, 2)), pictureBoxCatamaran.Width, pictureBoxCatamaran.Height);
_drawningCatamaran.SetPosition(random.Next(10, 100),
random.Next(10, 100));
Draw();

View File

@ -24,21 +24,21 @@ namespace Catamaran
/// </summary>
private int _pictureHeight;
/// <summary>
/// Левая координата прорисовки автомобиля
/// Левая координата прорисовки катамарана
/// </summary>
private int _startPosX;
/// <summary>
/// Верхняя кооридната прорисовки автомобиля
/// Верхняя кооридната прорисовки катамарана
/// </summary>
private int _startPosY;
/// <summary>
/// Ширина прорисовки автомобиля
/// Ширина прорисовки катамарана
/// </summary>
private readonly int _carWidth = 110;
private readonly int _CatamaranWidth = 190;
/// <summary>
/// Высота прорисовки автомобиля
/// Высота прорисовки катамарана
/// </summary>
private readonly int _carHeight = 60;
private readonly int _CatamaranHeight = 120;
/// <summary>
/// Инициализация свойств
/// </summary>
@ -46,20 +46,28 @@ namespace Catamaran
/// <param name="weight">Вес</param>
/// <param name="bodyColor">Цвет корпуса</param>
/// <param name="additionalColor">Дополнительный цвет</param>
/// <param name="bodySail">Признак наличия паруса</param>
/// <param name="sail">Признак наличия паруса</param>
/// <param name="floatDetail">Признак наличия поплавков</param>
/// <param name="width">Ширина картинки</param>
/// <param name="height">Высота картинки</param>
/// <returns>true - объект создан, false - проверка не пройдена, нельзя создать объект в этих размерах</returns>
public bool Init(int speed, double weight, Color bodyColor, Color
additionalColor, bool bodySail, bool wing, bool sportLine, int width, int height)
additionalColor, bool sail, bool floatDetail, int width, int height)
{
// TODO: Продумать проверки
_pictureWidth = width;
_pictureHeight = height;
EntityCatamaran = new EntityCatamaran();
EntityCatamaran.Init(speed, weight, bodyColor, additionalColor,
bodySail, wing, sportLine);
return true;
if (width >= _pictureWidth && height >= _pictureHeight)
{
_pictureWidth = width;
_pictureHeight = height;
EntityCatamaran = new EntityCatamaran();
EntityCatamaran.Init(speed, weight, bodyColor, additionalColor, sail, floatDetail);
return true;
}
else
{
return false; // Возвращаем false, если размеры формы недостаточны
}
}
/// <summary>
/// Установка позиции
@ -68,9 +76,11 @@ namespace Catamaran
/// <param name="y">Координата Y</param>
public void SetPosition(int x, int y)
{
// TODO: Изменение x, y
_startPosX = x;
_startPosY = y;
if (x >= 0 && x + _CatamaranWidth <= _pictureWidth && y >= 0 && y + _CatamaranHeight <= _pictureHeight)
{
_startPosX = x;
_startPosY = y;
}
}
/// <summary>
/// Изменение направления перемещения
@ -100,15 +110,14 @@ namespace Catamaran
break;
// вправо
case Direction.Right:
if (_startPosX + _carWidth + EntityCatamaran.Step < _pictureWidth )
if (_startPosX + _CatamaranWidth + EntityCatamaran.Step < _pictureWidth )
{
_startPosX += (int)EntityCatamaran.Step;
}
break;
//вниз
case Direction.Down:
if (_startPosY + _carHeight + EntityCatamaran.Step < _pictureHeight)
if (_startPosY + _CatamaranHeight + EntityCatamaran.Step < _pictureHeight)
{
_startPosY += (int)EntityCatamaran.Step;
}
@ -125,63 +134,68 @@ namespace Catamaran
{
return;
}
Pen pen = new(Color.Black, 4);
Pen pen = new(Color.Black, 3);
Brush additionalBrush = new
SolidBrush(EntityCatamaran.AdditionalColor);
Brush bodyBrush = new
SolidBrush(EntityCatamaran.BodyColor);
//поплавки
Point[] floatDetail1 = new Point[]
{
new Point(_startPosX + 10, _startPosY + 40),
new Point(_startPosX + 170, _startPosY + 40),
new Point(_startPosX + 200, _startPosY + 55),
new Point(_startPosX + 170, _startPosY + 70),
new Point(_startPosX + 10, _startPosY + 70),
};
Point[] floatDetail2 = new Point[]
{
new Point(_startPosX + 10, _startPosY + 90),
new Point(_startPosX + 170, _startPosY + 90),
new Point(_startPosX + 200, _startPosY + 105),
new Point(_startPosX + 170, _startPosY + 120),
new Point(_startPosX + 10, _startPosY + 120),
};
if (EntityCatamaran.Float)
{
g.FillPolygon(additionalBrush, floatDetail1);
g.FillPolygon(additionalBrush, floatDetail2);
//границы катамарана
Point[] floatDetail1 = new Point[]
{
new Point(_startPosX, _startPosY + 40),
new Point(_startPosX + 170, _startPosY + 40),
new Point(_startPosX + 190, _startPosY + 55),
new Point(_startPosX + 170, _startPosY + 70),
new Point(_startPosX, _startPosY + 70),
};
Point[] floatDetail2 = new Point[]
{
new Point(_startPosX, _startPosY + 90),
new Point(_startPosX + 170, _startPosY + 90),
new Point(_startPosX + 190, _startPosY + 105),
new Point(_startPosX + 170, _startPosY + 120),
new Point(_startPosX, _startPosY + 120),
};
g.FillPolygon(additionalBrush, floatDetail1);
g.FillPolygon(additionalBrush, floatDetail2);
g.DrawPolygon(pen, floatDetail1);
g.DrawPolygon(pen, floatDetail2);
}
//основание катамарана
Point[] hull = new Point[]
{
{
new Point(_startPosX + 20, _startPosY + 50),
new Point(_startPosX + 130, _startPosY + 50),
new Point(_startPosX + 170, _startPosY + 80),
new Point(_startPosX + 130, _startPosY + 110),
new Point(_startPosX + 20, _startPosY + 110),
};
g.DrawPolygon(pen, hull);
g.FillPolygon(bodyBrush, hull);
};
g.FillPolygon(bodyBrush, hull);
g.DrawPolygon(pen, hull);
SolidBrush brushBrown = new SolidBrush(Color.Brown);
g.FillEllipse(brushBrown, _startPosX + 30, _startPosY + 60, 100, 40);
//парус
Point[] sail = new Point[]
{
new Point(_startPosX + 30, _startPosY + 80),
new Point(_startPosX + 70, _startPosY+10),
new Point(_startPosX + 145, _startPosY + 80),
};
g.DrawPolygon(pen, sail);
SolidBrush brushBlue = new SolidBrush(Color.LightBlue);
g.FillPolygon(brushBlue, sail);
g.DrawRectangle(pen, _startPosX + 70, _startPosY, 4, 85);
if (EntityCatamaran.Sail)
{
Point[] sail = new Point[]
{
new Point(_startPosX + 30, _startPosY + 80),
new Point(_startPosX + 70, _startPosY+10),
new Point(_startPosX + 145, _startPosY + 80),
};
g.DrawPolygon(pen, sail);
g.FillPolygon(additionalBrush, sail);
g.DrawPolygon(pen, sail);
g.DrawRectangle(pen, _startPosX + 70, _startPosY, 3, 85);
}
}
}
}

View File

@ -25,41 +25,35 @@ namespace Catamaran
/// </summary>
public Color AdditionalColor { get; private set; }
/// <summary>
/// Признак (опция) наличия обвеса
/// Признак (опция) наличия паруса
/// </summary>
public bool BodyKit { get; private set; }
public bool Sail { get; private set; }
/// <summary>
/// Признак (опция) наличия антикрыла
/// Признак (опция) наличия поплавков
/// </summary>
public bool Wing { get; private set; }
public bool Float { get; private set; }
/// <summary>
/// Признак (опция) наличия гоночной полосы
/// </summary>
public bool SportLine { get; private set; }
/// <summary>
/// Шаг перемещения автомобиля
/// Шаг перемещения катамарана
/// </summary>
public double Step => (double)Speed * 100 / Weight;
/// <summary>
/// Инициализация полей объекта-класса спортивного автомобиля
/// Инициализация полей объекта-класса катамарана
/// </summary>
/// <param name="speed">Скорость</param>
/// <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="sail">Признак наличия паруса</param>
/// <param name="floatDetail">Признак наличия поплавков</param>
public void Init(int speed, double weight, Color bodyColor, Color
additionalColor, bool bodyKit, bool wing, bool sportLine)
additionalColor, bool sail, bool floatDetail)
{
Speed = speed;
Weight = weight;
BodyColor = bodyColor;
AdditionalColor = additionalColor;
BodyKit = bodyKit;
Wing = wing;
SportLine = sportLine;
Sail = sail;
Float = floatDetail;
}
}
}