PIbd-12 Khasyanov A.N. LabWork01 Simple #1
@ -1,4 +1,5 @@
|
||||
namespace ProjectLiner;
|
||||
|
||||
/// <summary>
|
||||
/// Направление передвижения
|
||||
/// </summary>
|
||||
|
@ -1,4 +1,5 @@
|
||||
namespace ProjectLiner;
|
||||
|
||||
/// <summary>
|
||||
/// Класс-прорисовка сущности "Лайнер"
|
||||
/// </summary>
|
||||
@ -8,30 +9,37 @@ public class DrawningLiner
|
||||
/// Класс-сущность "Лайнер"
|
||||
/// </summary>
|
||||
public EntityLiner? EntityLiner { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Ширина окна
|
||||
/// </summary>
|
||||
private int? _pictureWidth;
|
||||
|
||||
/// <summary>
|
||||
/// Высота окна
|
||||
/// </summary>
|
||||
private int? _pictureHeight;
|
||||
|
||||
/// <summary>
|
||||
/// Левая координата прорисовки сущности "Лайнер"
|
||||
/// </summary>
|
||||
private int? _startPosX;
|
||||
|
||||
/// <summary>
|
||||
/// Верхнаяя координата прорисовки сущности "Лайнер"
|
||||
/// </summary>
|
||||
private int? _startPosY;
|
||||
|
||||
/// <summary>
|
||||
/// Ширина прорисовки сущности "Лайнер"
|
||||
/// </summary>
|
||||
private readonly int _drawningLinerWidth = 150;
|
||||
|
||||
/// <summary>
|
||||
/// Высота сущности "Лайнер"
|
||||
/// </summary>
|
||||
private readonly int _drawningLinerHeight = 65;
|
||||
|
||||
/// <summary>
|
||||
/// Инициализация свойств
|
||||
/// </summary>
|
||||
@ -50,6 +58,7 @@ public class DrawningLiner
|
||||
_startPosX = null;
|
||||
_startPosY = null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Установка границ поля
|
||||
/// </summary>
|
||||
@ -64,8 +73,11 @@ public class DrawningLiner
|
||||
}
|
||||
_pictureWidth = width;
|
||||
_pictureHeight = height;
|
||||
if (_startPosX.HasValue && _startPosX + _drawningLinerWidth > width) _startPosX = _pictureWidth - _drawningLinerWidth;
|
||||
if (_startPosY.HasValue && _startPosY + _drawningLinerHeight > height) _startPosY = _pictureHeight - _drawningLinerHeight;
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Установка позиции
|
||||
/// </summary>
|
||||
@ -117,6 +129,7 @@ public class DrawningLiner
|
||||
_startPosX -= (int)EntityLiner.Step;
|
||||
}
|
||||
return true;
|
||||
|
||||
// Вверх
|
||||
case DirectionType.Up:
|
||||
if (_startPosY.Value - EntityLiner.Step > 0)
|
||||
@ -124,6 +137,7 @@ public class DrawningLiner
|
||||
_startPosY -= (int)EntityLiner.Step;
|
||||
}
|
||||
return true;
|
||||
|
||||
// Вправо
|
||||
case DirectionType.Right:
|
||||
|
||||
@ -132,6 +146,7 @@ public class DrawningLiner
|
||||
_startPosX += (int)EntityLiner.Step;
|
||||
}
|
||||
return true;
|
||||
|
||||
// Вниз
|
||||
case DirectionType.Down:
|
||||
if (_startPosY.Value + _drawningLinerHeight + EntityLiner.Step < _pictureHeight.Value)
|
||||
@ -143,6 +158,7 @@ public class DrawningLiner
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Прорисовка объекта
|
||||
/// </summary>
|
||||
@ -156,6 +172,7 @@ public class DrawningLiner
|
||||
Pen pen = new(Color.Black, 2);
|
||||
Brush br = new SolidBrush(EntityLiner.BodyColor);
|
||||
Brush additionalBrush = new SolidBrush(EntityLiner.AdditionalColor);
|
||||
|
||||
// Вторая палуба
|
||||
if (EntityLiner.SecondDeck)
|
||||
{
|
||||
@ -175,6 +192,7 @@ public class DrawningLiner
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
// Бассейн
|
||||
if (EntityLiner.Pool)
|
||||
{
|
||||
@ -183,6 +201,7 @@ public class DrawningLiner
|
||||
g.DrawArc(pen, _startPosX.Value + 135, _startPosY.Value + 20, 8, 8, 180, 180);
|
||||
g.DrawLine(pen, _startPosX.Value + 143, _startPosY.Value + 25, _startPosX.Value + 143, _startPosY.Value + 30);
|
||||
}
|
||||
|
||||
// Корпус и палуба Лайнера
|
||||
g.FillPolygon(br, new[]
|
||||
{
|
||||
@ -198,7 +217,6 @@ public class DrawningLiner
|
||||
new Point(_startPosX.Value + 100, _startPosY.Value + 15),
|
||||
new Point(_startPosX.Value + 105, _startPosY.Value + 30)
|
||||
});
|
||||
|
||||
g.DrawPolygon(pen, new[]
|
||||
{
|
||||
new Point(_startPosX.Value + 0, _startPosY.Value + 30),
|
||||
@ -213,11 +231,11 @@ public class DrawningLiner
|
||||
new Point(_startPosX.Value + 100, _startPosY.Value + 15),
|
||||
new Point(_startPosX.Value + 105, _startPosY.Value + 30)
|
||||
});
|
||||
|
||||
// Якорь
|
||||
g.DrawLine(pen, _startPosX.Value + 30, _startPosY.Value + 33, _startPosX.Value + 30, _startPosY.Value + 45);
|
||||
g.DrawLine(pen, _startPosX.Value + 27, _startPosY.Value + 36, _startPosX.Value + 33, _startPosY.Value + 36);
|
||||
g.DrawLine(pen, _startPosX.Value + 25, _startPosY.Value + 40, _startPosX.Value + 30, _startPosY.Value + 45);
|
||||
g.DrawLine(pen, _startPosX.Value + 30, _startPosY.Value + 45, _startPosX.Value + 35, _startPosY.Value + 40);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -1,4 +1,5 @@
|
||||
namespace ProjectLiner;
|
||||
|
||||
/// <summary>
|
||||
/// Класс-сущность "Лайнер"
|
||||
/// </summary>
|
||||
@ -8,30 +9,37 @@ public class EntityLiner
|
||||
/// Скорость
|
||||
/// </summary>
|
||||
public int Speed { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Вес
|
||||
/// </summary>
|
||||
public double Weight { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Основной цвет
|
||||
/// </summary>
|
||||
public Color BodyColor { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дополнительный цвет
|
||||
/// </summary>
|
||||
public Color AdditionalColor { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Наличие второй палубы
|
||||
/// </summary>
|
||||
public bool SecondDeck { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Наличие бассейна
|
||||
/// </summary>
|
||||
public bool Pool { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Шаг перемещения сущности "Лайнер"
|
||||
/// </summary>
|
||||
public double Step => Speed * 100 / Weight;
|
||||
|
||||
/// <summary>
|
||||
/// Инициализация полей объекта класса "Лайнер"
|
||||
/// </summary>
|
||||
@ -50,4 +58,4 @@ public class EntityLiner
|
||||
SecondDeck = secondDeck;
|
||||
Pool = pool;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,5 @@
|
||||
namespace ProjectLiner;
|
||||
|
||||
/// <summary>
|
||||
/// Форма работы с объектом "Лайнер"
|
||||
/// </summary>
|
||||
@ -8,6 +9,7 @@ public partial class FormLiner : Form
|
||||
/// Поле-объект для прорисовки объекта
|
||||
/// </summary>
|
||||
private DrawningLiner? _drawningLiner;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор формы
|
||||
/// </summary>
|
||||
@ -15,6 +17,7 @@ public partial class FormLiner : Form
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Метод прорисовки Лайнера
|
||||
/// </summary>
|
||||
@ -30,6 +33,7 @@ public partial class FormLiner : Form
|
||||
_drawningLiner.DrawTransport(gr);
|
||||
pictureBoxLiner.Image = bmp;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обработка нажатия кнопки "Создать"
|
||||
/// </summary>
|
||||
@ -48,6 +52,7 @@ public partial class FormLiner : Form
|
||||
|
||||
Draw();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обработка нажатия кнопок навигации движения
|
||||
/// </summary>
|
||||
@ -81,4 +86,4 @@ public partial class FormLiner : Form
|
||||
Draw();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user