From 201d60fb309b7e645cb50350d5577ea90af524b7 Mon Sep 17 00:00:00 2001 From: Geo7312 Date: Wed, 7 Feb 2024 19:51:40 +0400 Subject: [PATCH 1/3] =?UTF-8?q?=D0=9B=D0=B0=D0=B1=D0=BE=D1=80=D0=B0=D1=82?= =?UTF-8?q?=D0=BD=D0=BE=D1=80=D0=BD=D0=B0=D1=8F=20=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=20=E2=84=96=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 6 + .../ProjectTrolleybus/Form1.Designer.cs | 46 ------- ProjectTrolleybus/ProjectTrolleybus/Form1.cs | 15 --- .../ProjectTrolleybus/Form1.resx | 120 ------------------ 4 files changed, 6 insertions(+), 181 deletions(-) delete mode 100644 ProjectTrolleybus/ProjectTrolleybus/Form1.Designer.cs delete mode 100644 ProjectTrolleybus/ProjectTrolleybus/Form1.cs delete mode 100644 ProjectTrolleybus/ProjectTrolleybus/Form1.resx diff --git a/.gitignore b/.gitignore index ca1c7a3..8d5aded 100644 --- a/.gitignore +++ b/.gitignore @@ -398,3 +398,9 @@ FodyWeavers.xsd # JetBrains Rider *.sln.iml +/ProjectTrolleybus/ProjectTrolleybus/Form1.resx +/ProjectTrolleybus/ProjectTrolleybus/Form1.cs +/ProjectTrolleybus/ProjectTrolleybus/Form1.Designer.cs +/ProjectTrolleybus/ProjectTrolleybus/Form1.cs +/ProjectTrolleybus/ProjectTrolleybus/Form1.Designer.cs +/ProjectTrolleybus/ProjectTrolleybus/Form1.resx diff --git a/ProjectTrolleybus/ProjectTrolleybus/Form1.Designer.cs b/ProjectTrolleybus/ProjectTrolleybus/Form1.Designer.cs deleted file mode 100644 index f1ff1d9..0000000 --- a/ProjectTrolleybus/ProjectTrolleybus/Form1.Designer.cs +++ /dev/null @@ -1,46 +0,0 @@ -namespace ProjectTrolleybus -{ - 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() - { - SuspendLayout(); - // - // Form1 - // - AutoScaleDimensions = new SizeF(7F, 15F); - AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(800, 450); - Name = "Form1"; - Text = "Form1"; - Load += Form1_Load; - ResumeLayout(false); - } - - #endregion - } -} diff --git a/ProjectTrolleybus/ProjectTrolleybus/Form1.cs b/ProjectTrolleybus/ProjectTrolleybus/Form1.cs deleted file mode 100644 index 87f3f3a..0000000 --- a/ProjectTrolleybus/ProjectTrolleybus/Form1.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace ProjectTrolleybus -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - - private void Form1_Load(object sender, EventArgs e) - { - - } - } -} diff --git a/ProjectTrolleybus/ProjectTrolleybus/Form1.resx b/ProjectTrolleybus/ProjectTrolleybus/Form1.resx deleted file mode 100644 index af32865..0000000 --- a/ProjectTrolleybus/ProjectTrolleybus/Form1.resx +++ /dev/null @@ -1,120 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 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 - - \ No newline at end of file -- 2.25.1 From 0b983f86b7b09f9c62d203dfcb575b377c390f90 Mon Sep 17 00:00:00 2001 From: Geo7312 Date: Wed, 7 Feb 2024 19:52:09 +0400 Subject: [PATCH 2/3] =?UTF-8?q?=D0=9B=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 --- .../ProjectTrolleybus/DirectionType.cs | 27 ++ .../ProjectTrolleybus/DrawningTrolleybus.cs | 254 ++++++++++++++++++ .../ProjectTrolleybus/EntityTrolleybus.cs | 57 ++++ .../FormTrolleybus.Designer.cs | 134 +++++++++ .../ProjectTrolleybus/FormTrolleybus.cs | 67 +++++ .../ProjectTrolleybus/FormTrolleybus.resx | 120 +++++++++ .../ProjectTrolleybus/Program.cs | 2 +- .../ProjectTrolleybus.csproj | 15 ++ .../Properties/Resources.Designer.cs | 103 +++++++ .../Properties/Resources.resx | 133 +++++++++ .../ProjectTrolleybus/Resources/play.png | Bin 0 -> 10977 bytes .../ProjectTrolleybus/Resources/play1.png | Bin 0 -> 4993 bytes .../ProjectTrolleybus/Resources/play2.png | Bin 0 -> 11299 bytes .../ProjectTrolleybus/Resources/play3.png | Bin 0 -> 12691 bytes 14 files changed, 911 insertions(+), 1 deletion(-) create mode 100644 ProjectTrolleybus/ProjectTrolleybus/DirectionType.cs create mode 100644 ProjectTrolleybus/ProjectTrolleybus/DrawningTrolleybus.cs create mode 100644 ProjectTrolleybus/ProjectTrolleybus/EntityTrolleybus.cs create mode 100644 ProjectTrolleybus/ProjectTrolleybus/FormTrolleybus.Designer.cs create mode 100644 ProjectTrolleybus/ProjectTrolleybus/FormTrolleybus.cs create mode 100644 ProjectTrolleybus/ProjectTrolleybus/FormTrolleybus.resx create mode 100644 ProjectTrolleybus/ProjectTrolleybus/Properties/Resources.Designer.cs create mode 100644 ProjectTrolleybus/ProjectTrolleybus/Properties/Resources.resx create mode 100644 ProjectTrolleybus/ProjectTrolleybus/Resources/play.png create mode 100644 ProjectTrolleybus/ProjectTrolleybus/Resources/play1.png create mode 100644 ProjectTrolleybus/ProjectTrolleybus/Resources/play2.png create mode 100644 ProjectTrolleybus/ProjectTrolleybus/Resources/play3.png diff --git a/ProjectTrolleybus/ProjectTrolleybus/DirectionType.cs b/ProjectTrolleybus/ProjectTrolleybus/DirectionType.cs new file mode 100644 index 0000000..3d82936 --- /dev/null +++ b/ProjectTrolleybus/ProjectTrolleybus/DirectionType.cs @@ -0,0 +1,27 @@ +namespace ProjectTrolleybus; + +/// +/// Направление перемещения +/// +public enum DirectionType +{ + /// + /// Вверх + /// + Up = 1, + + /// + /// Вниз + /// + Down = 2, + + /// + /// Влево + /// + Left = 3, + + /// + /// Вправо + /// + Right = 4 +} diff --git a/ProjectTrolleybus/ProjectTrolleybus/DrawningTrolleybus.cs b/ProjectTrolleybus/ProjectTrolleybus/DrawningTrolleybus.cs new file mode 100644 index 0000000..0a7254b --- /dev/null +++ b/ProjectTrolleybus/ProjectTrolleybus/DrawningTrolleybus.cs @@ -0,0 +1,254 @@ +namespace ProjectTrolleybus; + +/// +/// Класс, отвечающий за прорисовку и перемещение объекта-сущности +/// +public class DrawningTrolleybus +{ + /// + /// Класс-сущность + /// + public EntityTrolleybus? EntityTrolleybus { get; private set; } + + /// + /// Ширина окна + /// + private int? _pictureWidth; + + /// + /// Высота окна + /// + private int? _pictureHeight; + + /// + /// Левая координата прорисовки транспорта + /// + private int? _startPosX; + + /// + /// Верхняя координата прорисовки транспорта + /// + private int? _startPosY; + + /// + /// Ширина прорисовки транспорта + /// + private readonly int _drawningVehicleWidth = 100; + + /// + /// Высота прорисовки транспорта + /// + private readonly int _drawningVehicleHeight = 48; + + /// + /// Инициализация свойств + /// + /// + /// + /// + /// + /// + /// + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool batteryCompartment, bool horns) + { + EntityTrolleybus = new EntityTrolleybus(); + EntityTrolleybus.Init(speed, weight, bodyColor, additionalColor, batteryCompartment, horns); + _pictureHeight = null; + _pictureWidth = null; + _startPosX = null; + _startPosY = null; + } + + /// + /// Установка границ поля + /// + /// Ширина поля + /// Высота поля + /// true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах + public bool SetPictureSize(int width, int height) + { + //TODO проверка, что объект "влезает" в размеры поля + //если влезает, сохраняем границы и корректируем позицию объекта, если она уже была установлена + if (_drawningVehicleWidth > width || _drawningVehicleHeight > height) + { + return false; + } + + _pictureWidth = width; + _pictureHeight = height; + if (_startPosX.HasValue || _startPosY.HasValue) + { + if (_startPosX + _drawningVehicleWidth > _pictureWidth) + { + _startPosX = _pictureWidth - _drawningVehicleWidth; + } + else if (_startPosX < 0) _startPosX = 0; + if (_startPosY + _drawningVehicleHeight > _pictureHeight) + { + _startPosY = _pictureHeight - _drawningVehicleHeight; + } + else if (_startPosY < 0) _startPosY = 0; + } + return true; + } + + /// + /// Установка позиции + /// + /// Координата X + /// Координата Y + public void SetPosition(int x, int y, int width, int height) + { + if (!_pictureWidth.HasValue || !_pictureHeight.HasValue) + { + return; + } + //TODO если при установке объекта в эти координаты, он будет "выходить" за границы формы + //то надо изменить координаты, чтобы он оставался в этих границах + if (x + _drawningVehicleWidth > _pictureWidth) + { + _startPosX = _pictureWidth - _drawningVehicleWidth; + } + else if (x < 0) _startPosX = 0; + else _startPosX = x; + + if (y + _drawningVehicleHeight > _pictureHeight) + { + _startPosY = _pictureHeight - _drawningVehicleHeight; + } + else if (y < 0) _startPosY = 0; + else _startPosY = y; + } + + + /// + /// Изменение направления движения + /// + /// + /// + public bool MoveVehicle(DirectionType direction) + { + if (EntityTrolleybus == null || !_startPosX.HasValue || !_startPosY.HasValue) + { + return false; + } + + switch (direction) + { + // влево + case DirectionType.Left: + if (_startPosX.Value - EntityTrolleybus.Step > 0) + { + _startPosX -= (int)EntityTrolleybus.Step; + } + return true; + // вверх + case DirectionType.Up: + if (_startPosY.Value - EntityTrolleybus.Step > 0) + { + _startPosY -= (int)EntityTrolleybus.Step; + } + return true; + // вправо + case DirectionType.Right: + { + if (_startPosX.Value + _drawningVehicleWidth + EntityTrolleybus.Step < _pictureWidth) + { + _startPosX += (int)EntityTrolleybus.Step; + } + } + return true; + // вниз + case DirectionType.Down: + { + if (_startPosY.Value + _drawningVehicleHeight + EntityTrolleybus.Step < _pictureHeight) + { + _startPosY += (int)EntityTrolleybus.Step; + } + } + return true; + default: + return false; + } + } + + /// + /// Прорисовка объекта + /// + /// + public void DrawTransport(Graphics g) + { + if (EntityTrolleybus == null || !_startPosX.HasValue || !_startPosY.HasValue) + { + return; + } + + Pen pen = new(Color.Black); + + //Колёса + pen.Width = 2; + g.DrawEllipse(pen, _startPosX.Value + 20, _startPosY.Value + 36, 12, 12); + g.DrawEllipse(pen, _startPosX.Value + 80, _startPosY.Value + 36, 12, 12); + pen.Width = 1; + Brush brBlackWheel = new SolidBrush(Color.Black); + g.FillEllipse(brBlackWheel, _startPosX.Value + 20, _startPosY.Value + 36, 12, 12); + g.FillEllipse(brBlackWheel, _startPosX.Value + 80, _startPosY.Value + 36, 12, 12); + Brush brYelWheel = new SolidBrush(Color.Goldenrod); + g.FillEllipse(brYelWheel, _startPosX.Value + 22, _startPosY.Value + 38, 8, 8); + g.FillEllipse(brYelWheel, _startPosX.Value + 82, _startPosY.Value + 38, 8, 8); + + //Кузов + Brush br = new SolidBrush(EntityTrolleybus.BodyColor); + g.FillRectangle(br, _startPosX.Value + 11, _startPosY.Value + 16, 89, 24); + + //Границы Автомобиля + g.DrawRectangle(pen, _startPosX.Value + 10, _startPosY.Value + 15, 90, 25); + g.DrawRectangle(pen, _startPosX.Value + 36, _startPosY.Value + 25, 10, 15); + g.DrawRectangle(pen, _startPosX.Value + 88, _startPosY.Value + 19, 12, 12); + pen.Width = 2; + g.DrawEllipse(pen, _startPosX.Value + 12, _startPosY.Value + 20, 8, 10); + g.DrawEllipse(pen, _startPosX.Value + 24, _startPosY.Value + 20, 8, 10); + g.DrawEllipse(pen, _startPosX.Value + 50, _startPosY.Value + 20, 8, 10); + g.DrawEllipse(pen, _startPosX.Value + 62, _startPosY.Value + 20, 8, 10); + g.DrawEllipse(pen, _startPosX.Value + 74, _startPosY.Value + 20, 8, 10); + pen.Width = 1; + + //Стекла и кабина + Brush brBlue = new SolidBrush(Color.LightBlue); + g.FillRectangle(brBlue, _startPosX.Value + 89, _startPosY.Value + 20, 11, 11); + g.FillEllipse(brBlue, _startPosX.Value + 12, _startPosY.Value + 20, 8, 10); + g.FillEllipse(brBlue, _startPosX.Value + 24, _startPosY.Value + 20, 8, 10); + g.FillEllipse(brBlue, _startPosX.Value + 50, _startPosY.Value + 20, 8, 10); + g.FillEllipse(brBlue, _startPosX.Value + 62, _startPosY.Value + 20, 8, 10); + g.FillEllipse(brBlue, _startPosX.Value + 74, _startPosY.Value + 20, 8, 10); + + //Дверь + Brush brBlack = new SolidBrush(Color.LightGray); + g.FillRectangle(brBlack, _startPosX.Value + 37, _startPosY.Value + 26, 9, 14); + + Brush additBrush = new SolidBrush(EntityTrolleybus.AdditionalColor); + + // "Рога" для проводов + if (EntityTrolleybus.Horns) + { + pen.Width = 2; + g.DrawLine(pen, _startPosX.Value + 77, _startPosY.Value + 15, _startPosX.Value + 52, _startPosY.Value + 2); + pen.Width = 1; + g.DrawRectangle(pen, _startPosX.Value + 34, _startPosY.Value, 20, 5); + + g.FillRectangle(additBrush, _startPosX.Value + 35, _startPosY.Value + 1, 19, 4); + + } + + // Отсек под батареи + if (EntityTrolleybus.BatteryCompartment) + { + g.DrawRectangle(pen, _startPosX.Value, _startPosY.Value + 24, 10, 12); + + g.FillRectangle(additBrush, _startPosX.Value + 1, _startPosY.Value + 25, 9, 11); + } + + } + + +} diff --git a/ProjectTrolleybus/ProjectTrolleybus/EntityTrolleybus.cs b/ProjectTrolleybus/ProjectTrolleybus/EntityTrolleybus.cs new file mode 100644 index 0000000..20e254b --- /dev/null +++ b/ProjectTrolleybus/ProjectTrolleybus/EntityTrolleybus.cs @@ -0,0 +1,57 @@ +namespace ProjectTrolleybus; +/// +/// Класс-Сущность "Троллейбус" +/// +public class EntityTrolleybus +{ + /// + /// Скорость + /// + 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 BatteryCompartment { get; private set; } + + /// + /// Признак (опция) наличия "Рогов" для подключения проводов + /// + public bool Horns { get; private set; } + + public double Step => Speed * 100 / Weight; + + /// + /// + /// + /// + /// + /// + /// + /// + /// + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool batteryCompartment, bool horns) + { + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + BatteryCompartment = batteryCompartment; + Horns = horns; + } +} diff --git a/ProjectTrolleybus/ProjectTrolleybus/FormTrolleybus.Designer.cs b/ProjectTrolleybus/ProjectTrolleybus/FormTrolleybus.Designer.cs new file mode 100644 index 0000000..11c468d --- /dev/null +++ b/ProjectTrolleybus/ProjectTrolleybus/FormTrolleybus.Designer.cs @@ -0,0 +1,134 @@ +namespace ProjectTrolleybus +{ + partial class FormTrolleybus + { + /// + /// 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() + { + pictureBoxTrolleybus = new PictureBox(); + buttonCreateTrolleybus = new Button(); + buttonLeft = new Button(); + buttonDown = new Button(); + buttonRight = new Button(); + buttonUp = new Button(); + ((System.ComponentModel.ISupportInitialize)pictureBoxTrolleybus).BeginInit(); + SuspendLayout(); + // + // pictureBoxTrolleybus + // + pictureBoxTrolleybus.Dock = DockStyle.Fill; + pictureBoxTrolleybus.Location = new Point(0, 0); + pictureBoxTrolleybus.Name = "pictureBoxTrolleybus"; + pictureBoxTrolleybus.Size = new Size(800, 450); + pictureBoxTrolleybus.TabIndex = 0; + pictureBoxTrolleybus.TabStop = false; + // + // buttonCreateTrolleybus + // + buttonCreateTrolleybus.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonCreateTrolleybus.Location = new Point(22, 406); + buttonCreateTrolleybus.Name = "buttonCreateTrolleybus"; + buttonCreateTrolleybus.Size = new Size(75, 23); + buttonCreateTrolleybus.TabIndex = 1; + buttonCreateTrolleybus.Text = "Создать"; + buttonCreateTrolleybus.UseVisualStyleBackColor = true; + buttonCreateTrolleybus.Click += ButtonCreateTrolleybus_Click; + // + // buttonLeft + // + buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonLeft.BackgroundImage = Properties.Resources.play2; + buttonLeft.BackgroundImageLayout = ImageLayout.Stretch; + buttonLeft.Location = new Point(670, 394); + buttonLeft.Name = "buttonLeft"; + buttonLeft.Size = new Size(35, 35); + buttonLeft.TabIndex = 2; + buttonLeft.UseVisualStyleBackColor = true; + buttonLeft.Click += ButtonMove_Click; + // + // buttonDown + // + buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonDown.BackgroundImage = Properties.Resources.play1; + buttonDown.BackgroundImageLayout = ImageLayout.Stretch; + buttonDown.Location = new Point(712, 394); + buttonDown.Name = "buttonDown"; + buttonDown.Size = new Size(35, 35); + buttonDown.TabIndex = 3; + buttonDown.UseVisualStyleBackColor = true; + buttonDown.Click += ButtonMove_Click; + // + // buttonRight + // + buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonRight.BackgroundImage = Properties.Resources.play; + buttonRight.BackgroundImageLayout = ImageLayout.Stretch; + buttonRight.Location = new Point(753, 394); + buttonRight.Name = "buttonRight"; + buttonRight.Size = new Size(35, 35); + buttonRight.TabIndex = 4; + buttonRight.UseVisualStyleBackColor = true; + buttonRight.Click += ButtonMove_Click; + // + // buttonUp + // + buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonUp.BackgroundImage = Properties.Resources.play3; + buttonUp.BackgroundImageLayout = ImageLayout.Stretch; + buttonUp.Location = new Point(712, 353); + buttonUp.Name = "buttonUp"; + buttonUp.Size = new Size(35, 35); + buttonUp.TabIndex = 5; + buttonUp.UseVisualStyleBackColor = true; + buttonUp.Click += ButtonMove_Click; + // + // FormTrolleybus + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(800, 450); + Controls.Add(buttonUp); + Controls.Add(buttonRight); + Controls.Add(buttonDown); + Controls.Add(buttonLeft); + Controls.Add(buttonCreateTrolleybus); + Controls.Add(pictureBoxTrolleybus); + Name = "FormTrolleybus"; + Text = "Троллейбус"; + ((System.ComponentModel.ISupportInitialize)pictureBoxTrolleybus).EndInit(); + ResumeLayout(false); + } + + #endregion + + private PictureBox pictureBoxTrolleybus; + private Button buttonCreateTrolleybus; + private Button buttonLeft; + private Button buttonDown; + private Button buttonRight; + private Button buttonUp; + } +} \ No newline at end of file diff --git a/ProjectTrolleybus/ProjectTrolleybus/FormTrolleybus.cs b/ProjectTrolleybus/ProjectTrolleybus/FormTrolleybus.cs new file mode 100644 index 0000000..92d3b4f --- /dev/null +++ b/ProjectTrolleybus/ProjectTrolleybus/FormTrolleybus.cs @@ -0,0 +1,67 @@ +namespace ProjectTrolleybus +{ + public partial class FormTrolleybus : Form + { + private DrawningTrolleybus? _drawningTrolleybus; + + public FormTrolleybus() + { + InitializeComponent(); + } + + private void Draw() + { + Bitmap bmp = new(pictureBoxTrolleybus.Width, pictureBoxTrolleybus.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawningTrolleybus.DrawTransport(gr); + pictureBoxTrolleybus.Image = bmp; + } + + private void ButtonCreateTrolleybus_Click(object sender, EventArgs e) + { + + Random random = new(); + _drawningTrolleybus = new DrawningTrolleybus(); + _drawningTrolleybus.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))); + _drawningTrolleybus.SetPictureSize(pictureBoxTrolleybus.Width, pictureBoxTrolleybus.Height); + _drawningTrolleybus.SetPosition(random.Next(10, 100), random.Next(10, 100), pictureBoxTrolleybus.Width, pictureBoxTrolleybus.Height); + Draw(); + } + + private void ButtonMove_Click(object sender, EventArgs e) + { + if (_drawningTrolleybus == null) + { + return; + } + + string name = ((Button)sender)?.Name ?? string.Empty; + bool result = false; + switch (name) + { + case "buttonUp": + result = _drawningTrolleybus.MoveVehicle(DirectionType.Up); + break; + case "buttonDown": + result = _drawningTrolleybus.MoveVehicle(DirectionType.Down); + break; + case "buttonLeft": + result = _drawningTrolleybus.MoveVehicle(DirectionType.Left); + break; + case "buttonRight": + result = _drawningTrolleybus.MoveVehicle(DirectionType.Right); + break; + } + + if (result) + { + Draw(); + } + } + } +} + + diff --git a/ProjectTrolleybus/ProjectTrolleybus/FormTrolleybus.resx b/ProjectTrolleybus/ProjectTrolleybus/FormTrolleybus.resx new file mode 100644 index 0000000..af32865 --- /dev/null +++ b/ProjectTrolleybus/ProjectTrolleybus/FormTrolleybus.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/ProjectTrolleybus/ProjectTrolleybus/Program.cs b/ProjectTrolleybus/ProjectTrolleybus/Program.cs index 804f2cd..8a49dfe 100644 --- a/ProjectTrolleybus/ProjectTrolleybus/Program.cs +++ b/ProjectTrolleybus/ProjectTrolleybus/Program.cs @@ -11,7 +11,7 @@ namespace ProjectTrolleybus // 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 FormTrolleybus()); } } } \ No newline at end of file diff --git a/ProjectTrolleybus/ProjectTrolleybus/ProjectTrolleybus.csproj b/ProjectTrolleybus/ProjectTrolleybus/ProjectTrolleybus.csproj index 663fdb8..af03d74 100644 --- a/ProjectTrolleybus/ProjectTrolleybus/ProjectTrolleybus.csproj +++ b/ProjectTrolleybus/ProjectTrolleybus/ProjectTrolleybus.csproj @@ -8,4 +8,19 @@ enable + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/ProjectTrolleybus/ProjectTrolleybus/Properties/Resources.Designer.cs b/ProjectTrolleybus/ProjectTrolleybus/Properties/Resources.Designer.cs new file mode 100644 index 0000000..cdfb127 --- /dev/null +++ b/ProjectTrolleybus/ProjectTrolleybus/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace ProjectTrolleybus.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("ProjectTrolleybus.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 play { + get { + object obj = ResourceManager.GetObject("play", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap play1 { + get { + object obj = ResourceManager.GetObject("play1", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap play2 { + get { + object obj = ResourceManager.GetObject("play2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap play3 { + get { + object obj = ResourceManager.GetObject("play3", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/ProjectTrolleybus/ProjectTrolleybus/Properties/Resources.resx b/ProjectTrolleybus/ProjectTrolleybus/Properties/Resources.resx new file mode 100644 index 0000000..32ab7b0 --- /dev/null +++ b/ProjectTrolleybus/ProjectTrolleybus/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\play.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\play1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\play2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\play3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/ProjectTrolleybus/ProjectTrolleybus/Resources/play.png b/ProjectTrolleybus/ProjectTrolleybus/Resources/play.png new file mode 100644 index 0000000000000000000000000000000000000000..03a59647e014ff2cce4e727ea330cbe456cbcab6 GIT binary patch literal 10977 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 EKaY9G)c^nh literal 0 HcmV?d00001 diff --git a/ProjectTrolleybus/ProjectTrolleybus/Resources/play2.png b/ProjectTrolleybus/ProjectTrolleybus/Resources/play2.png new file mode 100644 index 0000000000000000000000000000000000000000..786978ced85138d7106c4eeba52696f709def3ed GIT binary patch literal 11299 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

{9 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 literal 0 HcmV?d00001 diff --git a/ProjectTrolleybus/ProjectTrolleybus/Resources/play3.png b/ProjectTrolleybus/ProjectTrolleybus/Resources/play3.png new file mode 100644 index 0000000000000000000000000000000000000000..fa1ab9b1fcbb160178702c26c9cf82b436461284 GIT binary patch literal 12691 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 IpS Date: Mon, 19 Feb 2024 10:02:02 +0400 Subject: [PATCH 3/3] =?UTF-8?q?=D0=94=D0=BE=D0=BF=20=D0=B7=D0=B0=D0=B4?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=201?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProjectTrolleybus/DrawningTrolleybus.cs | 7 +++---- .../ProjectTrolleybus/FormTrolleybus.cs | 13 +++++++++++-- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/ProjectTrolleybus/ProjectTrolleybus/DrawningTrolleybus.cs b/ProjectTrolleybus/ProjectTrolleybus/DrawningTrolleybus.cs index 0a7254b..adf1948 100644 --- a/ProjectTrolleybus/ProjectTrolleybus/DrawningTrolleybus.cs +++ b/ProjectTrolleybus/ProjectTrolleybus/DrawningTrolleybus.cs @@ -49,10 +49,10 @@ public class DrawningTrolleybus /// /// /// - public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool batteryCompartment, bool horns) + /// + public void Init(EntityTrolleybus _Tr) { - EntityTrolleybus = new EntityTrolleybus(); - EntityTrolleybus.Init(speed, weight, bodyColor, additionalColor, batteryCompartment, horns); + EntityTrolleybus = _Tr; _pictureHeight = null; _pictureWidth = null; _startPosX = null; @@ -67,7 +67,6 @@ public class DrawningTrolleybus /// true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах public bool SetPictureSize(int width, int height) { - //TODO проверка, что объект "влезает" в размеры поля //если влезает, сохраняем границы и корректируем позицию объекта, если она уже была установлена if (_drawningVehicleWidth > width || _drawningVehicleHeight > height) { diff --git a/ProjectTrolleybus/ProjectTrolleybus/FormTrolleybus.cs b/ProjectTrolleybus/ProjectTrolleybus/FormTrolleybus.cs index 92d3b4f..713edcd 100644 --- a/ProjectTrolleybus/ProjectTrolleybus/FormTrolleybus.cs +++ b/ProjectTrolleybus/ProjectTrolleybus/FormTrolleybus.cs @@ -4,6 +4,8 @@ { private DrawningTrolleybus? _drawningTrolleybus; + EntityTrolleybus? _Trolleybus; + public FormTrolleybus() { InitializeComponent(); @@ -21,14 +23,21 @@ { Random random = new(); - _drawningTrolleybus = new DrawningTrolleybus(); - _drawningTrolleybus.Init(random.Next(100, 300), random.Next(1000, 3000), + _Trolleybus = new EntityTrolleybus(); + _Trolleybus.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))); + _drawningTrolleybus = new DrawningTrolleybus(); + _drawningTrolleybus.Init(_Trolleybus); + //_drawningTrolleybus.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))); _drawningTrolleybus.SetPictureSize(pictureBoxTrolleybus.Width, pictureBoxTrolleybus.Height); _drawningTrolleybus.SetPosition(random.Next(10, 100), random.Next(10, 100), pictureBoxTrolleybus.Width, pictureBoxTrolleybus.Height); Draw(); + } private void ButtonMove_Click(object sender, EventArgs e) -- 2.25.1