From 6ac30791b02cf7cccbb20d0b83fcb1b9699f2ece Mon Sep 17 00:00:00 2001 From: SVETLANA_8 Date: Wed, 21 Feb 2024 18:04:25 +0400 Subject: [PATCH] =?UTF-8?q?=D0=BB=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82?= =?UTF-8?q?=D0=B0=20=E2=84=961?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectByldozer/DirectionType.cs | 27 ++ .../ProjectByldozer/DrawningByldozer.cs | 282 ++++++++++++++++++ .../ProjectByldozer/EntityByldozer.cs | 68 +++++ .../ProjectByldozer/Form1.Designer.cs | 39 --- ProjectByldozer/ProjectByldozer/Form1.cs | 10 - .../ProjectByldozer/FormByldozer.Designer.cs | 135 +++++++++ .../ProjectByldozer/FormByldozer.cs | 91 ++++++ .../{Form1.resx => FormByldozer.resx} | 52 ++-- ProjectByldozer/ProjectByldozer/Program.cs | 2 +- .../ProjectByldozer/ProjectByldozer.csproj | 15 + .../Properties/Resources.Designer.cs | 103 +++++++ .../ProjectByldozer/Properties/Resources.resx | 133 +++++++++ .../ProjectByldozer/Resources/arrowDown.png | Bin 0 -> 9872 bytes .../ProjectByldozer/Resources/arrowLeft.png | Bin 0 -> 10146 bytes .../ProjectByldozer/Resources/arrowRight.png | Bin 0 -> 9557 bytes .../ProjectByldozer/Resources/arrowUp.png | Bin 0 -> 9861 bytes 16 files changed, 881 insertions(+), 76 deletions(-) create mode 100644 ProjectByldozer/ProjectByldozer/DirectionType.cs create mode 100644 ProjectByldozer/ProjectByldozer/DrawningByldozer.cs create mode 100644 ProjectByldozer/ProjectByldozer/EntityByldozer.cs delete mode 100644 ProjectByldozer/ProjectByldozer/Form1.Designer.cs delete mode 100644 ProjectByldozer/ProjectByldozer/Form1.cs create mode 100644 ProjectByldozer/ProjectByldozer/FormByldozer.Designer.cs create mode 100644 ProjectByldozer/ProjectByldozer/FormByldozer.cs rename ProjectByldozer/ProjectByldozer/{Form1.resx => FormByldozer.resx} (93%) create mode 100644 ProjectByldozer/ProjectByldozer/Properties/Resources.Designer.cs create mode 100644 ProjectByldozer/ProjectByldozer/Properties/Resources.resx create mode 100644 ProjectByldozer/ProjectByldozer/Resources/arrowDown.png create mode 100644 ProjectByldozer/ProjectByldozer/Resources/arrowLeft.png create mode 100644 ProjectByldozer/ProjectByldozer/Resources/arrowRight.png create mode 100644 ProjectByldozer/ProjectByldozer/Resources/arrowUp.png diff --git a/ProjectByldozer/ProjectByldozer/DirectionType.cs b/ProjectByldozer/ProjectByldozer/DirectionType.cs new file mode 100644 index 0000000..3568668 --- /dev/null +++ b/ProjectByldozer/ProjectByldozer/DirectionType.cs @@ -0,0 +1,27 @@ +namespace ProjectSportCar; + +/// +/// Направление перемещения +/// +public enum DirectionType +{ + /// + /// Вверх + /// + Up = 1, + + /// + /// Вниз + /// + Down = 2, + + /// + /// Влево + /// + Left = 3, + + /// + /// Вправо + /// + Right = 4 +} \ No newline at end of file diff --git a/ProjectByldozer/ProjectByldozer/DrawningByldozer.cs b/ProjectByldozer/ProjectByldozer/DrawningByldozer.cs new file mode 100644 index 0000000..27e065e --- /dev/null +++ b/ProjectByldozer/ProjectByldozer/DrawningByldozer.cs @@ -0,0 +1,282 @@ +using ProjectSportCar; + +namespace ProjectByldozer; + +/// +/// Класс, отвечающий за прорисовку и перемещение объекта-сущности +/// +public class DrawningByldozer +{ + /// + /// Класс-сущность + /// + public EntityByldozer? EntityByldozer { get; private set; } + + /// + /// Ширина окна + /// + private int? _pictureWidth; + + /// + /// Высота окна + /// + private int? _pictureHeight; + + /// + /// Левая координата прорисовки бульдозера + /// + private int? _startPosX; + + /// + /// Верхняя кооридната прорисовки бульдозера + /// + private int? _startPosY; + + /// + /// Ширина прорисовки бульдозера + /// + private readonly int _drawningByldozerWidth = 150; + + /// + /// Высота прорисовки бульдозера + /// + private readonly int _drawningByldozerHeight = 80; + + /// + /// Инициализация свойств + /// + /// Скорость + /// Вес + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия отвала + /// Признак наличия разрыхлитель + /// Признак наличия трубы + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool dump, bool bakingpowder, bool pipe) + { + EntityByldozer = new EntityByldozer(); + EntityByldozer.Init(speed, weight, bodyColor, additionalColor, dump, bakingpowder, pipe); + _pictureWidth = null; + _pictureHeight = null; + _startPosX = null; + _startPosY = null; + } + + /// + /// Установка границ поля + /// + /// Ширина поля + /// Высота поля + /// true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах + public bool SetPictureSize(int width, int height) + { + if (_drawningByldozerWidth < width && _drawningByldozerHeight < height) + { + // TODO проверка, что объект "влезает" в размеры поля + // если влезает, сохраняем границы и корректируем позицию объекта, если она была уже установлена + _pictureWidth = width; + _pictureHeight = height; + if (_startPosX.HasValue && _startPosY.HasValue) + { + if (_startPosX + _drawningByldozerWidth <= _pictureWidth) + { + _startPosX = 0; + + } + if (_startPosY + _drawningByldozerHeight <= _pictureHeight) + { + _startPosY = 0; + } + } + return true; + } + return false; + } + + /// + /// Установка позиции + /// + /// Координата X + /// Координата Y + public void SetPosition(int x, int y) + { + if (!_pictureHeight.HasValue || !_pictureWidth.HasValue) + { + return; + } + // Проверка выхода за границы формы по оси X + if (x < 0) // Если новая позиция находится левее левой границы формы + { + x = 0; // Устанавливаем позицию по оси X равной нулю (левой границе формы) + } + else if (x + _drawningByldozerWidth > _pictureWidth.Value) // Если новая позиция выходит за правую границу формы + { + x = _pictureWidth.Value - _drawningByldozerWidth; // Корректируем позицию по оси X + } + + // Проверка выхода за границы формы по оси Y + if (y < 0) // Если новая позиция выше верхней границы формы + { + y = 0; // Устанавливаем позицию по оси Y равной нулю (верхней границе формы) + } + else if (y + _drawningByldozerHeight > _pictureHeight.Value) // Если новая позиция выходит за нижнюю границу формы + { + y = _pictureHeight.Value - _drawningByldozerHeight; // Корректируем позицию по оси Y + } + + + _startPosX = x; + _startPosY = y; + } + + + + + + /// + /// Изменение направления перемещения + /// + /// Направление + /// true - перемещене выполнено, false - перемещение невозможно + public bool MoveTransport(DirectionType direction) + { + if (EntityByldozer == null || !_startPosX.HasValue || !_startPosY.HasValue) + { + return false; + } + + switch (direction) + { + //влево + case DirectionType.Left: + if (_startPosX.Value -EntityByldozer.Step > 0) + { + _startPosX -= (int)EntityByldozer.Step; + } + return true; + //вверх + case DirectionType.Up: + if (_startPosY.Value - EntityByldozer.Step > 0) + { + _startPosY -= (int)EntityByldozer.Step; + } + return true; + // вправо + case DirectionType.Right: + if (_startPosX.Value + _drawningByldozerWidth + EntityByldozer.Step < _pictureWidth) + { + _startPosX += (int)EntityByldozer.Step; + } + return true; + + //вниз + case DirectionType.Down: + if (_startPosY.Value + _drawningByldozerHeight + EntityByldozer.Step < _pictureHeight) + { + _startPosY += (int)EntityByldozer.Step; + } + + return true; + default: + return false; + } + } + + + /// + /// Прорисовка объекта + /// + /// + public void DrawTransport(Graphics g) + { + if (EntityByldozer == null || !_startPosX.HasValue || !_startPosY.HasValue) + { + return; + } + + + + Pen pen = new(Color.Black); + Brush additionalBrush = new SolidBrush(EntityByldozer.AdditionalColor); + Brush bodybrush = new SolidBrush(EntityByldozer.BodyColor); + + //границы бульдозера и колес + g.DrawRectangle(pen, _startPosX.Value+30, _startPosY.Value + 20, 100, 30); + g.DrawRectangle(pen, _startPosX.Value + 100, _startPosY.Value, 30, 20); + + g.DrawArc(pen, _startPosX.Value+30, _startPosY.Value + 45, 30, 40, 130, 100); + g.DrawArc(pen, _startPosX.Value + 103, _startPosY.Value + 50, 30, 40, 258, 140); + + g.DrawLine(pen, _startPosX.Value + 35, _startPosY.Value + 80, _startPosX.Value + 130, _startPosY.Value + 80); + + g.DrawEllipse(pen, _startPosX.Value + 60, _startPosY.Value + 67, 10, 10); + g.DrawEllipse(pen, _startPosX.Value + 78, _startPosY.Value + 67, 10, 10); + g.DrawEllipse(pen, _startPosX.Value + 95, _startPosY.Value + 67, 10, 10); + g.DrawEllipse(pen, _startPosX.Value + 70, _startPosY.Value + 53, 7, 7); + g.DrawEllipse(pen, _startPosX.Value + 90, _startPosY.Value + 53, 7, 7); + g.DrawEllipse(pen, _startPosX.Value + 35, _startPosY.Value + 55, 20, 20); + g.DrawEllipse(pen, _startPosX.Value + 110 , _startPosY.Value + 55, 20, 20); + + //заливка кабины и гусениц + Brush br = new SolidBrush(Color.Black); + g.FillRectangle(bodybrush, _startPosX.Value + 30, _startPosY.Value + 20, 100, 30); + g.FillRectangle(bodybrush, _startPosX.Value + 100, _startPosY.Value, 30, 20); + g.FillEllipse(br, _startPosX.Value + 35, _startPosY.Value + 55, 20, 20); + g.FillEllipse(br, _startPosX.Value + 110, _startPosY.Value + 55, 20, 20); + g.FillEllipse(br, _startPosX.Value + 60, _startPosY.Value + 67, 10, 10); + g.FillEllipse(br, _startPosX.Value + 78, _startPosY.Value + 67, 10, 10); + g.FillEllipse(br, _startPosX.Value + 95, _startPosY.Value + 67, 10, 10); + g.FillEllipse(br, _startPosX.Value + 70, _startPosY.Value + 53, 7, 7); + g.FillEllipse(br, _startPosX.Value + 90, _startPosY.Value + 53, 7, 7); + + //окно + Brush blfara = new SolidBrush(Color.Blue); + g.FillRectangle(blfara, _startPosX.Value + 110, _startPosY.Value + 5, 10, 25); + + ///труба + if (EntityByldozer.Pipe) + { + g.DrawRectangle(pen, _startPosX.Value + 60, _startPosY.Value, 5, 20); + g.FillRectangle(bodybrush, _startPosX.Value + 60, _startPosY.Value, 5, 20); + } + // отвал + if (EntityByldozer.Dump) + + { + Point point1 = new Point(_startPosX.Value+30, _startPosY.Value + 35); + Point point2 = new Point(_startPosX.Value +25, _startPosY.Value + 35); + Point point4 = new Point(_startPosX.Value +25, _startPosY.Value + 23); + Point point5 = new Point(_startPosX.Value +20, _startPosY.Value + 23); + Point point6 = new Point(_startPosX.Value +15, _startPosY.Value + 60); + Point point7 = new Point(_startPosX.Value +2, _startPosY.Value + 80); + Point point8 = new Point(_startPosX.Value + 25, _startPosY.Value + 80); + Point point9 = new Point(_startPosX.Value + 25, _startPosY.Value + 46); + Point point10 = new Point(_startPosX.Value+30, _startPosY.Value + 46); + + Point[] Dump = { point1, point2, point4, point5, point6, point7, point8, point9, point10 }; + g.FillPolygon(additionalBrush, Dump); + } + + if (EntityByldozer.Bakingpowder) + + { + Point point1 = new Point(_startPosX.Value + 131, _startPosY.Value + 25); + Point point2 = new Point(_startPosX.Value + 150, _startPosY.Value + 25); + Point point4 = new Point(_startPosX.Value + 150, _startPosY.Value + 35); + Point point5 = new Point(_startPosX.Value + 147, _startPosY.Value + 35); + Point point6 = new Point(_startPosX.Value + 147, _startPosY.Value + 60); + Point point7 = new Point(_startPosX.Value + 144, _startPosY.Value + 60); + Point point8 = new Point(_startPosX.Value + 145, _startPosY.Value + 80); + Point point9 = new Point(_startPosX.Value + 137, _startPosY.Value + 60); + Point point10 = new Point(_startPosX.Value + 134, _startPosY.Value + 60); + Point point11 = new Point(_startPosX.Value + 134, _startPosY.Value + 35); + + Point point12 = new Point(_startPosX.Value + 131, _startPosY.Value + 35); + + + Point[] Bakingpowder = { point1, point2, point4, point5, point6, point7, point8, point9, point10, point11, point12 }; + g.FillPolygon(additionalBrush, Bakingpowder); + + } + } +} diff --git a/ProjectByldozer/ProjectByldozer/EntityByldozer.cs b/ProjectByldozer/ProjectByldozer/EntityByldozer.cs new file mode 100644 index 0000000..7088537 --- /dev/null +++ b/ProjectByldozer/ProjectByldozer/EntityByldozer.cs @@ -0,0 +1,68 @@ +namespace ProjectByldozer; + +/// +/// Класс-сущность "Спортивный автомобиль" +/// +public class EntityByldozer +{ + /// + /// Скорость + /// + public int Speed { get; private set; } + + /// + /// Вес + /// + public double Weight { get; private set; } + + /// + /// Основной цвет + /// + public Color BodyColor { get; private set; } + + /// + /// Дополнительный цвет (для опциональных элементов) + /// + public Color AdditionalColor { get; private set; } + + /// + /// Признак (опция) наличия отвала + /// + public bool Dump { get; private set; } + + /// + /// Признак (опция) наличия разрыхлителя + /// + public bool Bakingpowder { get; private set; } + + /// + /// Признак (опция) наличия трубы + /// + public bool Pipe { get; private set; } + + /// + /// Шаг перемещения автомобиля + /// + public double Step => Speed * 100 / Weight; + + /// + /// Инициализация полей объекта-класса спортивного автомобиля + /// + /// Скорость + /// Вес автомобиля + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия обвеса + /// Признак наличия антикрыла + /// Признак наличия трубы + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool dump, bool bakingpowder, bool pipe) + { + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + Dump = dump; + Bakingpowder = bakingpowder; + Pipe = pipe; + } +} \ No newline at end of file diff --git a/ProjectByldozer/ProjectByldozer/Form1.Designer.cs b/ProjectByldozer/ProjectByldozer/Form1.Designer.cs deleted file mode 100644 index 706d0ee..0000000 --- a/ProjectByldozer/ProjectByldozer/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace ProjectByldozer -{ - partial class Form1 - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "Form1"; - } - - #endregion - } -} \ No newline at end of file diff --git a/ProjectByldozer/ProjectByldozer/Form1.cs b/ProjectByldozer/ProjectByldozer/Form1.cs deleted file mode 100644 index c287a58..0000000 --- a/ProjectByldozer/ProjectByldozer/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace ProjectByldozer -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} \ No newline at end of file diff --git a/ProjectByldozer/ProjectByldozer/FormByldozer.Designer.cs b/ProjectByldozer/ProjectByldozer/FormByldozer.Designer.cs new file mode 100644 index 0000000..54995c7 --- /dev/null +++ b/ProjectByldozer/ProjectByldozer/FormByldozer.Designer.cs @@ -0,0 +1,135 @@ +namespace ProjectByldozer +{ + partial class FormByldozer + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + pictureBoxByldozer = new PictureBox(); + buttonCreateByldozer = new Button(); + buttonLeft = new Button(); + buttonUp = new Button(); + buttonDown = new Button(); + buttonRight = new Button(); + ((System.ComponentModel.ISupportInitialize)pictureBoxByldozer).BeginInit(); + SuspendLayout(); + // + // pictureBoxByldozer + // + pictureBoxByldozer.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right; + pictureBoxByldozer.Location = new Point(-2, -1); + pictureBoxByldozer.Name = "pictureBoxByldozer"; + pictureBoxByldozer.Size = new Size(751, 406); + pictureBoxByldozer.TabIndex = 0; + pictureBoxByldozer.TabStop = false; + // + // buttonCreateByldozer + // + buttonCreateByldozer.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonCreateByldozer.Location = new Point(12, 367); + buttonCreateByldozer.Name = "buttonCreateByldozer"; + buttonCreateByldozer.Size = new Size(59, 26); + buttonCreateByldozer.TabIndex = 1; + buttonCreateByldozer.Text = "Создать"; + buttonCreateByldozer.TextAlign = ContentAlignment.TopRight; + buttonCreateByldozer.UseVisualStyleBackColor = true; + buttonCreateByldozer.Click += ButtonCreateByldozer_Click; + // + // buttonLeft + // + buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonLeft.BackgroundImage = Properties.Resources.arrowLeft; + buttonLeft.BackgroundImageLayout = ImageLayout.Stretch; + buttonLeft.Location = new Point(620, 370); + buttonLeft.Name = "buttonLeft"; + buttonLeft.Size = new Size(35, 35); + buttonLeft.TabIndex = 2; + buttonLeft.UseVisualStyleBackColor = true; + buttonLeft.Click += ButtonMove_Click; + // + // buttonUp + // + buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonUp.BackgroundImage = Properties.Resources.arrowUp; + buttonUp.BackgroundImageLayout = ImageLayout.Stretch; + buttonUp.Location = new Point(661, 329); + buttonUp.Name = "buttonUp"; + buttonUp.Size = new Size(35, 35); + buttonUp.TabIndex = 3; + buttonUp.UseVisualStyleBackColor = true; + buttonUp.Click += ButtonMove_Click; + // + // buttonDown + // + buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonDown.BackgroundImage = Properties.Resources.arrowDown; + buttonDown.BackgroundImageLayout = ImageLayout.Stretch; + buttonDown.Location = new Point(661, 370); + buttonDown.Name = "buttonDown"; + buttonDown.Size = new Size(35, 35); + buttonDown.TabIndex = 4; + buttonDown.UseVisualStyleBackColor = true; + buttonDown.Click += ButtonMove_Click; + // + // buttonRight + // + buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonRight.BackgroundImage = Properties.Resources.arrowRight; + buttonRight.BackgroundImageLayout = ImageLayout.Stretch; + buttonRight.Location = new Point(702, 370); + buttonRight.Name = "buttonRight"; + buttonRight.Size = new Size(35, 35); + buttonRight.TabIndex = 5; + buttonRight.UseVisualStyleBackColor = true; + buttonRight.Click += ButtonMove_Click; + // + // FormByldozer + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(749, 405); + Controls.Add(buttonRight); + Controls.Add(buttonDown); + Controls.Add(buttonUp); + Controls.Add(buttonLeft); + Controls.Add(buttonCreateByldozer); + Controls.Add(pictureBoxByldozer); + Name = "FormByldozer"; + Text = "Бульдозер"; + ((System.ComponentModel.ISupportInitialize)pictureBoxByldozer).EndInit(); + ResumeLayout(false); + } + + #endregion + + private PictureBox pictureBoxByldozer; + private Button buttonCreateByldozer; + private Button buttonLeft; + private Button buttonUp; + private Button buttonDown; + private Button buttonRight; + } +} \ No newline at end of file diff --git a/ProjectByldozer/ProjectByldozer/FormByldozer.cs b/ProjectByldozer/ProjectByldozer/FormByldozer.cs new file mode 100644 index 0000000..c369b3d --- /dev/null +++ b/ProjectByldozer/ProjectByldozer/FormByldozer.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; + + +namespace ProjectByldozer; +/// +/// форма рыботы с обьектом "бульдозер" +/// +public partial class FormByldozer : Form +{ + /// + /// поле-объект для прорисовки обьекта + /// + private DrawningByldozer? _drawningByldozer; + /// + /// инциализация формы + /// + public FormByldozer() + { + InitializeComponent(); + } + /// + /// метод прорисовки + /// + private void Draw() + { + if (_drawningByldozer == null) + { + return; + } + Bitmap bmp = new(pictureBoxByldozer.Width, pictureBoxByldozer.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawningByldozer.DrawTransport(gr); + pictureBoxByldozer.Image = bmp; + + } + /// + /// обработка нажатия кнопки "создать" + /// + /// + /// + private void ButtonCreateByldozer_Click(object sender, EventArgs e) + { + Random random = new(); + _drawningByldozer = new DrawningByldozer(); + _drawningByldozer.Init(random.Next(100, 300), random.Next(1000, 3000), + 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)), Convert.ToBoolean(random.Next(0, 2))); + _drawningByldozer.SetPictureSize(pictureBoxByldozer.Width, pictureBoxByldozer.Height); + _drawningByldozer.SetPosition(random.Next(10, 100), random.Next(10, 100)); + + Draw(); + + + } + /// + /// премещение объекта по форме + /// + /// + /// + private void ButtonMove_Click(object sender, EventArgs e) + { + if (_drawningByldozer == null) + { + return; + } + string name = ((Button)sender)?.Name ?? string.Empty; + bool result = false; + switch (name) + { + case "buttonUp": + result = _drawningByldozer.MoveTransport(ProjectSportCar.DirectionType.Up); + break; + case "buttonDown": + result = _drawningByldozer.MoveTransport(ProjectSportCar.DirectionType.Down); + break; + case "buttonLeft": + result = _drawningByldozer.MoveTransport(ProjectSportCar.DirectionType.Left); + break; + case "buttonRight": + result = _drawningByldozer.MoveTransport(ProjectSportCar.DirectionType.Right); + break; + } + if (result) + { + Draw(); + } + } +} diff --git a/ProjectByldozer/ProjectByldozer/Form1.resx b/ProjectByldozer/ProjectByldozer/FormByldozer.resx similarity index 93% rename from ProjectByldozer/ProjectByldozer/Form1.resx rename to ProjectByldozer/ProjectByldozer/FormByldozer.resx index 1af7de1..a395bff 100644 --- a/ProjectByldozer/ProjectByldozer/Form1.resx +++ b/ProjectByldozer/ProjectByldozer/FormByldozer.resx @@ -1,24 +1,24 @@  - diff --git a/ProjectByldozer/ProjectByldozer/Program.cs b/ProjectByldozer/ProjectByldozer/Program.cs index 965f8c6..85b3071 100644 --- a/ProjectByldozer/ProjectByldozer/Program.cs +++ b/ProjectByldozer/ProjectByldozer/Program.cs @@ -11,7 +11,7 @@ namespace ProjectByldozer // To customize application configuration such as set high DPI settings or default font, // see https://aka.ms/applicationconfiguration. ApplicationConfiguration.Initialize(); - Application.Run(new Form1()); + Application.Run(new FormByldozer()); } } } \ No newline at end of file diff --git a/ProjectByldozer/ProjectByldozer/ProjectByldozer.csproj b/ProjectByldozer/ProjectByldozer/ProjectByldozer.csproj index e1a0735..244387d 100644 --- a/ProjectByldozer/ProjectByldozer/ProjectByldozer.csproj +++ b/ProjectByldozer/ProjectByldozer/ProjectByldozer.csproj @@ -8,4 +8,19 @@ enable + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/ProjectByldozer/ProjectByldozer/Properties/Resources.Designer.cs b/ProjectByldozer/ProjectByldozer/Properties/Resources.Designer.cs new file mode 100644 index 0000000..4d874fd --- /dev/null +++ b/ProjectByldozer/ProjectByldozer/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace ProjectByldozer.Properties { + using System; + + + /// + /// Класс ресурса со строгой типизацией для поиска локализованных строк и т.д. + /// + // Этот класс создан автоматически классом StronglyTypedResourceBuilder + // с помощью такого средства, как ResGen или Visual Studio. + // Чтобы добавить или удалить член, измените файл .ResX и снова запустите ResGen + // с параметром /str или перестройте свой проект VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Возвращает кэшированный экземпляр ResourceManager, использованный этим классом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ProjectByldozer.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Перезаписывает свойство CurrentUICulture текущего потока для всех + /// обращений к ресурсу с помощью этого класса ресурса со строгой типизацией. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap arrowDown { + get { + object obj = ResourceManager.GetObject("arrowDown", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap arrowLeft { + get { + object obj = ResourceManager.GetObject("arrowLeft", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap arrowRight { + get { + object obj = ResourceManager.GetObject("arrowRight", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap arrowUp { + get { + object obj = ResourceManager.GetObject("arrowUp", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/ProjectByldozer/ProjectByldozer/Properties/Resources.resx b/ProjectByldozer/ProjectByldozer/Properties/Resources.resx new file mode 100644 index 0000000..dc6b4c5 --- /dev/null +++ b/ProjectByldozer/ProjectByldozer/Properties/Resources.resx @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\arrowDown.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrowLeft.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrowRight.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\arrowUp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/ProjectByldozer/ProjectByldozer/Resources/arrowDown.png b/ProjectByldozer/ProjectByldozer/Resources/arrowDown.png new file mode 100644 index 0000000000000000000000000000000000000000..af1443cef0a96c2981c42b0ca6f47714c19eabcf GIT binary patch literal 9872 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 UTOXfU|5qjpGuy)@hj17F0~@SbrT_o{ literal 0 HcmV?d00001 diff --git a/ProjectByldozer/ProjectByldozer/Resources/arrowLeft.png b/ProjectByldozer/ProjectByldozer/Resources/arrowLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..ab89c099b712e72e86fb5d92b71bdb0a2889d749 GIT binary patch literal 10146 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 A3IG5A literal 0 HcmV?d00001 diff --git a/ProjectByldozer/ProjectByldozer/Resources/arrowRight.png b/ProjectByldozer/ProjectByldozer/Resources/arrowRight.png new file mode 100644 index 0000000000000000000000000000000000000000..be051eaf7e9ea0460f3fbc54eba524bccbbfcdd7 GIT binary patch literal 9557 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 literal 0 HcmV?d00001 -- 2.25.1