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

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

View File

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

View File

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