From 6aa4044f9e5e7a5cc9a798a573415227273319a3 Mon Sep 17 00:00:00 2001 From: "ns.potapov" Date: Mon, 11 Sep 2023 14:31:36 +0400 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=20=D0=B4=D0=BB=D1=8F=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2=D0=BA=D0=B8=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=8A=D0=B5=D0=BA=D1=82=D0=B0-=D1=81=D1=83=D1=89?= =?UTF-8?q?=D0=BD=D0=BE=D1=81=D1=82=D0=B8,=20=D0=BD=D0=B5=D0=BE=D0=B1?= =?UTF-8?q?=D1=85=D0=BE=D0=B4=D0=B8=D0=BC=D0=BE=20=D1=80=D0=B5=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=BE=D0=B2=D0=B0=D1=82=D1=8C=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B5=D1=80=D0=BA=D0=B8=20=D0=B8=20=D0=BC=D0=B5=D1=82?= =?UTF-8?q?=D0=BE=D0=B4=20=D0=BF=D1=80=D0=BE=D1=80=D0=B8=D1=81=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DrawingStormTrooper.cs | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 ProjectStormtrooper/ProjectStormtrooper/DrawingStormTrooper.cs diff --git a/ProjectStormtrooper/ProjectStormtrooper/DrawingStormTrooper.cs b/ProjectStormtrooper/ProjectStormtrooper/DrawingStormTrooper.cs new file mode 100644 index 0000000..080b29d --- /dev/null +++ b/ProjectStormtrooper/ProjectStormtrooper/DrawingStormTrooper.cs @@ -0,0 +1,128 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ProjectStormtrooper +{ + /// + /// Класс отвечающий за прорисовку и перемещение объекта-сущности + /// + public class DrawingStormtrooper + { + /// + /// Класс-сущность + /// + public EntityStormtrooper? EntityStormtrooper { get; private set; } + /// + /// Ширина окна + /// + private int _pictureWidth; + /// + /// Высота окна + /// + private int _pictureHeight; + /// + /// Левая координата начала прорисовки + /// + private int _startPosX; + /// + /// Верхняя координата начала прорисовки + /// + private int _startPosY; + /// + /// Ширина прорисовки + /// + private readonly int _stormtrooperWidth = 110; + /// + /// Высота прорисовки + /// + private readonly int _stormtrooperHeight = 60; + /// + /// Инициализация свойств + /// + /// Скорость + /// Вес + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия ракет + /// Признак наличия бомб + /// Ширина картинки + /// Высота картинки + /// true - если объект успешно создан, false - проверка не пройдена, + /// т.к. нельзя создать объект в этих размерах + public bool Init(int speed, double weight, Color bodyColor, + Color additionalColor, bool rockets, bool bombs, + int width, int height) + { + // TODO: продумать проверки + _pictureWidth = width; + _pictureHeight = height; + EntityStormtrooper = new EntityStormtrooper(); + EntityStormtrooper.Init(speed, weight, bodyColor, additionalColor, rockets, bombs); + return true; + } + /// + /// Установка позиции + /// + /// Координата X + /// Координата Y + public void SetPosition(int x, int y) + { + // TODO: изменение X и Y + _startPosX = x; + _startPosY = y; + } + /// + /// Перемещение объекта + /// + /// Направление перемещения + public void MoveTransport(DirectionType direction) + { + if (EntityStormtrooper == null) + { + return; + } + switch (direction) + { + // Вверх + case DirectionType.Up: + if (_startPosY - EntityStormtrooper.Step > 0) + { + _startPosY -= (int)EntityStormtrooper.Step; + } + break; + // Вниз + case DirectionType.Down: + // TODO: Продумать логику + break; + // Влево + case DirectionType.Left: + if (_startPosX - EntityStormtrooper.Step > 0) + { + _startPosX -= (int)EntityStormtrooper.Step; + } + break; + // Вправо + case DirectionType.Right: + // TODO: Продумать логику + break; + } + } + /// + /// Прорисовка объекта + /// + /// + public void DrawTransport(Graphics g) + { + if (EntityStormtrooper == null) + { + return; + } + // TODO: прорисовка объекта + Brush brush = new SolidBrush(Color.Black); + g.FillRectangle(brush, _startPosX, _startPosY, _stormtrooperWidth, _stormtrooperHeight); + } + } +}