50 % works
This commit is contained in:
parent
4d1ad4893f
commit
72d382a1e3
@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace PIbd_23_Ivanov_V.N._DoubleDeckerBus._Base
|
||||
{
|
||||
/// <summary>
|
||||
/// Направление перемещения
|
||||
/// </summary>
|
||||
public enum DirectionType
|
||||
{
|
||||
/// <summary>
|
||||
/// Вверх
|
||||
/// </summary>
|
||||
Up = 1,
|
||||
/// <summary>
|
||||
/// Вниз
|
||||
/// </summary>
|
||||
Down = 2,
|
||||
/// <summary>
|
||||
/// Влево
|
||||
/// </summary>
|
||||
Left = 3,
|
||||
/// <summary>
|
||||
/// Вправо
|
||||
/// </summary>
|
||||
Right = 4
|
||||
}
|
||||
}
|
@ -0,0 +1,168 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace PIbd_23_Ivanov_V.N._DoubleDeckerBus._Base
|
||||
{
|
||||
internal class DrawningDoubleDeckerBus
|
||||
{
|
||||
/// <summary>
|
||||
/// Класс-сущность
|
||||
/// </summary>
|
||||
public EntityDoubleDeckerBus? EntityDoubleDeckerBus { 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 _busWidth = 100;
|
||||
|
||||
/// <summary>
|
||||
/// Высота прорисовки автобуса
|
||||
/// </summary>
|
||||
private readonly int _busHeight = 50;
|
||||
|
||||
/// <summary>
|
||||
/// Инициализация свойств
|
||||
/// </summary>
|
||||
/// <param name="speed">Скорость</param>
|
||||
/// <param name="weight">Вес</param>
|
||||
/// <param name="bodyColor">Цвет кузова</param>
|
||||
/// <param name="additionalColor">Дополнительный цвет</param>
|
||||
/// <param name="secondFloor">Признак наличия второго этажа</param>
|
||||
/// <param name="ladder">Признак наличия лестницы на второй этаж</param>
|
||||
/// <param name="roadLine">Признак наличия дорожной полосы</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 secondFloor, bool ladder, bool roadLine, int width, int height)
|
||||
{
|
||||
_pictureWidth = width;
|
||||
_pictureHeight = height;
|
||||
if (_pictureHeight < _busHeight || _pictureWidth < _busWidth)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
EntityDoubleDeckerBus = new EntityDoubleDeckerBus();
|
||||
EntityDoubleDeckerBus.Init(speed, weight, bodyColor, additionalColor,
|
||||
secondFloor, ladder, roadLine);
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Установка позиции
|
||||
/// </summary>
|
||||
/// <param name="x">Координата X</param>
|
||||
/// <param name="y">Координата Y</param>
|
||||
public void SetPosition(int x, int y)
|
||||
{
|
||||
_startPosX = Math.Min(x, _pictureWidth - _busWidth);
|
||||
_startPosY = Math.Min(y, _pictureHeight - _busHeight);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Изменение направления перемещения
|
||||
/// </summary>
|
||||
/// <param name="direction">Направление</param>
|
||||
public void MoveTransport(DirectionType direction)
|
||||
{
|
||||
if (EntityDoubleDeckerBus == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
switch (direction)
|
||||
{
|
||||
//влево
|
||||
case DirectionType.Left:
|
||||
if (_startPosX - EntityDoubleDeckerBus.Step > 0)
|
||||
{
|
||||
_startPosX -= (int)EntityDoubleDeckerBus.Step;
|
||||
}
|
||||
break;
|
||||
//вверх
|
||||
case DirectionType.Up:
|
||||
if (_startPosY - EntityDoubleDeckerBus.Step > 0)
|
||||
{
|
||||
_startPosY -= (int)EntityDoubleDeckerBus.Step;
|
||||
}
|
||||
break;
|
||||
// вправо
|
||||
case DirectionType.Right:
|
||||
if (_startPosX + _busWidth + EntityDoubleDeckerBus.Step < _pictureWidth)
|
||||
{
|
||||
_startPosX += (int)EntityDoubleDeckerBus.Step;
|
||||
}
|
||||
break;
|
||||
//вниз
|
||||
case DirectionType.Down:
|
||||
if (_startPosY + _busHeight + EntityDoubleDeckerBus.Step < _pictureHeight)
|
||||
{
|
||||
_startPosY += (int)EntityDoubleDeckerBus.Step;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Прорисовка объекта
|
||||
/// </summary>
|
||||
/// <param name="g"></param>
|
||||
public void DrawTransport(Graphics g)
|
||||
{
|
||||
if (EntityDoubleDeckerBus == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Pen pen = new(Color.Black);
|
||||
|
||||
//границы автобсуса
|
||||
g.DrawRectangle(pen, _startPosX - 1, _startPosY + 11, 100, 30);
|
||||
Brush brBodyColor = new SolidBrush(EntityDoubleDeckerBus.BodyColor);
|
||||
g.FillRectangle(brBodyColor, _startPosX, _startPosY + 10, 100, 30);
|
||||
|
||||
//Дверь
|
||||
g.DrawRectangle(pen, _startPosX + 30, _startPosY + 20, 10, 20);
|
||||
Brush brBlack = new SolidBrush(Color.Black);
|
||||
g.FillRectangle(brBlack, _startPosX + 30, _startPosY + 20, 10, 20);
|
||||
|
||||
//Колеса
|
||||
g.DrawEllipse(pen, _startPosX + 7, _startPosY + 35, 10, 10);
|
||||
g.DrawEllipse(pen, _startPosX + 77, _startPosY + 35, 10, 10);
|
||||
g.FillEllipse(brBlack, _startPosX + 7, _startPosY + 35, 10, 10);
|
||||
g.FillEllipse(brBlack, _startPosX + 77, _startPosY + 35, 10, 10);
|
||||
|
||||
//окна
|
||||
Brush brBlue = new SolidBrush(Color.Blue);
|
||||
g.FillEllipse(brBlue, _startPosX + 10, _startPosY + 15, 10, 15);
|
||||
g.FillEllipse(brBlue, _startPosX + 50, _startPosY + 15, 10, 15);
|
||||
g.FillEllipse(brBlue, _startPosX + 70, _startPosY + 15, 10, 15);
|
||||
g.FillEllipse(brBlue, _startPosX + 90, _startPosY + 15, 10, 15);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,68 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace PIbd_23_Ivanov_V.N._DoubleDeckerBus._Base
|
||||
{
|
||||
public class EntityDoubleDeckerBus
|
||||
{
|
||||
/// <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 SecondFloor { get; private set; }
|
||||
/// <summary>
|
||||
/// Признак (опция) наличия лестницы на второй этаж
|
||||
/// </summary>
|
||||
public bool Ladder { get; private set; }
|
||||
/// <summary>
|
||||
/// Признак (опция) наличия гоночной полосы
|
||||
/// </summary>
|
||||
public bool RoadLine { 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="secondFloor">Признак наличия второго этажа</param>
|
||||
/// <param name="ladder">Признак наличия лестницы на второй этаж</param>
|
||||
/// <param name="roadLine">Признак наличия дорожной полосы</param>
|
||||
|
||||
public void Init(int speed, double weight, Color bodyColor, Color
|
||||
additionalColor, bool secondFloor, bool ladder, bool roadLine)
|
||||
{
|
||||
Speed = speed;
|
||||
Weight = weight;
|
||||
BodyColor = bodyColor;
|
||||
AdditionalColor = additionalColor;
|
||||
SecondFloor = secondFloor;
|
||||
Ladder = ladder;
|
||||
RoadLine = roadLine;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user