сделала проверки
This commit is contained in:
parent
0ed6a26e24
commit
0c81d916fc
@ -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();
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user