From 33237604b611a5cd15d9afe7008a32dfe6f9558f Mon Sep 17 00:00:00 2001 From: augeliua Date: Mon, 10 Feb 2025 01:36:41 +0400 Subject: [PATCH] =?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 --- Project_OOP/Project_OOP/DirectionType.cs | 31 +++ .../Project_OOP/DrawingLiftingCrane.cs | 208 ++++++++++++++++++ Project_OOP/Project_OOP/EntityLiftingCrane.cs | 73 ++++++ Project_OOP/Project_OOP/Form1.Designer.cs | 39 ---- Project_OOP/Project_OOP/Form1.cs | 10 - .../Project_OOP/FormLiftingCrane.Designer.cs | 134 +++++++++++ Project_OOP/Project_OOP/FormLiftingCrane.cs | 78 +++++++ .../{Form1.resx => FormLiftingCrane.resx} | 54 ++--- Project_OOP/Project_OOP/Program.cs | 2 +- Project_OOP/Project_OOP/Project_OOP.csproj | 15 ++ .../Properties/Resources.Designer.cs | 103 +++++++++ .../Project_OOP/Properties/Resources.resx | 133 +++++++++++ .../Project_OOP/Resources/Вверх.jpg | Bin 0 -> 9933 bytes .../Project_OOP/Resources/Влево.jpg | Bin 0 -> 9701 bytes .../Project_OOP/Resources/Вниз.jpg | Bin 0 -> 9791 bytes .../Project_OOP/Resources/Вправо.jpg | Bin 0 -> 9665 bytes 16 files changed, 803 insertions(+), 77 deletions(-) create mode 100644 Project_OOP/Project_OOP/DirectionType.cs create mode 100644 Project_OOP/Project_OOP/DrawingLiftingCrane.cs create mode 100644 Project_OOP/Project_OOP/EntityLiftingCrane.cs delete mode 100644 Project_OOP/Project_OOP/Form1.Designer.cs delete mode 100644 Project_OOP/Project_OOP/Form1.cs create mode 100644 Project_OOP/Project_OOP/FormLiftingCrane.Designer.cs create mode 100644 Project_OOP/Project_OOP/FormLiftingCrane.cs rename Project_OOP/Project_OOP/{Form1.resx => FormLiftingCrane.resx} (92%) create mode 100644 Project_OOP/Project_OOP/Properties/Resources.Designer.cs create mode 100644 Project_OOP/Project_OOP/Properties/Resources.resx create mode 100644 Project_OOP/Project_OOP/Resources/Вверх.jpg create mode 100644 Project_OOP/Project_OOP/Resources/Влево.jpg create mode 100644 Project_OOP/Project_OOP/Resources/Вниз.jpg create mode 100644 Project_OOP/Project_OOP/Resources/Вправо.jpg diff --git a/Project_OOP/Project_OOP/DirectionType.cs b/Project_OOP/Project_OOP/DirectionType.cs new file mode 100644 index 0000000..976c538 --- /dev/null +++ b/Project_OOP/Project_OOP/DirectionType.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project_OOP; + +/// +/// Направление перемещения +/// + +public enum DirectionType +{ + /// + /// Вверх + /// + Up = 1, + /// + /// Вниз + /// + Down = 2, + /// + /// Влево + /// + Left = 3, + /// + /// Вправо + /// + Right = 4 +} diff --git a/Project_OOP/Project_OOP/DrawingLiftingCrane.cs b/Project_OOP/Project_OOP/DrawingLiftingCrane.cs new file mode 100644 index 0000000..e3cb616 --- /dev/null +++ b/Project_OOP/Project_OOP/DrawingLiftingCrane.cs @@ -0,0 +1,208 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project_OOP; +/// +/// Класс, отвечающий за прорисовку и перемещение объекта-сущности +/// +public class DrawingLiftingCrane +{ + /// + /// Класс-сущность + /// + public EntityLiftingCrane? EntityLiftingCrane { get; private set; } + /// + /// Ширина окна + /// + private int? _pictureWidth; + /// + /// Высота окна + /// + private int? _pictureHeight; + /// + /// Левая координата прорисовки автомобиля + /// + private int? _startPosX; + /// + /// Верхняя кооридната прорисовки автомобиля + /// + private int? _startPosY; + + /// + /// Ширина прорисовки автомобиля + /// + private readonly int _drawningCarWidth = 250; + /// + /// Высота прорисовки автомобиля + /// + private readonly int _drawningCarHeight = 240; + + /// + /// Инициализация полей объекта-класса спортивного автомобиля + /// + /// Скорость + /// Вес автомобиля + /// Основной цвет + /// Дополнительный цвет + /// Кран + /// Простивовес + /// Наличие дороги + public void Init(int speed, double weight, Color bodyColor, Color + additionalColor, bool crane, bool counterWeight, bool line) + { + EntityLiftingCrane = new EntityLiftingCrane(); + EntityLiftingCrane.Init(speed, weight, bodyColor, additionalColor, + crane, counterWeight, line); + _pictureWidth = null; + _pictureHeight = null; + _startPosX = null; + _startPosY = null; + } + /// + /// Установка границ поля + /// + /// Ширина поля + /// Высота поля + /// true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах + public bool SetPictureSize(int width, int height) + { + // TODO проверка, что объект "влезает" в размеры поля + // если влезает, сохраняем границы и корректируем позицию объекта, если она была уже установлена + _pictureWidth = width; + _pictureHeight = height; + return true; + } + /// + /// Установка позиции + /// + /// Координата X + /// Координата Y + public void SetPosition(int x, int y) + { + if (!_pictureHeight.HasValue || !_pictureWidth.HasValue) + { + return; + } + // TODO если при установке объекта в эти координаты, он будет "выходить" за границы формы + // то надо изменить координаты, чтобы он оставался в этих границах + _startPosX = x; + _startPosY = y; + } + /// + /// Изменение направления перемещения + /// + /// Направление + /// true - перемещене выполнено, false - перемещение невозможно + public bool MoveTransport(DirectionType direction) + { + if (EntityLiftingCrane == null || !_startPosX.HasValue || + !_startPosY.HasValue) + { + return false; + } + switch (direction) + { + //влево + case DirectionType.Left: + if (_startPosX.Value - EntityLiftingCrane.Step > 0) + { + _startPosX -= (int)EntityLiftingCrane.Step; + } + return true; + //вверх + case DirectionType.Up: + if (_startPosY.Value - EntityLiftingCrane.Step > 0) + { + _startPosY -= (int)EntityLiftingCrane.Step; + } + return true; + // вправо + case DirectionType.Right: + if (_startPosX.Value + EntityLiftingCrane.Step > 0) + { + _startPosX += (int)EntityLiftingCrane.Step; + } + return true; + //вниз + case DirectionType.Down: + if (_startPosY.Value + EntityLiftingCrane.Step > 0) + { + _startPosY += (int)EntityLiftingCrane.Step; + } + return true; + default: + return false; + } + } + /// + /// Прорисовка объекта + /// + /// + public void DrawTransport(Graphics g) + { + if (EntityLiftingCrane == null || !_startPosX.HasValue || + !_startPosY.HasValue) + { + return; + } + Pen pen = new(Color.Black); + Brush additionalBrush = new SolidBrush(EntityLiftingCrane.AdditionalColor); + + // + if (EntityLiftingCrane.Crane) + { + g.DrawRectangle(pen, _startPosX.Value, _startPosY.Value, 150, 10); + g.DrawRectangle(pen, _startPosX.Value + 130, _startPosY.Value + 10, 20, 110); + + g.FillRectangle(additionalBrush, _startPosX.Value, _startPosY.Value, 150, 10); + g.FillRectangle(additionalBrush, _startPosX.Value + 130, _startPosY.Value + 10, 20, 110); + } + + if (EntityLiftingCrane.CounterWeight) + { + g.DrawRectangle(pen, _startPosX.Value + 140, _startPosY.Value + 60, 60, 60); + + g.FillRectangle(additionalBrush, _startPosX.Value + 140, _startPosY.Value + 60, 60, 60); + } + + // Передние фары + Brush brYellow = new SolidBrush(Color.Yellow); + g.DrawRectangle(pen, _startPosX.Value + 30, _startPosY.Value + 150, 10, 20); + g.FillRectangle(brYellow, _startPosX.Value + 30, _startPosY.Value + 150, 10, 20); + + // Задние фары + Brush brRed = new SolidBrush(Color.Red); + g.DrawRectangle(pen, _startPosX.Value + 240, _startPosY.Value + 150, 10, 20); + g.FillRectangle(brRed, _startPosX.Value + 240, _startPosY.Value + 150, 10, 20); + + // Границы кабины + Brush br = new SolidBrush(EntityLiftingCrane.BodyColor); + g.DrawRectangle(pen, _startPosX.Value + 60, _startPosY.Value + 40, 60, 80); + g.FillRectangle(br, _startPosX.Value + 60, _startPosY.Value + 40, 60, 80); + + // Корпус + g.DrawRectangle(pen, _startPosX.Value + 40, _startPosY.Value + 120, 200, 60); + g.FillRectangle(br, _startPosX.Value + 40, _startPosY.Value + 120, 200, 60); + + // Гусеницы + Brush brBlack = new SolidBrush(Color.Black); + g.DrawRectangle(pen, _startPosX.Value + 10, _startPosY.Value + 180, 240, 60); + g.FillRectangle(brBlack, _startPosX.Value + 10, _startPosY.Value + 180, 240, 60); + + // Катки + g.DrawEllipse(pen, _startPosX.Value + 20, _startPosY.Value + 180, 60, 60); + g.FillEllipse(br, _startPosX.Value + 20, _startPosY.Value + 180, 60, 60); + + g.DrawEllipse(pen, _startPosX.Value + 100, _startPosY.Value + 180, 60, 60); + g.FillEllipse(br, _startPosX.Value + 100, _startPosY.Value + 180, 60, 60); + + g.DrawEllipse(pen, _startPosX.Value + 180, _startPosY.Value + 180, 60, 60); + g.FillEllipse(br, _startPosX.Value + 180, _startPosY.Value + 180, 60, 60); + } +} + + + diff --git a/Project_OOP/Project_OOP/EntityLiftingCrane.cs b/Project_OOP/Project_OOP/EntityLiftingCrane.cs new file mode 100644 index 0000000..7dde2c8 --- /dev/null +++ b/Project_OOP/Project_OOP/EntityLiftingCrane.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Project_OOP +{ + public class EntityLiftingCrane + { + /// + /// Скорость + /// + 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 Crane { get; private set; } + + /// + /// Противовес + /// + public bool CounterWeight { get; private set; } + + /// + /// Наличие дороги + /// + public bool Line { get; private set; } + + /// + /// Шаг перемещения автомобиля + /// + public double Step => Speed * 100 / Weight; + + /// + /// Инициализация полей объекта-класса спортивного автомобиля + /// + /// Скорость + /// Вес автомобиля + /// Основной цвет + /// Дополнительный цвет + /// Кран + /// Простивовес + /// Наличие дороги + public void Init(int speed, double weight, Color bodyColor, Color + additionalColor, bool crane, bool counterWeight, bool line) + { + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + Crane = crane; + CounterWeight = counterWeight; + Line = line; + } + } +} diff --git a/Project_OOP/Project_OOP/Form1.Designer.cs b/Project_OOP/Project_OOP/Form1.Designer.cs deleted file mode 100644 index a8d3eb6..0000000 --- a/Project_OOP/Project_OOP/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace Project_OOP -{ - 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 - } -} diff --git a/Project_OOP/Project_OOP/Form1.cs b/Project_OOP/Project_OOP/Form1.cs deleted file mode 100644 index 1448ebc..0000000 --- a/Project_OOP/Project_OOP/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Project_OOP -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} diff --git a/Project_OOP/Project_OOP/FormLiftingCrane.Designer.cs b/Project_OOP/Project_OOP/FormLiftingCrane.Designer.cs new file mode 100644 index 0000000..d9bf6bc --- /dev/null +++ b/Project_OOP/Project_OOP/FormLiftingCrane.Designer.cs @@ -0,0 +1,134 @@ +namespace Project_OOP +{ + partial class FormLiftingCrane + { + /// + /// 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() + { + pictureBoxLiftingCrane = new PictureBox(); + buttonCreate = new Button(); + buttonLeft = new Button(); + buttonRight = new Button(); + buttonDown = new Button(); + buttonUp = new Button(); + ((System.ComponentModel.ISupportInitialize)pictureBoxLiftingCrane).BeginInit(); + SuspendLayout(); + // + // pictureBoxLiftingCrane + // + pictureBoxLiftingCrane.Dock = DockStyle.Fill; + pictureBoxLiftingCrane.Location = new Point(0, 0); + pictureBoxLiftingCrane.Name = "pictureBoxLiftingCrane"; + pictureBoxLiftingCrane.Size = new Size(1038, 519); + pictureBoxLiftingCrane.TabIndex = 0; + pictureBoxLiftingCrane.TabStop = false; + // + // buttonCreate + // + buttonCreate.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonCreate.Location = new Point(12, 474); + buttonCreate.Name = "buttonCreate"; + buttonCreate.Size = new Size(105, 33); + buttonCreate.TabIndex = 1; + buttonCreate.Text = "Создать"; + buttonCreate.UseVisualStyleBackColor = true; + buttonCreate.Click += ButtonCreate_Click; + // + // buttonLeft + // + buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonLeft.BackgroundImage = Properties.Resources.Влево; + buttonLeft.BackgroundImageLayout = ImageLayout.Stretch; + buttonLeft.Location = new Point(914, 476); + buttonLeft.Name = "buttonLeft"; + buttonLeft.Size = new Size(35, 35); + buttonLeft.TabIndex = 2; + buttonLeft.UseVisualStyleBackColor = true; + buttonLeft.Click += ButtonMove_Click; + // + // buttonRight + // + buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonRight.BackgroundImage = Properties.Resources.Вправо; + buttonRight.BackgroundImageLayout = ImageLayout.Stretch; + buttonRight.Location = new Point(996, 476); + buttonRight.Name = "buttonRight"; + buttonRight.Size = new Size(35, 35); + buttonRight.TabIndex = 3; + buttonRight.UseVisualStyleBackColor = true; + buttonRight.Click += ButtonMove_Click; + // + // buttonDown + // + buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonDown.BackgroundImage = Properties.Resources.Вниз; + buttonDown.BackgroundImageLayout = ImageLayout.Stretch; + buttonDown.Location = new Point(955, 476); + buttonDown.Name = "buttonDown"; + buttonDown.Size = new Size(35, 35); + buttonDown.TabIndex = 4; + buttonDown.UseVisualStyleBackColor = true; + buttonDown.Click += ButtonMove_Click; + // + // buttonUp + // + buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonUp.BackgroundImage = Properties.Resources.Вверх; + buttonUp.BackgroundImageLayout = ImageLayout.Stretch; + buttonUp.Location = new Point(955, 435); + buttonUp.Name = "buttonUp"; + buttonUp.Size = new Size(35, 35); + buttonUp.TabIndex = 5; + buttonUp.UseVisualStyleBackColor = true; + buttonUp.Click += ButtonMove_Click; + // + // FormLiftingCrane + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(1038, 519); + Controls.Add(buttonUp); + Controls.Add(buttonDown); + Controls.Add(buttonRight); + Controls.Add(buttonLeft); + Controls.Add(buttonCreate); + Controls.Add(pictureBoxLiftingCrane); + Name = "FormLiftingCrane"; + Text = "Подъемный кран"; + ((System.ComponentModel.ISupportInitialize)pictureBoxLiftingCrane).EndInit(); + ResumeLayout(false); + } + + #endregion + + private PictureBox pictureBoxLiftingCrane; + private Button buttonCreate; + private Button buttonLeft; + private Button buttonRight; + private Button buttonDown; + private Button buttonUp; + } +} \ No newline at end of file diff --git a/Project_OOP/Project_OOP/FormLiftingCrane.cs b/Project_OOP/Project_OOP/FormLiftingCrane.cs new file mode 100644 index 0000000..b387698 --- /dev/null +++ b/Project_OOP/Project_OOP/FormLiftingCrane.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Project_OOP +{ + public partial class FormLiftingCrane : Form + { + private DrawingLiftingCrane _drawingLiftingCrane; + public FormLiftingCrane() + { + InitializeComponent(); + } + + private void Draw() + { + if (_drawingLiftingCrane == null) + { + return; + } + Bitmap bmp = new(pictureBoxLiftingCrane.Width, pictureBoxLiftingCrane.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawingLiftingCrane.DrawTransport(gr); + pictureBoxLiftingCrane.Image = bmp; + } + private void ButtonCreate_Click(object sender, EventArgs e) + { + Random random = new(); + _drawingLiftingCrane = new DrawingLiftingCrane(); + _drawingLiftingCrane.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))); + _drawingLiftingCrane.SetPictureSize(pictureBoxLiftingCrane.Width, pictureBoxLiftingCrane.Height); + _drawingLiftingCrane.SetPosition(random.Next(10, 100), random.Next(10, 100)); + + Draw(); + } + + private void ButtonMove_Click(object sender, EventArgs e) + { + if (_drawingLiftingCrane == null) + { + return; + } + string name = ((Button)sender)?.Name ?? string.Empty; + bool result = false; + switch (name) + { + case "buttonUp": + result = _drawingLiftingCrane.MoveTransport(DirectionType.Up); + break; + case "buttonDown": + result = _drawingLiftingCrane.MoveTransport(DirectionType.Down); + break; + case "buttonLeft": + result = _drawingLiftingCrane.MoveTransport(DirectionType.Left); + break; + case "buttonRight": + result = _drawingLiftingCrane.MoveTransport(DirectionType.Right); + break; + } + if (result) + { + Draw(); + } + + } + } +} diff --git a/Project_OOP/Project_OOP/Form1.resx b/Project_OOP/Project_OOP/FormLiftingCrane.resx similarity index 92% rename from Project_OOP/Project_OOP/Form1.resx rename to Project_OOP/Project_OOP/FormLiftingCrane.resx index 1af7de1..8b2ff64 100644 --- a/Project_OOP/Project_OOP/Form1.resx +++ b/Project_OOP/Project_OOP/FormLiftingCrane.resx @@ -1,17 +1,17 @@  - diff --git a/Project_OOP/Project_OOP/Program.cs b/Project_OOP/Project_OOP/Program.cs index 959d705..5ec36fd 100644 --- a/Project_OOP/Project_OOP/Program.cs +++ b/Project_OOP/Project_OOP/Program.cs @@ -11,7 +11,7 @@ namespace Project_OOP // 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 FormLiftingCrane()); } } } \ No newline at end of file diff --git a/Project_OOP/Project_OOP/Project_OOP.csproj b/Project_OOP/Project_OOP/Project_OOP.csproj index 663fdb8..af03d74 100644 --- a/Project_OOP/Project_OOP/Project_OOP.csproj +++ b/Project_OOP/Project_OOP/Project_OOP.csproj @@ -8,4 +8,19 @@ enable + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/Project_OOP/Project_OOP/Properties/Resources.Designer.cs b/Project_OOP/Project_OOP/Properties/Resources.Designer.cs new file mode 100644 index 0000000..2b8f8d0 --- /dev/null +++ b/Project_OOP/Project_OOP/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace Project_OOP.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("Project_OOP.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 Вверх { + get { + object obj = ResourceManager.GetObject("Вверх", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Влево { + get { + object obj = ResourceManager.GetObject("Влево", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Вниз { + get { + object obj = ResourceManager.GetObject("Вниз", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Поиск локализованного ресурса типа System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Вправо { + get { + object obj = ResourceManager.GetObject("Вправо", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Project_OOP/Project_OOP/Properties/Resources.resx b/Project_OOP/Project_OOP/Properties/Resources.resx new file mode 100644 index 0000000..d964172 --- /dev/null +++ b/Project_OOP/Project_OOP/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\Вверх.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Влево.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Вниз.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Вправо.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Project_OOP/Project_OOP/Resources/Вверх.jpg b/Project_OOP/Project_OOP/Resources/Вверх.jpg new file mode 100644 index 0000000000000000000000000000000000000000..162691a8988103761ae1ed44a0bd6dced3a7f2b0 GIT binary patch literal 9933 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 literal 0 HcmV?d00001 diff --git a/Project_OOP/Project_OOP/Resources/Влево.jpg b/Project_OOP/Project_OOP/Resources/Влево.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8cdf19d0618b82ac2bc909442a95111433fddc10 GIT binary patch literal 9701 zcmd5>2|QHa+rMVU8W~&mWso%z%D!hAJ7br!hmd_q8C15AHA~38wa6~AOhlIK6cWi& zlw=E8-aFL)_p4v&{eS-N`+nXtckVgQ_k5q{InO!wJonC>-Iu!)09;iGsRZEQ-~cM% z2iTp2a3K{G&S~pvDIwJr!43d`&;Ve82>^hTvxl3mvOJ5Cu?Y(n`(7-p++Du6e^G-r z)`kG^3;_Lnzv%xHL}+c}ZUvGS!LNrK=o|oWtid+r`Te#Jwr#oJj=;9v^mG+KP6pWK zI{&w}<=@)g9xfgr=NXo7<>H2IzXIEmPL7^fU)X{jF|m!aJ_@Xjz%K*f4(I~PfIQg# zA1!~)=fx}l5M2cTX!Kv0WikL%T?YV~k-sqZ3;-a#1^|`aE*5SUdxL?2XNavW04(JL z0EsaGQ1k!*k?Hq={-yiZTKpzf7Ep%)jPoM+IS)7jHUJBN1e^gYfFEoL0s_DZ;MDFY zpa8(2Q0xJN!f;_QTs$ItJg|@u5)lxQlEC4lB&3JQC}=3j$f?N>lTtBIQPa}W)6>H# z8JQXBm}%(f>99s{V7Rz=xOl|)_{4N%q-1pecG-ObkP$!#AmdORRsceV10}=RZ3Y9t z0ifV@jlF`u6&yT#0$dmr0`^k=4gS`6lVZI@`5$A`ESGUaTwLgVesDqpDpmMXDJ^GpC@m>%9r2nH;Qe3H&^0R*pAK>>v2w#zJt<1fQ<2 z_C>n7+@`@x-(4gcAY3R{*|G z5V%yIw`1Cp@AzBHiq+pqIzZ+75`am8oNKFYRNCT+(*+Ke-)sD}!T^94o$0{G-;&Dg zcq;o_jqhRX5tQ534%@ZVe&QB0oAWi_*MW{oD)pVP{SS|R-0X|p9xVGN0W#K#j_t5@ z2KboE^3p!`$3&#$lq=UHE#vA=mbRxs-Ojl9fjjJ*#a~s-iE{#yq;>Cvw?+O`P`;7C09ZhId?Ce$S=J?~VK#ro|d;BB%5)HRI1F?DRPkCm~H>;Au z^RY1l(L#^hfd7^P5XQ_Y=@HLxXk!&E#H8`(P_S+wylXUK(DnJw=0Wy7xBun|yjgL> z0URg{2L^#ap!?b|C@vlVp*F|C7Z5(hA`2%YccDU@0PkP~;C&4T7qSylufn-;#X2^I zjFxf`HOKhjQqw@F(&_YbH~dU8>)Y<4+ha8P4~HUj6Sfqt#OVu9(YMB^8+xucU5V54 zj|*?Ly4$A3e%YeFt1u92_N*5<* z)QYx~E|%K2b2}KQv1>oamr2jxOE>pN>4UR)#zz`gvhY4WyfhsYm{PYeGVuX zw$Vh`KbE?+QZ-=ZQc>8?9%jsL(#AT3JW{Gs5vzDFmd`ro0{e~sbubTqYP@$db$PRp zcoI`+6OYiK$lJm1mumFtof3jDuK3?xXGZSm@*aH|AwsB*kFbhOUAHxpTu=p*#$+!7Uyol#2cM?Lg@9%nyH*Pf`uUlyhPgNzXI)iFqa?bKVQR2P4Vo+HT`64w8L1#~`Q3x?gy3h0JGA8*NTcoMMOcD+FBGE6Eu>Kyt z>*1{-Cn!-*bdUmr5*c>5^(>>pGtt=V4mOBgfQoA21xHqj3N{LFQfJyuU*gljS0q5g z-sv)zRWgQ(RdX*9*1&g%?1P8ymmMSsgg+)vM2P>I2?{QR|{wuxNxzq=YzASmHS=#G^1B@ zEwct9;w6s;BfIYXAAni+cm*O?$C9u4%54gw7huE5KjiObG4+mF5LKc*|za3iBOGv@dVYIy*BDCoraU=p32vq?JpCx=4E`F z)#njurD^~p!3z#YtBBkk@v?BOVGp^}nSYskBUb`p(@GUzs4O#&x9X?a!Mza`e4Fk$ zcc_t3NOSFubP|?tNTqx~R(YfkJ)YoMMjau^MaR9F@w(W4SWwReM=i1^pVl~j7f2Y$ zt;wn=c*DN!a?!B-LyZ50Iun_;nj0DxH%S-qd5S-nV^zreeV7w>flfyHcXcP9R5&bA zdue0omu^i4!BgkN3w3HJC-VjGEZ5G2={(6UF1vcEF5l`#83SfL$DU`7TW8Ml%~uoV zPZfK(UbDI}g{aOIaM+1w49Z63z^F?cyyW{v?c4RTRU><0=mygtn-FpSNgDU@b=pw6>&b|nUd+^4|F7vlwS;vR>zi?Ysz^VrN5@K^z+dV`}oFy zv+DZ)YZ3LJv@eC^F7<-c3qF1kh3L1B;@5JsBR6B%@#0x1`qF4zU#clPhK^Ga{2|$XZK|OHGNcJSIW9LUF2*Jw-dJ=pBE% z`%m<;LqS19VG^ z`f3ROpr&NTHFgX38Onk&VpaOivqR4Jc-p;Afu6n6tSh!#<)BDCg^;2M(vfy|G+OE= z)>6vL02J%FJJ%`mr>pbN7`S=KW9dAXRGT#N#q@bZ6s?4qPq;TXgm;u;$Mdl1sL?{& zkzjYDKEv>y9(!>%>lrYFp@K1Th3*+tI_2fQwCD=a$+ALa8*FTS`7@$)_Tta^LPf2b zC(XX{fm2f-aY)KBR(dGp>(YZt%f*{Sc-9{tcN@8FtJWaWAFdAx7D6|OP&c{mJG3KT zlu>|Q-|0m~J+(9_UpM@$YHMnfPm#uHgLT^<#>ec^<6_Uz;Ncn5b)$_|X4xhW#0T>3 z$huY#<8qquYbgZ1H6G{=HJdf|(#3{Gbm6f=`MIzVl znmA`Qygkjy7GT?8jkRN~Jwb%*BH_`JC!NWYnVk$bIH4yxGQ z&r}6-2Cbdo5)71`$e1HdzgtkpOdN_%FCQ=I2f3Av?z%ZEq9l*f)Ez{0Z~Nj_QKa$E zD(x-Wo9mdtXLS5IHak0>gPlr%hk>wui94uNT^QyRVq)NtV!9~s?8ZHxm=Y9-J}S~u zG`Cd_qm69{M+usuoH@l+UWS1YjGeH~rs~aj*Oh`nh<;?mSF(Dz4DxFV3klRB?;=#M z^J|?BTBaQs4`Y@f!Cs#=Ir11L+lHs!eMz^5?VIPM1`8s&xlEJ8%k&?JP?@}S{r_8` zK0b4;QoGSYllHbK={56HD{;F*tNYd!$7-&(X$+y$g^cn3d9uog%=M_unNlh@BAbIqMvVQA(1EsVu6?3b;XYkzGbhCN#gLqEvRJ^>Q_>w4R)=`%VbQ zFkFqH5ute`qk8bIhg<_CdF5$M%ye>(18PScCV`JYggh^0RY?+gk|n6erhv&g9N<@Z z8t0)V@)!n}=oRs)&MuoQKQ6{LiBVQa1{`?a!=vZaj3C}t^RtsXbDjXwbz1{fG~hvG z%8C=pFoaXcy)-%SCci^TvA`;p9|@WgKKZmqD(mT?8^MGFqw+8c7FmAvB9|L%d5z{o z#HOs!gp2?PkMjzJKBhqUHkwjZ-`eUa)KdKPdd zpD*~CTq|aV$%7`vJN?$Pt3DhuGvcs!UDN_DQc1f2<+2YakcjxSixC?z}Do0EOsu}_;Tw|N9trvxEWC%$8KwCEhxy z_627Y!c)&Afo!u8v%0-w8Xtjy5RsoyzwoaD|#)ts4~Mw;v0!&Ejjfcx0};(?lfpF=Q7Iy5Sbh?2|z` zLP?tz$>e<+ZY4hI(MC${0$7@}yGiSPag<>hIKLjqI1&9Of-tY65aTJzpN~5*QIkrI z3Yv2<(>(OQ2OU`?>mhy)mxLCw>s^UNas!GV9(f)A*Uk7yR1ne-uFm4K4mPAeeX%l|DX2$y+ zP)A0Mz)X5*HUpz-<#afu^)0zfWf)lpOG%FhUk5P(0y8LS=u2u5<`~L79B^wom>zj` zJt|WPmYd4Aim5sV*?ze2K0kN`op*jSl-0fJ7?k`NymhU6GqZk;t**+vO~pl!9Z`GbFNr0{WTU~9xA$iPfPG;D{-5w;3HVX`r=$tb_$T;x z1OfyQ{ayZNn`Qz4GX4qwg}|`A2O4n?z_K&2r(YMcmOcCcBkC;sni>1mKhF??Z`dJX zfuFe1-hfzlB(MN%^=}r^1KzP<-@?HE_!efLaSRS_4O}Sr zl=tH!o{qUiV5WeqYs?}`N$(pt=CiiTzn=2o;4}8^6WoTahUmd|Amd}1|UA5(?* z3w)-0F?kO|T`+)lq&F+0@jv6s9Mwl^CTzr%{_&#L6tW`n46DN=9uu-ZZfh5?=H_1I z7k&GV+)1hPuxP0(E((Xh*!`qd3{S9oF**lXKBO3CK+bf$#$l4di0xd^XqtZsN1p?2 zVxXr-SR;9E*r(&Vi@N|qa82K^k=zNd(>jLx==!4}M$HeQpWbJWy&*j1XX_HsQ2S#b4&_$_D&)RcE4{UE9~sZ>A&zTA`8v1CkMGz7 zUyynIk}=a<(a&cW@OVMsI?Yk8RbTWmX4{f|kVjg*tJ_2Rc>1zl<;#yr@oiO=@(U?q zLd0a#ygoDrxu-zT`m-Ld-z<+TPjqhUm~+%C()UR>Rs-AxNE|NI=W&lASqu_Jttu@z zRcTGtqbeVkP#2jqr6O;;pg-&ar>lBxPiA9ky$21dN39;FJ3BeBo(WUxO|h-Hw+nbH z5qAV-p3$h3uoYM0kUckWA+(6;sN%}okI|!6CHAa&N5zU`DY`^c@I-t22>B{S&*{OM zXPA*mI!j-U8a<($dL0vfy|UG@Q7s`fQUbRy)I7>y-ejpJuH_XIQdE~S(8aEh%J!oL zH{Z^TxoRxZwX#)^I+W<}j0%}+#*J4HP` zf^&Q-m~x`u4Bh=jAw$L3-l=5d2pmsZuJ!d<`up>E$0!sfb9+&$m4<2K%S#={N)JA= zW!b;5NrX+mylq%eF~2mebh0PZ&p+?Y(gTu+;gA9<;+&Z9(7E911>b?e>rb97$%l5g zRi9F@B`o7mQ8oHBvL<)Yx6+9ubGA+Nl$tFWN$Pm*>!u{G1QSQnd`_m*6T|M2SDs{v z!S6eT(>=gX)MIBOlX7ipb#ZLzRC|w@&HhA}~IO``=eE{(|_F4}TbOV@*?Q*APUsS=mMp8aCr9Ku~- z({4aIbF2DP6BR_nV`Zi6hlS=8)-LLxy9XXI-K~<}wpeaYTkP#E}ppL`o>LWEMrH zl9HQ35>bYdir=Bcd+WXTb3gC<$M5(1+~@4G)^~rOXYIB2+H0?8?PskHu8sh-uBMJA zfIuKXoALvzFQ9@tYHBvdrbe1N`Wh4k08myy5x6)2?jC+Vrdq0a%e_|kHEu)f?0vm9 z@K18eHQo;ZN(w-~=uh;2MbS7o`r1>B-ctU4K9tG>>cLvzy$(Q~)YZ0l@lXljF?-fH53^if%7EAG`I&z$q!z$q9hD zd;l2s0>IP*0Il^#LpRHAK8t^IuXsus9OXVeDL-f61{?t%=l~C355y=)5{Lr{@ayUj zPy=unZ0&%<;0QPzK}CzCq6h;GEj2A80~*c9z=*;yu`*+@+p#FdZMbdQ+1NNZIMB?T z+??#(tn3`@YZrmQ5eO;-6+IG3&yHclu>WmYZ2}l-=rbra48jAT7zhjlS#6=*00cl` zYXkecAgLh;DmV;E(K2u4zZ$GQ0rW6R88i${dGr?>)>#yoeb{0-?#&{%Pb1C(V}I^1 zPmU$-`CcIfK+zYTLn}$&DR@7f0bla>(|;`f>5u;p zwChIgu*ew%{^Pw8iCZph?{YZWVm#Tu!EUj#&9?(K{Cul!!)&fq!~fbBz^JHRb^N*Z z(0=315}Qa~l&@Akwg3Q(0su)K5IWCs#I4HI!#rPG3+6Dx!5S>4_1(}fhWGDlfO$~k+r=x@|A*o`fM;3CP3O^ zK!LFNiNO6uboGy!M%56-F#~T8#gPeNXZd> zxwcGzJe>bP{i($BR?C(VUm2cz*dOHjs%0+K`6*uiXxjzye2Yd}jdZ zCsqI|mZSmuY;ZOO+U&*B{^@5X6i+UySe<@Fw=(#!?vbIapW6Vrxb&?WWr`OQrg$of z_XJP~;+vbJIASUQMG}o6+qO&p!YqzQW3WsFTZ(U^rg%IE0=fzk{dV0aA$e2dbfj>J zPIA1RJ~}C5WQh)b`$YXa{|W6TAAUgQU7d&0> zsxqgj z{~WSinc&^EeA~Ld$!$onww9y+^Jf8+iGy!eXGDNxT(V?iAFryR(9$)&@DlZR7_->% zW|WIxq}cI?v$PH3R-5#v=scaQa(wVKN& zr_-A3Dhg!%aPYF$4h^ZTNwdz-|YB)0R6RJg3j z4;KV6eN#~{E^)Ud@=J#1I*<~g2CLCy`|#pY=eM(VdAd7Zd&baB<`+FX{4wmw;r!X0 z#=0_&mdXTmYhy9sNGw-U-^NooY0t~qoGeBt?J-ePCwNQ}&$%Vd9l{Md>G_U?`7C?b zrN$0-c0HJLRk)tZV1gRyHAPq{>1V0y4HsU9Uei%0bwr925VB3b_Kc|!f@VEE;fww6 zAAvTHRiGU(n>@SF9o*yTNwv_wG#M;tisCp&>nHW$icr{2E<-%6odRtiQBNJk#2R{` zns*>Dt$>{e(|BvBHv4eJjsW@(9-lEYR_*N9xe^Uv=V@)LoEmI2Fz7Ee-jJlO+`N;C zdZ_0b3|^rpUodk$GEhEY#qcKmGT+Sb$E+u%7wYl))*ZFwX*b=o?^hj1JBYD}Oo|&N z@73PMx)`l`GDAEn4l9H^oJzZ=35t;Av6LLDb#*&7Ui+o*%XIQ=H#gyWnn6x^U70sEx~8M}LA%FiqEGSV*>}sS zMZ<#w7hhTh^08>CQWZpoNc&|c8)0~{-ur5rEO)}=6Sm1dd%@~UyTgvkTvG1*nPdJ! z#UG1DS}EN|6x3tIVR6oJftHn47JGI8!XvPwH(-y5yAyEhDDU6BY?4t?{-g ztp?H;p74;nQ#1taj8-DomhG4=%lY-$Fl&8kqpb6lA&Srb!~*)=LIDjRFn~bPBH)zo zgSCr5pfEU)CK~%OD$9Wn>H+9cgJN?(yy)XC0MW}Mz zzq{>x+vus&0oHl8-ut{t4X6CBp?1cx2n~Cj3vKmoYTaGbS0Z~|)-wM{&2PwUcj%aB zDs>xPR6ReKF)(R~v%ra%)eP^1o&M(%|4Cnzk~?OrIxjD4cOLKvcyUUYGI3=s7Ul&T z)wtS_XVNUjK3zWdQEBpT5DT70)qwln-?)#LW;KnKG_*LPe-ZpU=L z?6@~yy1*Kt&2G0S^+ zh*?d9mrzC@4ecCr6}sEZwHbZ;&7?L$-tiYs&_gsdbk90zU%PM%*)smd1V>RHz%g7FQ zk;L`Au9q)*#v=PB=8IBxVJa%jE6y|}vpnPmBk7SBmsvz+kk>}XxqhwKA;Oxown zQl^{_{PhJ&PB2e9v+3uUnwd>MFF4bf9&3UibujkywFg;=CJgD{i1@Unq*Vku*&IXSk zu9bUW{$4AtseCUiNR7I0uAW&g}!J4N16_VC!)WF58oR!W#;4pY0o=xt)tPez8 z%UQSfsZFYdw=NND-FLUXP^i+>xD0n1+0@+4mtU?R4SUc3Rw183QF>)rD{9_SZlUbG zQ#_Ho&LU33mFgl^cG~j<7kT_+yImc_hpKvEmmv{>Un<(v&vdl+X{p#ReeP|)5uE#h zTl~>H`X0?rZ)YCjrM;X2=lYIVJq&V|MDBLhbGEsBN|=p$mRrOpre$#^u7JB-e%Ai( z+5VhWP^0zf_;p_)#RPIik$LYiAr#0haKQI`7T34%D=VHFli3#fEbq`<{(g>FHo2k- zNxJ9lH;^HH#lq#i?S165QD?#z9W~o4hvWd4G{lz8(DjJT!^L-_0u_?dLH$=3QRXRe z313LZ6)m2R3%b1Cr|89fsC*^nL!`a))FQVi)Kn5O94wmO$MU32gLkRdAfTj3bf@Ji zh`7|Y{Ajdb?S)32R5+3mFgNInw>frruJBCE9Ce^@*N%Dp4|m*-O)bRlT7u!SrUD(L zB^kRvZvXmy1A$N>;1u`%&F@1nfFPk__tx0N*1M4yTG}g~ko_Ew-uS*zCiH21P7ggB z8Z^>OFaG1vdtXS`OJFAS_Dn47#4tP6ry6O74}LBjGp~ANhI_L-YjcRt0yO`(sdo+c z_7>kX&${(&asOb?AgPA%xP0Q?f#ZLklorW{_8ePmrqPuo*k%_iSUOTZ~CAVLo}0A$`^m>=%z!>r?3ur zD7((Ii;Ils=r!nc_PSfr;G(kIz;IYn0+|a=6f*VUt_LwfLRcx8&Va5ce71LM%bN*m z>Ja9o1bX>bza#H2l@LHfYTg@z!5}1{24hPxZf`HqiLqbon!$T(Om9y$6iv~UKZb27 zH0ltp82Byb#MSp&SSAbsu$4(9EIp0&|9C0mj`HscV!YHl;ZHUAEZY5OU+rr?(|F!H z8IS6M_}ukXx`%2wl?4$a>FH*iuP}yRVG{gw9p|MpU1&(uI6DV!dyjfVb6*{wOJjR4 zd2ki@79?BR!mAX?cj$WB3@0yMPtYXXqOXqbcN0%c7GxR>&ZsfQ8=u6t?HmxCd6TkY zr~5kGJ5bU#3Ri_n(TavnBt;d76t)7?Syq(^1dBtNP#k;(3M)_v=R0va@*YP!Q~@Kx zU02?cIdLcW3h_NU?=U-p|K=MM>EKLXTd_ybZZ=r^;~ayu_IwZ z@`@~0irJ|Z+QyZ4D=hIy_~22XK;}mY;^WI06hfxNA)U3J;XduzDdB!fU8+ z7()h>cljzcE2wga`SxY}`ifR6t3R?K)A=@!KOO>SkuvoOu^<@ScGTQ9FH416_(X^n z@fSpT%Lk=yyb7|MjmLQ%8dC8(xO~F$d@MZv4UYusWBe2ZPoUnl3d9fTx(EzIH011~ zN5+`-tGRct0uuQle1-J#LdjV;35rMGVSLcc3?Z`=-mZ&yf&8>e`N%mp4pA>)BY@-m zXO0Jg2Qt3HY+SzC2b0~xa`6{?-|PqZunr+CzgoXZ2xUH9-wOdS%I6U!$h0QkvNiZG zkv<4WZ3HgGox{JMTKfs(#q)eZ3Ve6!9?w657|wiU1M z9(*keXusua8F32+XwvsH)OWNFHrfZE|H^}ndxYTspdb?03CIs!2NzsdY>Du1lw2QF z%%qLe&3yeu{s|AzXaN5iPuX_{w&172jQ%N2iL`I!8UG}bvli$_U9XB$ggJ?LD-`Wyhg3iUrMHS$yP>PLNKID01f-N@_(QWW+>cI-$&&9{ZcVCv#RC7q3w?C<-bB^fHOAL*| zBa|32w1vGyR3EF85o7++2QFqY2kk2%T45f}bui6&!0{y~cKTzqdUUQ9@JK}RMdgV@ zd~$3KT{J3Be@mTWcfW(&r&d}DWso>JQEna8+F5%JhnEnD?A7=<#8OMjJX*8l$D|@` z%tjKCHI0B6pfC9e`M8fAKFw$?qnuK>WZ5Ohd z56|Sio8MQXzq)61_uk|2zO9t|cr}`Js3_5UM6FyQ)w~*PMTT#(I6-xIsfc(1EC$9u zXDwSWmf0}Qz4y11I?lrpjB$CpMZcW7OJ<1DRp*(9T+zW!N7?BwlpauP9oGJf#?6uz`V-0~T1!;<)Vg3$#;vpY40LM21T3 zon3+^=J1ostkOrb8*N`mbx#w4otW!=PC+Rw%g$Q+624dU{?vq_{A_M{F=ImKHU7OZ zI#(tHCWA+1DZy?T9?j+KP=&7N?6#c7_d>5Vm)!|aKvqtq*?q~{chbm<0|&=q462g{ zWucgU6hCpdVkelGjZw9g?8S>h*?^!p71KEl30@;n9|>i*r~4*SqAV8V8s>cYJExmI zWsRsR;d-b8ji2sd7u0q%Hi3C~Q(ATtY!^->sk{)bccOv7L{ykE1H5kRVDj}~RX>KV zl9cq-FFA1n@U@!TA!z+{Lb%1X>{O5))MJ6jUT%lu8- z?&y1q0)m~I)^BCpVVHp(5s(Pha{ZJ*Ea@P_!_jMnHaYek2gc`wOC?>H^aM2%85y8q zC|rL>)y2w$k~F+=yo6Xf38ey!2)ZO`)DcCe_W?oJPOi4VW8$j`Q_L-DiOyB{PG+w$ z%cOq4K{0XHlZ_D8%-dS35p2@u&7^#zRrgDt@8V%r6;M>@`C=9Y#hV+FjEkAd3AbXs z^&gFsC4Wa=z4kRW(BAJ&7$o}ZdJ*dULE-^zkJH>vQjAQ4;g zdTvV-O}Mc<+%n6(q)n81WVUb_lNQh=5`>?zj|!KkPhj1BK|IpxJdtxWc)QMUk8&0= Pn~&jsz(~l!)yMw>>h8{x literal 0 HcmV?d00001 diff --git a/Project_OOP/Project_OOP/Resources/Вправо.jpg b/Project_OOP/Project_OOP/Resources/Вправо.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b5239b688b3c5326cdb896a4b6c9452ce4ae8598 GIT binary patch literal 9665 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 CowvLI literal 0 HcmV?d00001 -- 2.25.1