From bd9378b2350e24227720136f68e2f27b5b7f169d Mon Sep 17 00:00:00 2001 From: ilyaryabovv Date: Sun, 4 Feb 2024 19:31:37 +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 --- .../ProjectStormtrooper/DirectionType.cs | 24 ++ .../DrawingStormtrooper.cs | 210 ++++++++++++++++++ .../ProjectStormtrooper/EntityStormtrooper.cs | 75 +++++++ .../ProjectStormtrooper/Form1.Designer.cs | 39 ---- .../ProjectStormtrooper/Form1.cs | 10 - .../FormStormtrooper.Designer.cs | 135 +++++++++++ .../ProjectStormtrooper/FormStormtrooper.cs | 106 +++++++++ .../{Form1.resx => FormStormtrooper.resx} | 50 ++--- .../ProjectStormtrooper/Program.cs | 2 +- .../ProjectStormtrooper.csproj | 15 ++ .../Properties/Resources.Designer.cs | 103 +++++++++ .../Properties/Resources.resx | 133 +++++++++++ .../Resources/arrowDown.png | Bin 0 -> 2250 bytes .../Resources/arrowLeft.png | Bin 0 -> 2211 bytes .../Resources/arrowRight.png | Bin 0 -> 2165 bytes .../ProjectStormtrooper/Resources/arrowUp.png | Bin 0 -> 2099 bytes 16 files changed, 827 insertions(+), 75 deletions(-) create mode 100644 ProjectStormtrooper/ProjectStormtrooper/DirectionType.cs create mode 100644 ProjectStormtrooper/ProjectStormtrooper/DrawingStormtrooper.cs create mode 100644 ProjectStormtrooper/ProjectStormtrooper/EntityStormtrooper.cs delete mode 100644 ProjectStormtrooper/ProjectStormtrooper/Form1.Designer.cs delete mode 100644 ProjectStormtrooper/ProjectStormtrooper/Form1.cs create mode 100644 ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.Designer.cs create mode 100644 ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.cs rename ProjectStormtrooper/ProjectStormtrooper/{Form1.resx => FormStormtrooper.resx} (93%) create mode 100644 ProjectStormtrooper/ProjectStormtrooper/Properties/Resources.Designer.cs create mode 100644 ProjectStormtrooper/ProjectStormtrooper/Properties/Resources.resx create mode 100644 ProjectStormtrooper/ProjectStormtrooper/Resources/arrowDown.png create mode 100644 ProjectStormtrooper/ProjectStormtrooper/Resources/arrowLeft.png create mode 100644 ProjectStormtrooper/ProjectStormtrooper/Resources/arrowRight.png create mode 100644 ProjectStormtrooper/ProjectStormtrooper/Resources/arrowUp.png diff --git a/ProjectStormtrooper/ProjectStormtrooper/DirectionType.cs b/ProjectStormtrooper/ProjectStormtrooper/DirectionType.cs new file mode 100644 index 0000000..c1a12a6 --- /dev/null +++ b/ProjectStormtrooper/ProjectStormtrooper/DirectionType.cs @@ -0,0 +1,24 @@ +namespace ProjectStormtrooper; + +/// +/// Направление перемещения +/// +public enum DirectionType +{ + /// + /// Вверх + /// + Up = 1, + /// + /// Вниз + /// + Down = 2, + /// + /// Влево + /// + Left = 3, + /// + /// Вправо + /// + Right = 4 +} diff --git a/ProjectStormtrooper/ProjectStormtrooper/DrawingStormtrooper.cs b/ProjectStormtrooper/ProjectStormtrooper/DrawingStormtrooper.cs new file mode 100644 index 0000000..80ca03f --- /dev/null +++ b/ProjectStormtrooper/ProjectStormtrooper/DrawingStormtrooper.cs @@ -0,0 +1,210 @@ + +namespace ProjectStormtrooper; +/// +/// Класс, отвечающий за прорисовку и перемещение объекта-сущности +/// +public class DrawingStormtrooper +{ + + public EntityStormtrooper? EntityStormtrooper { get; private set; } + + + /// + /// Ширина окна + /// + private int? _pictureWidth; + + /// + /// Высота окна + /// + private int? _pictureHeight; + + /// + /// Левая координата прорисовки бомбардировщика + /// + private int? _startPosX; + + /// + /// Верхняя кооридната прорисовки бомбардировщика + /// + private int? _startPosY; + + /// + /// Ширина прорисовки бомбардировщика + /// + private readonly int _drawningStormtrooperWidth = 140; + + /// + /// Высота прорисовки бомбардировщика + /// + private readonly int _drawningStormtrooperHeight = 135; + + /// + /// Инициализация свойств + /// + /// Скорость + /// Вес + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия двигателей + /// Признак наличия бомб + /// Признак наличия ракет + public void Init(int speed, double weight, Color bodyColor, Color + additionalColor, bool engines, bool bombs, bool rockets) + { + EntityStormtrooper = new EntityStormtrooper(); + EntityStormtrooper.Init(speed, weight, bodyColor, additionalColor, + engines, bombs, rockets); + _pictureWidth = null; + _pictureHeight = null; + _startPosX = null; + _startPosY = null; + } + + /// + /// Установка границ поля + /// + /// Ширина поля + /// Высота поля + /// true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах + public bool SetPictureSize(int width, int height) + { + // TODO проверка, что объект "влезает" в размеры поля + // если влезает, сохраняем границы и корректируем позицию объекта, если она была уже установлена + if (width < _drawningStormtrooperWidth || height < _drawningStormtrooperHeight) return false; + _pictureWidth = width; + _pictureHeight = height; + return true; + } + /// + /// Установка позиции + /// + /// Координата X + /// Координата Y + public void SetPosition(int x, int y) + { + if (!_pictureHeight.HasValue || !_pictureWidth.HasValue) + { + return; + } + // TODO если при установке объекта в эти координаты, он будет "выходить" за границы формы + // то надо изменить координаты, чтобы он оставался в этих границах + if (x + _drawningStormtrooperWidth > _pictureWidth) + { + _startPosX = x - (x + _drawningStormtrooperWidth - _pictureWidth); + } + else + { + _startPosX = x; + } + + if (y + _drawningStormtrooperHeight > _pictureHeight) + { + _startPosY = y - (y + _drawningStormtrooperHeight - _pictureHeight); + } + else + { + _startPosY = y; + } + } + + /// + /// Изменение направления перемещения + /// + /// Направление + /// true - перемещене выполнено, false - перемещение невозможно + public bool MoveTransport(DirectionType direction) + { + if (EntityStormtrooper == null || !_startPosX.HasValue || + !_startPosY.HasValue) + { + return false; + } + switch (direction) + { + //влево + case DirectionType.Left: + if (_startPosX.Value - EntityStormtrooper.Step > 0) + { + _startPosX -= (int)EntityStormtrooper.Step; + } + return true; + //вверх + case DirectionType.Up: + if (_startPosY.Value - EntityStormtrooper.Step > 0) + { + _startPosY -= (int)EntityStormtrooper.Step; + } + return true; + // вправо + case DirectionType.Right: + //TODO прописать логику сдвига в право + if (_startPosX + _drawningStormtrooperWidth + EntityStormtrooper.Step < _pictureWidth) + { + _startPosX += (int)EntityStormtrooper.Step; + }; + return true; + //вниз + case DirectionType.Down: + //TODO прописать логику сдвига в вниз + if (_startPosY + _drawningStormtrooperHeight + EntityStormtrooper.Step < _pictureHeight) + { + _startPosY += (int)EntityStormtrooper.Step; + } + return true; + default: + return false; + } + } + /// + /// Прорисовка объекта + /// + /// + public void DrawTransport(Graphics g) + { + if (EntityStormtrooper == null || !_startPosX.HasValue || + !_startPosY.HasValue) + { + return; + } + Pen pen = new(Color.Black); + Brush additionalBrush = new SolidBrush(EntityStormtrooper.AdditionalColor); + //Тело бомбардировщика + g.DrawRectangle(pen, _startPosX.Value + 20, _startPosY.Value + 60, 120, 20); + //Задние крылья бомбардировщика + g.DrawLine(pen, _startPosX.Value + 140, _startPosY.Value + 30, _startPosX.Value + 140, _startPosY.Value + 110); + g.DrawLine(pen, _startPosX.Value + 140, _startPosY.Value + 110, _startPosX.Value + 120, _startPosY.Value + 90); + g.DrawLine(pen, _startPosX.Value + 120, _startPosY.Value + 90, _startPosX.Value + 120, _startPosY.Value + 80); + g.DrawLine(pen, _startPosX.Value + 140, _startPosY.Value + 30, _startPosX.Value + 120, _startPosY.Value + 50); + g.DrawLine(pen, _startPosX.Value + 120, _startPosY.Value + 50, _startPosX.Value + 120, _startPosY.Value + 60); + //Крылья бомбардировщика + g.DrawLine(pen, _startPosX.Value + 50, _startPosY.Value, _startPosX.Value + 50, _startPosY.Value + 60); + g.DrawLine(pen, _startPosX.Value + 50, _startPosY.Value + 80, _startPosX.Value + 50, _startPosY.Value + 135); + g.DrawLine(pen, _startPosX.Value + 50, _startPosY.Value + 135, _startPosX.Value + 60, _startPosY.Value + 135); + g.DrawLine(pen, _startPosX.Value + 60, _startPosY.Value + 135, _startPosX.Value + 65, _startPosY.Value + 80); + g.DrawLine(pen, _startPosX.Value + 50, _startPosY.Value, _startPosX.Value + 60, _startPosY.Value); + g.DrawLine(pen, _startPosX.Value + 60, _startPosY.Value, _startPosX.Value + 65, _startPosY.Value + 60); + ///Нос бомбардировщика + Point[] Nose = new Point[3]; + Nose[0].X = _startPosX.Value + 20; Nose[0].Y = _startPosY.Value + 80; + Nose[1].X = _startPosX.Value; Nose[1].Y = _startPosY.Value + 70; + Nose[2].X = _startPosX.Value + 20; Nose[2].Y = _startPosY.Value + 60; + g.FillPolygon(additionalBrush, Nose); + //Ракеты бомбардировщика + if (EntityStormtrooper.Rockets) + { + g.FillRectangle(additionalBrush, _startPosX.Value + 35, _startPosY.Value + 20, 15, 5); + g.FillRectangle(additionalBrush, _startPosX.Value + 35, _startPosY.Value + 110, 15, 5); + + } + //Бомбы бомбардировщика + if (EntityStormtrooper.Bombs) + { + g.FillRectangle(additionalBrush, _startPosX.Value + 40, _startPosY.Value + 40, 10, 10); + g.FillRectangle(additionalBrush, _startPosX.Value + 40, _startPosY.Value + 90, 10, 10); + } + } +} + + + diff --git a/ProjectStormtrooper/ProjectStormtrooper/EntityStormtrooper.cs b/ProjectStormtrooper/ProjectStormtrooper/EntityStormtrooper.cs new file mode 100644 index 0000000..8eef6d4 --- /dev/null +++ b/ProjectStormtrooper/ProjectStormtrooper/EntityStormtrooper.cs @@ -0,0 +1,75 @@ +namespace ProjectStormtrooper; + +/// +/// Класс-сущность "Бомбардировщик" +/// +public class EntityStormtrooper +{ + + /// + /// Скорость + /// + 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 Engines { get; private set; } + + /// + /// Признак (опция) наличия ракет + /// + public bool Rockets { get; private set; } + + /// + /// Признак (опция) наличия бомб + /// + public bool Bombs { get; private set; } + + /// + /// Шаг перемещения бомбардировщика + /// + public double Step => Speed * 100 / Weight; + + + + /// + /// Инициализация полей объекта-класса спортивного автомобиля + /// + /// Скорость + /// Вес автомобиля + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия двигателей + /// Признак наличия бомб + /// Признак наличия ракет + public void Init(int speed, double weight, Color bodyColor, Color + additionalColor, bool engines, bool bombs, bool rockets) + { + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + Engines = engines; + Bombs = bombs; + Rockets = rockets; + } +} + + diff --git a/ProjectStormtrooper/ProjectStormtrooper/Form1.Designer.cs b/ProjectStormtrooper/ProjectStormtrooper/Form1.Designer.cs deleted file mode 100644 index 68d6185..0000000 --- a/ProjectStormtrooper/ProjectStormtrooper/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace ProjectStormtrooper -{ - 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/ProjectStormtrooper/ProjectStormtrooper/Form1.cs b/ProjectStormtrooper/ProjectStormtrooper/Form1.cs deleted file mode 100644 index 638b855..0000000 --- a/ProjectStormtrooper/ProjectStormtrooper/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace ProjectStormtrooper -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} \ No newline at end of file diff --git a/ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.Designer.cs b/ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.Designer.cs new file mode 100644 index 0000000..42787eb --- /dev/null +++ b/ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.Designer.cs @@ -0,0 +1,135 @@ +namespace ProjectStormtrooper +{ + partial class FormStormtrooper + { + /// + /// 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() + { + buttonCreateStormtrooper = new Button(); + buttonUp = new Button(); + buttonRight = new Button(); + buttonDown = new Button(); + buttonLeft = new Button(); + pictureBoxStormtrooper = new PictureBox(); + ((System.ComponentModel.ISupportInitialize)pictureBoxStormtrooper).BeginInit(); + SuspendLayout(); + // + // buttonCreateStormtrooper + // + buttonCreateStormtrooper.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonCreateStormtrooper.Location = new Point(35, 693); + buttonCreateStormtrooper.Name = "buttonCreateStormtrooper"; + buttonCreateStormtrooper.Size = new Size(126, 32); + buttonCreateStormtrooper.TabIndex = 0; + buttonCreateStormtrooper.Text = "Создать"; + buttonCreateStormtrooper.UseVisualStyleBackColor = true; + buttonCreateStormtrooper.Click += buttonCreate_Click; + // + // buttonUp + // + buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonUp.BackgroundImage = Properties.Resources.arrowUp; + buttonUp.BackgroundImageLayout = ImageLayout.Stretch; + buttonUp.Location = new Point(1130, 633); + buttonUp.Name = "buttonUp"; + buttonUp.Size = new Size(35, 35); + buttonUp.TabIndex = 1; + buttonUp.UseVisualStyleBackColor = true; + buttonUp.Click += ButtonMove_Click; + // + // buttonRight + // + buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonRight.BackgroundImage = Properties.Resources.arrowRight; + buttonRight.BackgroundImageLayout = ImageLayout.Stretch; + buttonRight.Location = new Point(1171, 674); + buttonRight.Name = "buttonRight"; + buttonRight.Size = new Size(35, 35); + buttonRight.TabIndex = 2; + buttonRight.UseVisualStyleBackColor = true; + buttonRight.Click += ButtonMove_Click; + // + // buttonDown + // + buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonDown.BackgroundImage = Properties.Resources.arrowDown; + buttonDown.BackgroundImageLayout = ImageLayout.Stretch; + buttonDown.Location = new Point(1130, 674); + buttonDown.Name = "buttonDown"; + buttonDown.Size = new Size(35, 35); + buttonDown.TabIndex = 3; + buttonDown.UseVisualStyleBackColor = true; + buttonDown.Click += ButtonMove_Click; + // + // buttonLeft + // + buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonLeft.BackgroundImage = Properties.Resources.arrowLeft; + buttonLeft.BackgroundImageLayout = ImageLayout.Stretch; + buttonLeft.Location = new Point(1089, 674); + buttonLeft.Name = "buttonLeft"; + buttonLeft.Size = new Size(35, 35); + buttonLeft.TabIndex = 4; + buttonLeft.UseVisualStyleBackColor = true; + buttonLeft.Click += ButtonMove_Click; + // + // pictureBoxStormtrooper + // + pictureBoxStormtrooper.Dock = DockStyle.Fill; + pictureBoxStormtrooper.Location = new Point(0, 0); + pictureBoxStormtrooper.Name = "pictureBoxStormtrooper"; + pictureBoxStormtrooper.Size = new Size(1260, 737); + pictureBoxStormtrooper.TabIndex = 5; + pictureBoxStormtrooper.TabStop = false; + pictureBoxStormtrooper.Click += ButtonMove_Click; + // + // FormStormtrooper + // + AutoScaleDimensions = new SizeF(7F, 15F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(1260, 737); + Controls.Add(buttonLeft); + Controls.Add(buttonDown); + Controls.Add(buttonRight); + Controls.Add(buttonUp); + Controls.Add(buttonCreateStormtrooper); + Controls.Add(pictureBoxStormtrooper); + Name = "FormStormtrooper"; + Text = "Бомбардировщик"; + ((System.ComponentModel.ISupportInitialize)pictureBoxStormtrooper).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Button buttonCreateStormtrooper; + private Button buttonUp; + private Button buttonRight; + private Button buttonDown; + private Button buttonLeft; + private PictureBox pictureBoxStormtrooper; + } +} \ No newline at end of file diff --git a/ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.cs b/ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.cs new file mode 100644 index 0000000..b5e1126 --- /dev/null +++ b/ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.cs @@ -0,0 +1,106 @@ + +namespace ProjectStormtrooper +{ + /// + /// Форма работы с объектом "Бомбардировщик" + /// + public partial class FormStormtrooper : Form + { + /// + /// Поле-объект для прорисовки объекта + /// + private DrawingStormtrooper? _drawningStormtrooper; + + /// + /// Конструктор формы + /// + public FormStormtrooper() + { + InitializeComponent(); + } + + + /// + /// Метод прорисовки бомбардировщика + /// + private void Draw() + { + if (_drawningStormtrooper == null) + { + return; + } + Bitmap bmp = new(pictureBoxStormtrooper.Width, + pictureBoxStormtrooper.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawningStormtrooper.DrawTransport(gr); + pictureBoxStormtrooper.Image = bmp; + } + + /// + /// Обработка нажатия кнопки "Создать" + /// + /// + /// + private void buttonCreate_Click(object sender, EventArgs e) + { + Random random = new(); + _drawningStormtrooper = new DrawingStormtrooper(); + + _drawningStormtrooper.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))); + _drawningStormtrooper.SetPictureSize(pictureBoxStormtrooper.Width, + pictureBoxStormtrooper.Height); + _drawningStormtrooper.SetPosition(random.Next(10, 100), random.Next(10, + 100)); + Draw(); + + } + + + + /// + /// Перемещение объекта по форме (нажатие кнопок навигации) + /// + /// + /// + private void ButtonMove_Click(object sender, EventArgs e) + { + if (_drawningStormtrooper == null) + { + return; + } + string name = ((Button)sender)?.Name ?? string.Empty; + bool result = false; + switch (name) + { + case "buttonUp": + result = + _drawningStormtrooper.MoveTransport(DirectionType.Up); + break; + case "buttonDown": + result = + _drawningStormtrooper.MoveTransport(DirectionType.Down); + break; + case "buttonLeft": + result = + _drawningStormtrooper.MoveTransport(DirectionType.Left); + break; + case "buttonRight": + result = + _drawningStormtrooper.MoveTransport(DirectionType.Right); + break; + } + if (result) + { + Draw(); + } + } + + } +} diff --git a/ProjectStormtrooper/ProjectStormtrooper/Form1.resx b/ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.resx similarity index 93% rename from ProjectStormtrooper/ProjectStormtrooper/Form1.resx rename to ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.resx index 1af7de1..af32865 100644 --- a/ProjectStormtrooper/ProjectStormtrooper/Form1.resx +++ b/ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.resx @@ -1,17 +1,17 @@  - diff --git a/ProjectStormtrooper/ProjectStormtrooper/Program.cs b/ProjectStormtrooper/ProjectStormtrooper/Program.cs index 763f0aa..3db6e41 100644 --- a/ProjectStormtrooper/ProjectStormtrooper/Program.cs +++ b/ProjectStormtrooper/ProjectStormtrooper/Program.cs @@ -11,7 +11,7 @@ namespace ProjectStormtrooper // 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 FormStormtrooper()); } } } \ No newline at end of file diff --git a/ProjectStormtrooper/ProjectStormtrooper/ProjectStormtrooper.csproj b/ProjectStormtrooper/ProjectStormtrooper/ProjectStormtrooper.csproj index e1a0735..244387d 100644 --- a/ProjectStormtrooper/ProjectStormtrooper/ProjectStormtrooper.csproj +++ b/ProjectStormtrooper/ProjectStormtrooper/ProjectStormtrooper.csproj @@ -8,4 +8,19 @@ enable + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/ProjectStormtrooper/ProjectStormtrooper/Properties/Resources.Designer.cs b/ProjectStormtrooper/ProjectStormtrooper/Properties/Resources.Designer.cs new file mode 100644 index 0000000..572fd94 --- /dev/null +++ b/ProjectStormtrooper/ProjectStormtrooper/Properties/Resources.Designer.cs @@ -0,0 +1,103 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace ProjectStormtrooper.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("ProjectStormtrooper.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/ProjectStormtrooper/ProjectStormtrooper/Properties/Resources.resx b/ProjectStormtrooper/ProjectStormtrooper/Properties/Resources.resx new file mode 100644 index 0000000..dc6b4c5 --- /dev/null +++ b/ProjectStormtrooper/ProjectStormtrooper/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/ProjectStormtrooper/ProjectStormtrooper/Resources/arrowDown.png b/ProjectStormtrooper/ProjectStormtrooper/Resources/arrowDown.png new file mode 100644 index 0000000000000000000000000000000000000000..770f129f939b25e72ab9f448d43e922da1ea9037 GIT binary patch literal 2250 zcmd6p+f!3l6vl%FNJ0T~B34i&ghs~1phXNdh;Sra5(LlDLkyt`8H$!rC`e-=D8&$g zAY!LB5mf3Sc-dy6jYtq3@Dj#isaQu67!WE}X-zUfYrWM==}G^EzWA_aeQWJ+e)G+K z*;|XGC;QTZXe1KJSCk^$L?U@)5GA2_5u1@Fzbc}6lx|91Pdaydv4a@MJK!{!L^^-a z=Z)Nxn5o4nnWZF>U$477`aTDrkVuqlkr2kpwoQ#^m5vG))}Y^X%+7j8YX%PAjTNO* zYKJ@h3I5FZr+k#2{YZk{IpZ1{4%cx?ao)qYvZ7NlaN+5{6aQYTAQXxD}jM}ACSV=#aG z42|^zg<#S6uwpU=F!3$S&|6nRzj@rK-ZR^OTH#|IAQM_mwL&Zt-EgT6U!D z?e}xH%RP(iG9-1?4x^PeX1IatPgMd)G7)sv%Muk}XPK_CdES<&_uXpESwaQ6RdOuZ z619j>@eVdP=>QAl`z}43Z@ar2+i$iWQ~4+yEMuZn9uezh`GP^%R@QE-mR+t_&?O7A zeujDDi53dC;miwMAJHb$1pE-W9!b53@~pJng#^y!#$7o;;Pw!>^~aNZ6oGDB>xwWh z%X@Czom#Y7R^!HfdhaI8>viKg@}J`RP&aNgG6DI??8X%~u|eKrH?DACzAf^R8#AkAr`$N{&@GrZ=*BJ2eU9swxpD0Z-qefNgM;0t4iJu;FBw=t z{u4K|kK)`hm`r%bl95@qF+5->`)XzL;$k)&yAg{kD=()@y3}}O8aB%^6*uGCmKt|Z zxW~f5eTIDng}Zwx7^d5OGy#V6OEc^7qK#NI z%XEUOSR_;?SjF{tX95~+{3nRb4=k;z)z8`Nk(2XjRzpfI>=U8r|8w_SYQufqPoV&mN>(xhrHzw{#=B` zgqlj}wo0ucS)=q*k4B?Y4d%u)Rc$aY_CxWU|+hV+FS=R!k#s&lbWiC9M$z%8}F zZ-ew66O_{J*Qu^fvT~h4;2|Hc!EcMO@KBQrvXyI{LX9$5Er>>28q5)?2;EMlx+2Ls zmhliYv>cxFM_ZcA+bNt7t@9Dbq%MwwCqFmTuN?catE3S;NoN-2cE79#PvTm;8cTkK z&`HMiu3Inv2u3GEtR>%-JP0!MXU=)j{O5$s(0^F-DEi?wo=~@cyMH~tlZ#GfU8qS! zF4cmax{*0yU@R58G`hT%jx7l_j(zfUg2FinWfbuhWn>*0os4MnOhH8SjA_2Oj;#9t zoeb^q79k==#*(3eCbEuQ$D#LlijmBE01c)BVxi@rXT4LA%p(9AR&>{&d&`6Qn2KqPa?DiGI6Y;m7(qI=DqsSx4U73-FMHj{)IW1S Y*6h|6>=}Pf{69#d#B|}g^*QQ)0ltJv$^ZZW literal 0 HcmV?d00001 diff --git a/ProjectStormtrooper/ProjectStormtrooper/Resources/arrowLeft.png b/ProjectStormtrooper/ProjectStormtrooper/Resources/arrowLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..98438bc5bbbf92ba598c54263fb7645bde6bc8d2 GIT binary patch literal 2211 zcmb`J?N<|L8pZ=Um>CTugaKC;PaqKOj8q#06kkdp6hVkY2^lL`a#Yl&s6kt_A}UQ} zFr~ggTq+_uEE>`|acXNF=t}8Gj~qO^MPMnYTP4<71#uVD6{N7w!#}WJ`eCj-FW2v$ z`{bNlcgiw!$r5Z1CK8DxDXX+=MIx^(@EF8C;NPy6}{Zl}&Vbn9gEq%!vI z2RHM(7E2esyFa2P>N+=3{=9FK?osSLk$9wF)JH*c-qYn-hjIl>nnrn*pk(|a6Czfz zqVKJ^qUsO5+!Fg}Wc0r?h-KF#jc;sidMj_?!h=H(E?v5GPj|8FA@=@%THE(1nP+uz zMSnYznijjR+*v$1@p}QXLQHniL=H->qlp@n?AJPmtd0x@6H*m=+j~}rl)(;)$u)Ar zt7>jIKyN#UlGSBIk&f!qX7MV2zrU4E9>uqtfCpm8^s&23J#dxuLg~3skvw%`!!%X7(=;-aYOV zzO-JMt+zcu&7lltmiB~c@t#l?p$RsLs*oF~W1LFm;#8(|&{vLd8UVMg(SOq0UZCbM z23smN`!m=+vDur!8pQ)1Ej}#kv6T_OgtPXz+8-G#1sy1PC-c3Hq(-CZc{~&!j)mqUs>f$SP?T84=(zid;%`EeB}o&s-OP+xijHFOi?m}t>_)D zp^4|Fu0n;Y!=7K8mU+Im>yD>(;ntF}C;4v|kMn2lAH$X@*$SHYAZiESSC~xA17Dx+ z<$}J6Tn3vTuh1htxH!z!GFhoOR^e*dnrTw%5x4$`M2quDA#=lB zEye(k7lYkRj2Hr&Yn2{f23wvG*$m8e0S|oi$Tu0~q!#Z@UAi*V)e_bHV45B|Td#OV z6H-mmn_8S^!gm7gZdNgv)|?ZdNAk99z=3XG9|-h)V-QfYVYVK5*>OS5V1xDP+d;Y2 z_S5QuJoz|l?!80sNFu7*I?Um&pgxC-itFsPS{0Nj@M7{JGGT?Vk?iwFS6=iRgc zc<>YkV0?ibz%B{`nFV_R;QX}%02#MT066DL6acX0+fo2L`A7nQkikFzH1$RRV2^qQ z)Tn5vizA^%Pn`$Og`SzvpEfaqol}CJdf=R%kB=$xNajtlO26u7qT9J zz4(!|AaSSX^k}jV@3>Ii@6CgMMVJg zw}quo8CT)Z@z461z|qpa_6Ts~8n#~tg*m1h8maU#SeX5*7W%XFDp;7DKZVsfrmz#K z5W7Er3&eI=J0aG)VH9G64M`At**S&n-!_Hy-L}EkTsQ@dRrUGMk+&@bHnQz0tRYRI z7PjJa82b#YHPqXn_8=c8ikiwl|=iW@nKJRPF zq4@-f&@|g(8@GO_@nDVU0Mm*O`-9{mVe-h0ZON2eYHR}$1~ie9%ZzOrszPR@YB^Q7 zn~MQ)mJQ>qiWg2>qnBE2FT`dq4`!D2gtfx_v(Y50q3kl_lCxZ3xO>+E5SZC8FahwE z^~w^9?RV5X&4a!6?@_hFge|AZ!9=QBW~^F61^XMTR#VkLlc`|2u?n2ajr2U0Cc%g+ z_BVq39#^@giPWf_7e=g(gEYB3nHsI+g^z@Gg9p0t2R zaKP#)rOBdnY9Ht$Uuai(u%FlwU8tVRcDd+!Ac7Kp5qLMG+ z)Q9=b8cuEFJ3r^t<$R}uQ#<(16P&t+?=0so+mBiB4R9jz=nU~MWqrTim`5#Ggh=~9I literal 0 HcmV?d00001 diff --git a/ProjectStormtrooper/ProjectStormtrooper/Resources/arrowRight.png b/ProjectStormtrooper/ProjectStormtrooper/Resources/arrowRight.png new file mode 100644 index 0000000000000000000000000000000000000000..8878515bccfaf3f2bb7831c91746848855c9e404 GIT binary patch literal 2165 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