Лабораторная работа №1

This commit is contained in:
miromax6005@gmail.com 2024-04-07 20:20:23 +04:00
parent c4161a865c
commit 311e0f7ca4
2 changed files with 82 additions and 48 deletions

View File

@ -20,24 +20,24 @@ public class DrawningBoat
public int? _pictireHeight;
/// <summary>
/// Левая координата прорисовки катера
/// Левая координата прорисовки автобуса
/// </summary>
public int? _startPosX;
/// <summary>
/// Верхняя координата прорисовки катера
/// Верхняя координата прорисовки автобуса
/// </summary>
public int? _startPosY;
/// <summary>
/// Ширина прорисовки катера
/// Ширина прорисовки автобуса
/// </summary>
public readonly int _drawningBoatWight = 120;
public readonly int _drawningBoatWight = 150;
/// <summary>
/// Высота прорисовки катера
/// Высота прорисовки автобуса
/// </summary>
public readonly int _drawningBoatHeight = 40;
public readonly int _drawningBoatHeight = 110;
/// <summary>
/// Инициализация свойств
@ -46,12 +46,12 @@ public class DrawningBoat
/// <param name="weight">Вес</param>
/// <param name="bodyColor">Основной цвет</param>
/// <param name="additionalColor">Дополнительный цвет</param>
/// <param name="lifebuoy">Признак наличия спасательного круга</param>
/// <param name="ladder">Признак наличия лестницы</param>
/// <param name="flashlight">Признак наличия фонаря</param>
public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool lifebuoy, bool flashlight)
public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool ladder, bool flashlight)
{
EntityBoat = new EntityBoat();
EntityBoat.Init(speed, weight, bodyColor, additionalColor, lifebuoy, flashlight);
EntityBoat.Init(speed, weight, bodyColor, additionalColor, ladder, flashlight);
_pictireWight = null;
_pictireHeight = null;
_startPosX = null;
@ -153,51 +153,85 @@ public class DrawningBoat
Pen pen = new(Color.Black);
Brush additionalBrush = new SolidBrush(EntityBoat.AdditionalColor);
Brush br = new SolidBrush(EntityBoat.BodyColor);
Brush brRed = new SolidBrush(Color.Red);
Brush brBlue = new SolidBrush(Color.Blue);
Brush brBlack = new SolidBrush(Color.Black);
// кузов
g.DrawRectangle(pen, _startPosX.Value + 10, _startPosY.Value, 150, 100);
g.FillRectangle(br, _startPosX.Value + 10, _startPosY.Value, 150, 100);
// фонари
if (EntityBoat.Flashlight)
{
g.DrawEllipse(pen, _startPosX.Value + 10, _startPosY.Value + 2, 10, 6);
g.DrawEllipse(pen, _startPosX.Value + 10, _startPosY.Value + 32, 10, 6);
g.DrawEllipse(pen, _startPosX.Value + 140, _startPosY.Value + 55, 10, 10);
g.FillEllipse(brRed, _startPosX.Value + 140, _startPosY.Value + 55, 10, 10);
g.FillEllipse(additionalBrush, _startPosX.Value + 10, _startPosY.Value + 2, 10, 6);
g.FillEllipse(additionalBrush, _startPosX.Value + 10, _startPosY.Value + 32, 10, 6);
g.DrawEllipse(pen, _startPosX.Value + 140, _startPosY.Value + 70, 10, 10);
g.FillEllipse(brRed, _startPosX.Value + 140, _startPosY.Value + 70, 10, 10);
}
// границы катера
g.DrawLine(pen, _startPosX.Value + 10, _startPosY.Value, _startPosX.Value + 100, _startPosY.Value);
g.DrawLine(pen, _startPosX.Value + 100, _startPosY.Value, _startPosX.Value + 120, _startPosY.Value + 20);
g.DrawLine(pen, _startPosX.Value + 120, _startPosY.Value + 20, _startPosX.Value + 100, _startPosY.Value + 40);
g.DrawLine(pen, _startPosX.Value + 100, _startPosY.Value + 40, _startPosX.Value + 10, _startPosY.Value + 40);
// дверь
g.DrawRectangle(pen, _startPosX.Value + 50, _startPosY.Value + 30, 30, 60);
g.FillRectangle(additionalBrush, _startPosX.Value + 50, _startPosY.Value + 30, 30, 60);
// задняя часть
g.DrawLine(pen, _startPosX.Value + 10, _startPosY.Value + 40, _startPosX.Value + 10, _startPosY.Value + 30);
g.DrawLine(pen, _startPosX.Value + 10, _startPosY.Value + 30, _startPosX.Value, _startPosY.Value + 30);
g.DrawLine(pen, _startPosX.Value, _startPosY.Value + 30, _startPosX.Value + 10, _startPosY.Value + 40);
// ручка двери
g.DrawRectangle(pen, _startPosX.Value + 66, _startPosY.Value + 50,7, 4);
g.FillRectangle(brBlack, _startPosX.Value + 66, _startPosY.Value + 50, 7, 4);
g.DrawLine(pen, _startPosX.Value + 10, _startPosY.Value, _startPosX.Value + 10, _startPosY.Value + 10);
g.DrawLine(pen, _startPosX.Value + 10, _startPosY.Value + 10, _startPosX.Value, _startPosY.Value + 10);
g.DrawLine(pen, _startPosX.Value, _startPosY.Value + 10, _startPosX.Value + 10, _startPosY.Value);
// окно видителя
Brush brRed = new SolidBrush(Color.Red);
g.FillRectangle(brRed, _startPosX.Value + 5, _startPosY.Value + 10, 15, 20);
g.DrawRectangle(pen, _startPosX.Value + 135, _startPosY.Value + 5, 20, 40);
g.FillRectangle(brBlue, _startPosX.Value + 135, _startPosY.Value + 5, 20, 40);
// кузов
Brush br = new SolidBrush(EntityBoat.BodyColor);
g.FillRectangle(br, _startPosX.Value + 20, _startPosY.Value, 80, 40);
// посажирские окна
//
// первый ряд
g.DrawEllipse(pen, _startPosX.Value + 50, _startPosY.Value + 5, 16, 16);
g.FillEllipse(brBlue, _startPosX.Value + 50, _startPosY.Value + 5, 16, 16);
// окно
Brush brBlue = new SolidBrush(Color.Blue);
g.FillEllipse(brBlue, _startPosX.Value + 30, _startPosY.Value + 10, 40, 20);
g.DrawEllipse(pen, _startPosX.Value + 71, _startPosY.Value + 5, 16, 16);
g.FillEllipse(brBlue, _startPosX.Value + 71, _startPosY.Value + 5, 16, 16);
// спасательный круг
if (EntityBoat.Lifebuoy)
g.DrawEllipse(pen, _startPosX.Value + 92, _startPosY.Value + 5, 16, 16);
g.FillEllipse(brBlue, _startPosX.Value + 92, _startPosY.Value + 5, 16, 16);
g.DrawEllipse(pen, _startPosX.Value + 113, _startPosY.Value + 5, 16, 16);
g.FillEllipse(brBlue, _startPosX.Value + 113, _startPosY.Value + 5, 16, 16);
// второй ряд
g.DrawEllipse(pen, _startPosX.Value + 92, _startPosY.Value + 26, 16, 16);
g.FillEllipse(brBlue, _startPosX.Value + 92, _startPosY.Value + 26, 16, 16);
g.DrawEllipse(pen, _startPosX.Value + 113, _startPosY.Value + 26, 16, 16);
g.FillEllipse(brBlue, _startPosX.Value + 113, _startPosY.Value + 26, 16, 16);
// колёса
g.DrawEllipse(pen, _startPosX.Value + 20, _startPosY.Value + 90, 20, 20);
g.FillEllipse(additionalBrush, _startPosX.Value + 20, _startPosY.Value + 90, 20, 20);
g.DrawEllipse(pen, _startPosX.Value + 130, _startPosY.Value + 90, 20, 20);
g.FillEllipse(additionalBrush, _startPosX.Value + 130, _startPosY.Value + 90, 20, 20);
// лестница
if (EntityBoat.Ladder)
{
g.DrawEllipse(pen, _startPosX.Value + 80, _startPosY.Value + 15, 15, 15);
g.DrawEllipse(pen, _startPosX.Value + 85, _startPosY.Value + 20, 5, 5);
// вертикальные линии
g.DrawRectangle(pen, _startPosX.Value + 20, _startPosY.Value + 15, 3, 42);
g.FillRectangle(brBlack, _startPosX.Value + 20, _startPosY.Value + 15, 3, 42);
g.FillEllipse(additionalBrush, _startPosX.Value + 80, _startPosY.Value + 15, 15, 15);
g.FillEllipse(br, _startPosX.Value + 85, _startPosY.Value + 20, 5, 5);
g.DrawRectangle(pen, _startPosX.Value + 35, _startPosY.Value + 15, 3, 42);
g.FillRectangle(brBlack, _startPosX.Value + 35, _startPosY.Value + 15, 3, 42);
// горзонтальные линии
g.DrawRectangle(pen, _startPosX.Value + 15, _startPosY.Value + 25, 30, 3);
g.FillRectangle(brBlack, _startPosX.Value + 15, _startPosY.Value + 25, 30, 3);
g.DrawRectangle(pen, _startPosX.Value + 15, _startPosY.Value + 35, 30, 3);
g.FillRectangle(brBlack, _startPosX.Value + 15, _startPosY.Value + 35, 30, 3);
g.DrawRectangle(pen, _startPosX.Value + 15, _startPosY.Value + 45, 30, 3);
g.FillRectangle(brBlack, _startPosX.Value + 15, _startPosY.Value + 45, 30, 3);
}
}
}

View File

@ -1,6 +1,6 @@
namespace ProjectBoat;
/// <summary>
/// Класс-сущность "Катер"
/// Класс-сущность "Автобус"
/// </summary>
public class EntityBoat
{
@ -25,9 +25,9 @@ public class EntityBoat
public Color AdditionalColor { get; private set; }
/// <summary>
/// Признак (опция) наличия спасательного круга
/// Признак (опция) наличия лестницы
/// </summary>
public bool Lifebuoy { get; private set; }
public bool Ladder { get; private set; }
/// <summary>
/// Признак (опция) наличия фонаря
@ -35,26 +35,26 @@ public class EntityBoat
public bool Flashlight { get; private set; }
/// <summary>
/// Шаг перемещения катера
/// Шаг перемещения автобуса
/// </summary>
public double Step => Speed * 100 / Weight;
/// <summary>
/// Инициализация полей объекта-класса катера
/// Инициализация полей объекта-класса автобуса
/// </summary>
/// <param name="speed">Скорость</param>
/// <param name="weight">Вес катера</param>
/// <param name="weight">Вес</param>
/// <param name="bodyColor">Основной цвет</param>
/// <param name="additionalColor">Дополнительный цвет </param>
/// <param name="lifebuoy">Признак наличия спасательного круга</param>
/// <param name="ladder">Признак наличия лестницы</param>
/// <param name="flashlight">Признак наличия фонарей</param>
public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool lifebuoy, bool flashlight)
public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool ladder, bool flashlight)
{
Speed = speed;
Weight = weight;
BodyColor = bodyColor;
AdditionalColor = additionalColor;
Lifebuoy = lifebuoy;
Ladder = ladder;
Flashlight = flashlight;
}
}