Добавление родителей и ввод конструкторов
This commit is contained in:
parent
4a4be0edfa
commit
945e72c107
@ -1,4 +1,4 @@
|
||||
namespace ProjectGasolineTanker;
|
||||
namespace ProjectGasolineTanker.Drawings;
|
||||
/// <summary>
|
||||
/// Направление перемещения
|
||||
/// </summary>
|
@ -0,0 +1,63 @@
|
||||
using ProjectGasolineTanker.Entities;
|
||||
|
||||
namespace ProjectGasolineTanker.Drawings;
|
||||
/// <summary>
|
||||
/// Класс, отвечающий за прорисовку и перемещение объекта-сущности
|
||||
/// </summary>
|
||||
public class DrawingGasolineTanker : DrawingTruck
|
||||
{
|
||||
/// <summary>
|
||||
/// Конструктор
|
||||
/// </summary>
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес</param>
|
||||
/// <param name="bodyColor">Основной цвет</param>
|
||||
/// <param name="additionalColor">Дополнительный цвет</param>
|
||||
/// <param name="gasTank">Признак наличия бака под бензин</param>
|
||||
/// <param name="signalBeacon">Признак наличия сигнального маяка на кабине</param>
|
||||
|
||||
public DrawingGasolineTanker(int speed, double weight, Color bodyColor, Color additionalColor, bool gasTank, bool signalBeacon) : base(105, 70)
|
||||
{
|
||||
EntityTruck = new EntityGasolineTanker(speed, weight, bodyColor, additionalColor, gasTank, signalBeacon);
|
||||
|
||||
|
||||
}
|
||||
|
||||
public override void DrawTransport(Graphics g)
|
||||
{
|
||||
if (EntityTruck == null || EntityTruck is not EntityGasolineTanker gasolineTanker || !_startPosX.HasValue || !_startPosY.HasValue)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Pen pen = new(Color.Black);
|
||||
Brush additonalBrush = new SolidBrush(gasolineTanker.AdditionalColor);
|
||||
|
||||
|
||||
// бензобак
|
||||
if (gasolineTanker.GasTank)
|
||||
{
|
||||
|
||||
g.DrawEllipse(pen, _startPosX.Value + 7, _startPosY.Value + 19, 31, 31);
|
||||
g.DrawEllipse(pen, _startPosX.Value + 47, _startPosY.Value + 19, 31, 31);
|
||||
g.DrawRectangle(pen, _startPosX.Value + 20, _startPosY.Value + 20, 45, 30);
|
||||
|
||||
g.FillEllipse(additonalBrush, _startPosX.Value + 7, _startPosY.Value + 19, 31, 31);
|
||||
g.FillEllipse(additonalBrush, _startPosX.Value + 47, _startPosY.Value + 19, 31, 31);
|
||||
g.FillRectangle(additonalBrush, _startPosX.Value + 20, _startPosY.Value + 21, 45, 30);
|
||||
|
||||
}
|
||||
|
||||
base.DrawTransport(g);
|
||||
|
||||
// сигнальный маяк
|
||||
if (gasolineTanker.SignalBeacon)
|
||||
{
|
||||
g.DrawRectangle(pen, _startPosX.Value + 85, _startPosY.Value + 8, 7, 7);
|
||||
g.FillRectangle(additonalBrush, _startPosX.Value + 85, _startPosY.Value + 8, 7, 7);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -1,57 +1,99 @@
|
||||
namespace ProjectGasolineTanker;
|
||||
/// <summary>
|
||||
/// Класс, отвечающий за прорисовку и перемещение объекта-сущности
|
||||
/// </summary>
|
||||
public class DrawingGasolineTanker
|
||||
{
|
||||
/// <summary>
|
||||
/// Класс-сущность
|
||||
/// </summary>
|
||||
public EntityGasolineTanker? EntityGasolineTanker { get; private set; }
|
||||
using ProjectGasolineTanker.Entities;
|
||||
|
||||
namespace ProjectGasolineTanker.Drawings;
|
||||
|
||||
public class DrawingTruck
|
||||
{/// <summary>
|
||||
/// Класс-сущность
|
||||
/// </summary>
|
||||
public EntityTruck? EntityTruck { get; protected set; }
|
||||
|
||||
/// <summary>
|
||||
/// Ширина окна
|
||||
/// </summary>
|
||||
private int? _pictureWidth;
|
||||
|
||||
/// <summary>
|
||||
/// Высота окнаы
|
||||
/// </summary>
|
||||
private int? _pictureHeight;
|
||||
|
||||
/// <summary>
|
||||
/// Левая координата прорисовки бензовоза
|
||||
/// </summary>
|
||||
private int? _startPosX;
|
||||
protected int? _startPosX;
|
||||
|
||||
/// <summary>
|
||||
/// Верхняя координата прорисовки бензовоза
|
||||
/// </summary>
|
||||
private int? _startPosY;
|
||||
protected int? _startPosY;
|
||||
|
||||
/// <summary>
|
||||
/// Ширина прорисовки бензовоза
|
||||
/// </summary>
|
||||
private readonly int _drawingGasolineTankerWidth = 105;
|
||||
private readonly int _drawingTruckWidth = 105;
|
||||
|
||||
/// <summary>
|
||||
/// Высота прорисовки бензовоза
|
||||
/// </summary>
|
||||
private readonly int _drawingGasolineTankerHeight = 70;
|
||||
private readonly int _drawingTruckHeight = 70;
|
||||
|
||||
/// <summary>
|
||||
/// Инициализация всех свойств
|
||||
/// Координата Х объекта
|
||||
/// </summary>
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес</param>
|
||||
/// <param name="bodyColor">Основной цвет</param>
|
||||
/// <param name="additionalColor">Дополнительный цвет</param>
|
||||
/// <param name="gasTank">Признак наличия бака под бензин</param>
|
||||
/// <param name="signalBeacon">Признак наличия сигнального маяка на кабине</param>
|
||||
public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool gasTank, bool signalBeacon)
|
||||
public int? GetPosX => _startPosX;
|
||||
|
||||
/// <summary>
|
||||
/// Координа У объекта
|
||||
/// </summary>
|
||||
public int? GetPosY => _startPosY;
|
||||
|
||||
/// <summary>
|
||||
/// Ширина прорисовки воза(грузовика)
|
||||
/// </summary>
|
||||
public int GetWidth => _drawingTruckWidth;
|
||||
|
||||
/// <summary>
|
||||
/// Высота прорисовки воза(грузовика)
|
||||
/// </summary>
|
||||
public int GetHeight => _drawingTruckHeight;
|
||||
|
||||
/// <summary>
|
||||
/// Пустой конструктор
|
||||
/// </summary>
|
||||
|
||||
private DrawingTruck()
|
||||
{
|
||||
EntityGasolineTanker = new EntityGasolineTanker();
|
||||
EntityGasolineTanker.Init(speed, weight, bodyColor, additionalColor, gasTank, signalBeacon);
|
||||
_pictureWidth = null;
|
||||
_pictureHeight = null;
|
||||
_startPosX = null;
|
||||
_startPosY = null;
|
||||
}
|
||||
/// <summary>
|
||||
/// конструктор
|
||||
/// </summary>
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес</param>
|
||||
/// <param name="bodyColor">Основной цвет</param>
|
||||
|
||||
public DrawingTruck(int speed, double weight, Color bodyColor) : this()
|
||||
{
|
||||
EntityTruck = new EntityTruck(speed, weight, bodyColor);
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// Конструктор для наследников
|
||||
/// </summary>
|
||||
/// <param name="drawingTruckWidth">Ширина прорисовки грузовика</param>
|
||||
/// <param name="drawingTruckHeight"> Высота прорисовки грузовика</param>
|
||||
|
||||
protected DrawingTruck(int drawingTruckWidth, int drawingTruckHeight) : this()
|
||||
{
|
||||
_drawingTruckWidth = drawingTruckWidth;
|
||||
_drawingTruckHeight = drawingTruckHeight;
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// Установка границ поля
|
||||
/// </summary>
|
||||
/// <param name="width">Ширина поля</param>
|
||||
@ -60,7 +102,7 @@ public class DrawingGasolineTanker
|
||||
public bool SetPictureSize(int width, int height)
|
||||
{
|
||||
// Проверка "влезает" ли объект в размеры поля
|
||||
if (_drawingGasolineTankerWidth > width || _drawingGasolineTankerHeight > height)
|
||||
if (_drawingTruckWidth > width || _drawingTruckHeight > height)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -69,17 +111,17 @@ public class DrawingGasolineTanker
|
||||
|
||||
if (_startPosX.HasValue || _startPosY.HasValue)
|
||||
{
|
||||
if (_drawingGasolineTankerWidth + _startPosX > _pictureWidth)
|
||||
if (_drawingTruckWidth + _startPosX > _pictureWidth)
|
||||
{
|
||||
_startPosX = _pictureWidth.Value - _drawingGasolineTankerWidth;
|
||||
_startPosX = _pictureWidth.Value - _drawingTruckWidth;
|
||||
}
|
||||
else if (_startPosX < 0)
|
||||
{
|
||||
_startPosX = 0;
|
||||
}
|
||||
if (_drawingGasolineTankerHeight + _startPosY > _pictureHeight)
|
||||
if (_drawingTruckHeight + _startPosY > _pictureHeight)
|
||||
{
|
||||
_startPosY = _pictureHeight.Value - _drawingGasolineTankerHeight;
|
||||
_startPosY = _pictureHeight.Value - _drawingTruckHeight;
|
||||
}
|
||||
else if (_startPosY < 0)
|
||||
{
|
||||
@ -94,34 +136,34 @@ public class DrawingGasolineTanker
|
||||
/// </summary>
|
||||
/// <param name="x">Координата х</param>
|
||||
/// <param name="y">Координата у</param>
|
||||
|
||||
|
||||
public void SetPosition(int x, int y)
|
||||
{
|
||||
if (!_pictureHeight.HasValue || !_pictureWidth.HasValue)
|
||||
{
|
||||
return;
|
||||
}
|
||||
if (x >= 0 && x + _drawingGasolineTankerWidth <= _pictureWidth && y >= 0 && y + _drawingGasolineTankerHeight <= _pictureHeight)
|
||||
if (x >= 0 && x + _drawingTruckWidth <= _pictureWidth && y >= 0 && y + _drawingTruckHeight <= _pictureHeight)
|
||||
{
|
||||
_startPosX = x;
|
||||
_startPosY = y;
|
||||
|
||||
_startPosX = x;
|
||||
_startPosY = y;
|
||||
|
||||
}
|
||||
if (x < 0)
|
||||
if (x < 0)
|
||||
{
|
||||
_startPosX = 0;
|
||||
}
|
||||
if (y < 0)
|
||||
if (y < 0)
|
||||
{
|
||||
_startPosY = 0;
|
||||
}
|
||||
if (x + _drawingGasolineTankerWidth > _pictureWidth)
|
||||
if (x + _drawingTruckWidth > _pictureWidth)
|
||||
{
|
||||
_startPosX = _drawingGasolineTankerWidth - _pictureWidth;
|
||||
_startPosX = _drawingTruckWidth - _pictureWidth;
|
||||
}
|
||||
if (y + _drawingGasolineTankerHeight > _pictureHeight)
|
||||
if (y + _drawingTruckHeight > _pictureHeight)
|
||||
{
|
||||
_startPosY = _drawingGasolineTankerHeight - _pictureHeight;
|
||||
_startPosY = _drawingTruckHeight - _pictureHeight;
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
@ -130,79 +172,59 @@ public class DrawingGasolineTanker
|
||||
/// <param name="direction">Направление</param>
|
||||
public bool MoveTransport(DirectionType direction)
|
||||
{
|
||||
if (EntityGasolineTanker == null || !_startPosX.HasValue || !_startPosY.HasValue)
|
||||
{
|
||||
if (EntityTruck == null || !_startPosX.HasValue || !_startPosY.HasValue)
|
||||
{
|
||||
return false;
|
||||
|
||||
}
|
||||
switch(direction)
|
||||
switch (direction)
|
||||
{
|
||||
// влево
|
||||
case DirectionType.Left:
|
||||
if (_startPosX.Value - EntityGasolineTanker.Step > 0)
|
||||
if (_startPosX.Value - EntityTruck.Step > 0)
|
||||
{
|
||||
_startPosX -= (int)EntityGasolineTanker.Step;
|
||||
_startPosX -= (int)EntityTruck.Step;
|
||||
}
|
||||
return true;
|
||||
// вверх
|
||||
case DirectionType.Up:
|
||||
if (_startPosY.Value - EntityGasolineTanker.Step > 0)
|
||||
if (_startPosY.Value - EntityTruck.Step > 0)
|
||||
{
|
||||
_startPosY -= (int)EntityGasolineTanker.Step;
|
||||
_startPosY -= (int)EntityTruck.Step;
|
||||
}
|
||||
return true;
|
||||
// вправо
|
||||
case DirectionType.Right:
|
||||
if (_startPosX.Value + EntityGasolineTanker.Step + _drawingGasolineTankerWidth < _pictureWidth)
|
||||
if (_startPosX.Value + EntityTruck.Step + _drawingTruckWidth < _pictureWidth)
|
||||
{
|
||||
_startPosX += (int)EntityGasolineTanker.Step;
|
||||
_startPosX += (int)EntityTruck.Step;
|
||||
}
|
||||
return true;
|
||||
// вниз
|
||||
case DirectionType.Down:
|
||||
if (_startPosY.Value + EntityGasolineTanker.Step + _drawingGasolineTankerHeight < _pictureHeight)
|
||||
if (_startPosY.Value + EntityTruck.Step + _drawingTruckHeight < _pictureHeight)
|
||||
{
|
||||
_startPosY += (int)EntityGasolineTanker.Step;
|
||||
_startPosY += (int)EntityTruck.Step;
|
||||
}
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Прорисовка объекта
|
||||
/// </summary>
|
||||
/// <param name="g"></param>
|
||||
public void DrawTransport(Graphics g)
|
||||
public virtual void DrawTransport(Graphics g)
|
||||
{
|
||||
if (EntityGasolineTanker == null || !_startPosX.HasValue || !_startPosY.HasValue)
|
||||
if (EntityTruck == null || !_startPosX.HasValue || !_startPosY.HasValue)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Pen pen = new(Color.Black);
|
||||
Brush additonalBrush = new SolidBrush(EntityGasolineTanker.AdditionalColor);
|
||||
|
||||
// бензобак
|
||||
if (EntityGasolineTanker.GasTank)
|
||||
{
|
||||
|
||||
g.DrawEllipse(pen, _startPosX.Value + 7, _startPosY.Value + 19, 31, 31);
|
||||
g.DrawEllipse(pen, _startPosX.Value + 47, _startPosY.Value + 19, 31, 31);
|
||||
g.DrawRectangle(pen, _startPosX.Value + 20, _startPosY.Value + 20, 45, 30);
|
||||
|
||||
g.FillEllipse(additonalBrush, _startPosX.Value + 7, _startPosY.Value+19, 31, 31);
|
||||
g.FillEllipse(additonalBrush, _startPosX.Value+ 47, _startPosY.Value + 19, 31, 31);
|
||||
g.FillRectangle(additonalBrush, _startPosX.Value + 20, _startPosY.Value + 21, 45, 30);
|
||||
|
||||
}
|
||||
// сигнальный маяк
|
||||
if (EntityGasolineTanker.SignalBeacon)
|
||||
{
|
||||
g.DrawRectangle(pen, _startPosX.Value + 85, _startPosY.Value + 10, 7, 7);
|
||||
g.FillRectangle(additonalBrush, _startPosX.Value + 85, _startPosY.Value + 10, 7, 7);
|
||||
|
||||
}
|
||||
|
||||
// колеса
|
||||
Brush brBlack = new SolidBrush(Color.Black);
|
||||
@ -211,17 +233,16 @@ public class DrawingGasolineTanker
|
||||
g.FillEllipse(brBlack, _startPosX.Value + 85, _startPosY.Value + 50, 20, 20);
|
||||
|
||||
// нижняя платформа
|
||||
Brush brBody = new SolidBrush(EntityGasolineTanker.BodyColor);
|
||||
Brush brBody = new SolidBrush(EntityTruck.BodyColor);
|
||||
g.FillRectangle(brBody, _startPosX.Value + 5, _startPosY.Value + 40, 100, 10);
|
||||
g.DrawRectangle(pen, _startPosX.Value + 5, _startPosY.Value + 40, 100, 10);
|
||||
|
||||
|
||||
|
||||
|
||||
// кабина
|
||||
Brush brLightBlue = new SolidBrush(Color.LightBlue);
|
||||
g.FillRectangle(brLightBlue, _startPosX.Value + 80, _startPosY.Value + 15, 25, 25);
|
||||
g.DrawRectangle(pen, _startPosX.Value + 80, _startPosY.Value + 15, 25, 25);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
namespace ProjectGasolineTanker.Entities;
|
||||
/// <summary>
|
||||
/// Класс-сущность "Бензовоз"
|
||||
/// </summary>
|
||||
public class EntityGasolineTanker : EntityTruck
|
||||
{
|
||||
/// <summary>
|
||||
/// Дополнительный цвет (для опциональных элементов)
|
||||
/// </summary>
|
||||
public Color AdditionalColor { get; private set; }
|
||||
/// <summary>
|
||||
/// Признак (опция) наличия бака под бензин
|
||||
/// </summary>
|
||||
public bool GasTank { get; private set; }
|
||||
/// <summary>
|
||||
/// Признак (опция) наличия сигнального маяка на кабине
|
||||
/// </summary>
|
||||
public bool SignalBeacon { get; private set; }
|
||||
/// <summary>
|
||||
/// Шаг перемещения бензовоза
|
||||
/// </summary>
|
||||
public double Step => Speed * 200 / Weight;
|
||||
|
||||
public EntityGasolineTanker(int speed, double weight, Color bodyColor, Color additionalColor, bool gasTank, bool signalBeacon) : base(speed, weight, bodyColor)
|
||||
|
||||
{
|
||||
AdditionalColor = additionalColor;
|
||||
GasTank = gasTank;
|
||||
SignalBeacon = signalBeacon;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
namespace ProjectGasolineTanker.Entities;
|
||||
/// <summary>
|
||||
/// Класс-сущность "Грузовик"
|
||||
/// </summary>
|
||||
public class EntityTruck
|
||||
{
|
||||
/// <summary>
|
||||
/// Скорость
|
||||
/// </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 double Step => Speed * 200 / Weight;
|
||||
|
||||
/// <summary>
|
||||
/// Конструктор сущности
|
||||
/// </summary>
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес</param>
|
||||
/// <param name="bodyColor">Основной цвет</param>
|
||||
public EntityTruck(int speed, double weight, Color bodyColor)
|
||||
{
|
||||
Speed = speed;
|
||||
Weight = weight;
|
||||
BodyColor = bodyColor;
|
||||
|
||||
}
|
||||
}
|
@ -1,55 +0,0 @@
|
||||
namespace ProjectGasolineTanker;
|
||||
/// <summary>
|
||||
/// Класс-сущность "Бензовоз"
|
||||
/// </summary>
|
||||
public class EntityGasolineTanker
|
||||
{
|
||||
/// <summary>
|
||||
/// Скорость
|
||||
/// </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 GasTank { get; private set; }
|
||||
/// <summary>
|
||||
/// Признак (опция) наличия сигнального маяка на кабине
|
||||
/// </summary>
|
||||
public bool SignalBeacon { get; private set; }
|
||||
/// <summary>
|
||||
/// Шаг перемещения бензовоза
|
||||
/// </summary>
|
||||
public double Step => Speed * 700 / Weight;
|
||||
/// <summary>
|
||||
/// Инициализация полей объекта-класса бензовоза
|
||||
/// </summary>
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес</param>
|
||||
/// <param name="bodyColor">Основной цвет</param>
|
||||
/// <param name="additionalColor">Дополнительный цвет</param>
|
||||
/// <param name="gasTank">Признак наличия бака под бензин</param>
|
||||
/// <param name="signalBeacon">Признак наличия сигнального маяка на кабине</param>
|
||||
public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool gasTank, bool signalBeacon)
|
||||
{
|
||||
Speed = speed;
|
||||
Weight = weight;
|
||||
BodyColor = bodyColor;
|
||||
AdditionalColor = additionalColor;
|
||||
GasTank = gasTank;
|
||||
SignalBeacon = signalBeacon;
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -34,6 +34,7 @@
|
||||
buttonDown = new Button();
|
||||
buttonUp = new Button();
|
||||
buttonRight = new Button();
|
||||
buttonCreateTruck = new Button();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxGasolineTanker).BeginInit();
|
||||
SuspendLayout();
|
||||
//
|
||||
@ -49,11 +50,11 @@
|
||||
// buttonCreateGasolineTanker
|
||||
//
|
||||
buttonCreateGasolineTanker.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
|
||||
buttonCreateGasolineTanker.Location = new Point(0, 569);
|
||||
buttonCreateGasolineTanker.Location = new Point(12, 569);
|
||||
buttonCreateGasolineTanker.Name = "buttonCreateGasolineTanker";
|
||||
buttonCreateGasolineTanker.Size = new Size(94, 29);
|
||||
buttonCreateGasolineTanker.Size = new Size(287, 29);
|
||||
buttonCreateGasolineTanker.TabIndex = 1;
|
||||
buttonCreateGasolineTanker.Text = "Создание";
|
||||
buttonCreateGasolineTanker.Text = "Создать бензовоз";
|
||||
buttonCreateGasolineTanker.UseVisualStyleBackColor = true;
|
||||
buttonCreateGasolineTanker.Click += ButtonCreateGasolineTanker_Click;
|
||||
//
|
||||
@ -105,11 +106,23 @@
|
||||
buttonRight.UseVisualStyleBackColor = true;
|
||||
buttonRight.Click += ButtonMove_Click;
|
||||
//
|
||||
// buttonCreateTruck
|
||||
//
|
||||
buttonCreateTruck.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
|
||||
buttonCreateTruck.Location = new Point(323, 569);
|
||||
buttonCreateTruck.Name = "buttonCreateTruck";
|
||||
buttonCreateTruck.Size = new Size(287, 29);
|
||||
buttonCreateTruck.TabIndex = 6;
|
||||
buttonCreateTruck.Text = "Создать грузовик";
|
||||
buttonCreateTruck.UseVisualStyleBackColor = true;
|
||||
buttonCreateTruck.Click += ButtonCreateTanker_Click;
|
||||
//
|
||||
// FormGasolineTanker
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(8F, 20F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
ClientSize = new Size(1015, 610);
|
||||
Controls.Add(buttonCreateTruck);
|
||||
Controls.Add(buttonRight);
|
||||
Controls.Add(buttonUp);
|
||||
Controls.Add(buttonDown);
|
||||
@ -130,5 +143,6 @@
|
||||
private Button buttonDown;
|
||||
private Button buttonUp;
|
||||
private Button buttonRight;
|
||||
private Button buttonCreateTruck;
|
||||
}
|
||||
}
|
@ -1,4 +1,6 @@
|
||||
namespace ProjectGasolineTanker;
|
||||
using ProjectGasolineTanker.Drawings;
|
||||
|
||||
namespace ProjectGasolineTanker;
|
||||
/// <summary>
|
||||
/// Форма работы с объектом "Бензовоз"
|
||||
/// </summary>
|
||||
@ -7,7 +9,7 @@ public partial class FormGasolineTanker : Form
|
||||
/// <summary>
|
||||
/// Поле-объект для прорисовки объекта
|
||||
/// </summary>
|
||||
private DrawingGasolineTanker? _drawingGasolineTanker;
|
||||
private DrawingTruck? _drawingTanker;
|
||||
/// <summary>
|
||||
/// Конструктор формы
|
||||
/// </summary>
|
||||
@ -21,44 +23,72 @@ public partial class FormGasolineTanker : Form
|
||||
/// </summary>
|
||||
private void Draw()
|
||||
{
|
||||
if (_drawingGasolineTanker == null)
|
||||
if (_drawingTanker == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Bitmap bmp = new(pictureBoxGasolineTanker.Width, pictureBoxGasolineTanker.Height);
|
||||
Graphics gr = Graphics.FromImage(bmp);
|
||||
_drawingGasolineTanker.DrawTransport(gr);
|
||||
_drawingTanker.DrawTransport(gr);
|
||||
pictureBoxGasolineTanker.Image = bmp;
|
||||
}
|
||||
/// <summary>
|
||||
/// создание объекта класса-перемещения
|
||||
/// </summary>
|
||||
/// <param name="type"></param>
|
||||
private void CreateObject(string type)
|
||||
{
|
||||
|
||||
Random random = new();
|
||||
switch (type)
|
||||
{
|
||||
case nameof(DrawingTruck):
|
||||
_drawingTanker = new DrawingTruck(random.Next(100, 300), random.Next(1000, 5000),
|
||||
Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)));
|
||||
break;
|
||||
case nameof(DrawingGasolineTanker):
|
||||
_drawingTanker = new DrawingGasolineTanker(random.Next(100, 300), random.Next(1000, 5000),
|
||||
Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)),
|
||||
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)));
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
_drawingTanker.SetPictureSize(pictureBoxGasolineTanker.Width, pictureBoxGasolineTanker.Height);
|
||||
_drawingTanker.SetPosition(random.Next(10, 100), random.Next(10, 100));
|
||||
|
||||
Draw();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Обработка нажатия кнопки "Создать"
|
||||
/// Обработка нажатия кнопки "Создать бензовоз"
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonCreateGasolineTanker_Click(object sender, EventArgs e)
|
||||
{
|
||||
Random random = new();
|
||||
_drawingGasolineTanker = new DrawingGasolineTanker();
|
||||
_drawingGasolineTanker.Init(random.Next(10, 50), random.Next(1000, 5000),
|
||||
Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)),
|
||||
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)));
|
||||
|
||||
_drawingGasolineTanker.SetPictureSize(pictureBoxGasolineTanker.Width, pictureBoxGasolineTanker.Height);
|
||||
_drawingGasolineTanker.SetPosition(random.Next(10, 100), random.Next(10, 100));
|
||||
|
||||
Draw();
|
||||
CreateObject(nameof(DrawingGasolineTanker));
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// Обработка нажатия кнопки "Создать грузовик"
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonCreateTanker_Click(object sender, EventArgs e)
|
||||
{
|
||||
CreateObject(nameof(DrawingTruck));
|
||||
}
|
||||
/// <summary>
|
||||
/// Перемещение объекта по форме (кнопки навигации)
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="e"></param>
|
||||
private void ButtonMove_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (_drawingGasolineTanker == null)
|
||||
if (_drawingTanker == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
@ -68,16 +98,16 @@ public partial class FormGasolineTanker : Form
|
||||
switch (name)
|
||||
{
|
||||
case "buttonUp":
|
||||
result = _drawingGasolineTanker.MoveTransport(DirectionType.Up);
|
||||
result = _drawingTanker.MoveTransport(DirectionType.Up);
|
||||
break;
|
||||
case "buttonDown":
|
||||
result = _drawingGasolineTanker.MoveTransport(DirectionType.Down);
|
||||
result = _drawingTanker.MoveTransport(DirectionType.Down);
|
||||
break;
|
||||
case "buttonRight":
|
||||
result = _drawingGasolineTanker.MoveTransport(DirectionType.Right);
|
||||
result = _drawingTanker.MoveTransport(DirectionType.Right);
|
||||
break;
|
||||
case "buttonLeft":
|
||||
result = _drawingGasolineTanker.MoveTransport(DirectionType.Left);
|
||||
result = _drawingTanker.MoveTransport(DirectionType.Left);
|
||||
break;
|
||||
}
|
||||
if (result)
|
||||
@ -85,5 +115,7 @@ public partial class FormGasolineTanker : Form
|
||||
Draw();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user