From 410fb180f73e31f7e772db94f885f84e606d2f50 Mon Sep 17 00:00:00 2001 From: I1nur Date: Thu, 30 Nov 2023 08:24:30 +0400 Subject: [PATCH] Blank --- ProjectAntiAirCraftGun/DirectionType.cs | 34 --- .../DrawingObjects/DrawingAntiAircraftGun.cs | 80 ------ .../DrawingObjects/DrawingTank.cs | 269 ------------------ .../Entities/EntityAntiAircraftGun.cs | 47 --- ProjectAntiAirCraftGun/Entities/EntityTank.cs | 45 --- .../FormAntiAircraftGun.Designer.cs | 192 ------------- ProjectAntiAirCraftGun/FormAntiAircraftGun.cs | 187 ------------ .../FormAntiAircraftGun.resx | 120 -------- .../FormTankCollection.Designer.cs | 123 -------- ProjectAntiAirCraftGun/FormTankCollection.cs | 83 ------ .../FormTankCollection.resx | 60 ---- ProjectAntiAirCraftGun/Generics/SetGeneric.cs | 98 ------- .../Generics/TanksGenericCollection.cs | 145 ---------- .../MovementStrategy/AbstractStrategy.cs | 131 --------- .../MovementStrategy/DrawingObjectTank.cs | 32 --- .../MovementStrategy/IMoveableObject.cs | 29 -- .../MovementStrategy/MoveToBorder.cs | 60 ---- .../MovementStrategy/MoveToCenter.cs | 60 ---- .../MovementStrategy/ObjectParametrs.cs | 51 ---- .../MovementStrategy/Status.cs | 12 - ProjectAntiAirCraftGun/Program.cs | 17 -- .../ProjectAntiAircraftGun.csproj | 26 -- .../ProjectAntiAircraftGun.sln | 25 -- .../Properties/Resources.Designer.cs | 145 ---------- .../Properties/Resources.resx | 145 ---------- ProjectAntiAirCraftGun/Resources/bottom.png | Bin 2881 -> 0 bytes ProjectAntiAirCraftGun/Resources/left.png | Bin 2957 -> 0 bytes ...-kemono-friends-three-arrow-game-angle.png | Bin 2939 -> 0 bytes ...sparent-arrow-arrow-cdr-angle-triangle.png | Bin 4450 -> 0 bytes ...sparent-arrow-left-thin-zondicons-icon.png | Bin 4573 -> 0 bytes ...t-right-arrow-miscellaneous-game-angle.png | Bin 2404 -> 0 bytes ProjectAntiAirCraftGun/Resources/right.png | Bin 3343 -> 0 bytes ProjectAntiAirCraftGun/Resources/top.png | Bin 3141 -> 0 bytes README.md | 0 34 files changed, 2216 deletions(-) delete mode 100644 ProjectAntiAirCraftGun/DirectionType.cs delete mode 100644 ProjectAntiAirCraftGun/DrawingObjects/DrawingAntiAircraftGun.cs delete mode 100644 ProjectAntiAirCraftGun/DrawingObjects/DrawingTank.cs delete mode 100644 ProjectAntiAirCraftGun/Entities/EntityAntiAircraftGun.cs delete mode 100644 ProjectAntiAirCraftGun/Entities/EntityTank.cs delete mode 100644 ProjectAntiAirCraftGun/FormAntiAircraftGun.Designer.cs delete mode 100644 ProjectAntiAirCraftGun/FormAntiAircraftGun.cs delete mode 100644 ProjectAntiAirCraftGun/FormAntiAircraftGun.resx delete mode 100644 ProjectAntiAirCraftGun/FormTankCollection.Designer.cs delete mode 100644 ProjectAntiAirCraftGun/FormTankCollection.cs delete mode 100644 ProjectAntiAirCraftGun/FormTankCollection.resx delete mode 100644 ProjectAntiAirCraftGun/Generics/SetGeneric.cs delete mode 100644 ProjectAntiAirCraftGun/Generics/TanksGenericCollection.cs delete mode 100644 ProjectAntiAirCraftGun/MovementStrategy/AbstractStrategy.cs delete mode 100644 ProjectAntiAirCraftGun/MovementStrategy/DrawingObjectTank.cs delete mode 100644 ProjectAntiAirCraftGun/MovementStrategy/IMoveableObject.cs delete mode 100644 ProjectAntiAirCraftGun/MovementStrategy/MoveToBorder.cs delete mode 100644 ProjectAntiAirCraftGun/MovementStrategy/MoveToCenter.cs delete mode 100644 ProjectAntiAirCraftGun/MovementStrategy/ObjectParametrs.cs delete mode 100644 ProjectAntiAirCraftGun/MovementStrategy/Status.cs delete mode 100644 ProjectAntiAirCraftGun/Program.cs delete mode 100644 ProjectAntiAirCraftGun/ProjectAntiAircraftGun.csproj delete mode 100644 ProjectAntiAirCraftGun/ProjectAntiAircraftGun.sln delete mode 100644 ProjectAntiAirCraftGun/Properties/Resources.Designer.cs delete mode 100644 ProjectAntiAirCraftGun/Properties/Resources.resx delete mode 100644 ProjectAntiAirCraftGun/Resources/bottom.png delete mode 100644 ProjectAntiAirCraftGun/Resources/left.png delete mode 100644 ProjectAntiAirCraftGun/Resources/png-clipart-computer-icons-uma-musume-pretty-derby-fate-grand-order-saber-kemono-friends-three-arrow-game-angle.png delete mode 100644 ProjectAntiAirCraftGun/Resources/png-transparent-arrow-arrow-cdr-angle-triangle.png delete mode 100644 ProjectAntiAirCraftGun/Resources/png-transparent-arrow-left-thin-zondicons-icon.png delete mode 100644 ProjectAntiAirCraftGun/Resources/png-transparent-grammatical-person-paper-narration-direzione-didattica-statale-gestione-scuola-elementare-copy-print-right-arrow-miscellaneous-game-angle.png delete mode 100644 ProjectAntiAirCraftGun/Resources/right.png delete mode 100644 ProjectAntiAirCraftGun/Resources/top.png create mode 100644 README.md diff --git a/ProjectAntiAirCraftGun/DirectionType.cs b/ProjectAntiAirCraftGun/DirectionType.cs deleted file mode 100644 index bf12d1e..0000000 --- a/ProjectAntiAirCraftGun/DirectionType.cs +++ /dev/null @@ -1,34 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ProjectAntiAircraftGun -{ - /// - /// Направленте перемещения - /// - public enum DirectionType - { - /// - /// Вверх - /// - Up = 1, - - /// - /// Вниз - /// - Down = 2, - - /// - /// Влево - /// - Left = 3, - - /// - /// Вправо - /// - Right = 4 - } -} diff --git a/ProjectAntiAirCraftGun/DrawingObjects/DrawingAntiAircraftGun.cs b/ProjectAntiAirCraftGun/DrawingObjects/DrawingAntiAircraftGun.cs deleted file mode 100644 index d613c6d..0000000 --- a/ProjectAntiAirCraftGun/DrawingObjects/DrawingAntiAircraftGun.cs +++ /dev/null @@ -1,80 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using ProjectAntiAircraftGun.Entities; - -namespace ProjectAntiAircraftGun.DrawingObjects -{ - /// - /// Класс, отвечающий за прорисовку и перемещение объекта-сущности - /// - public class DrawingAntiAircraftGun : DrawingTank - { - /// - /// Конструктор - /// - /// Скорость - /// Вес - /// Основной цвет - /// Дополнительный цвет - /// Признак наличия радара - /// Признак наличия люка - /// Признак наличия пушки - /// Ширина картинки - /// Высота картинки - public DrawingAntiAircraftGun(int speed, double weight, Color bodyColor, Color -additionalColor, bool radar, bool hatch, bool cannon, int width, int height) : - base(speed, weight, bodyColor, additionalColor, width, height, 102, 139) - { - if (EntityTank != null) - { - EntityTank = new EntityAntiAircraftGun(speed, weight, bodyColor, - additionalColor, radar, hatch, cannon); - } - } - - public override void DrawTransport(Graphics g) - { - - if (EntityTank is not EntityAntiAircraftGun antiAircraftGun) - { - return; - } - - Pen pen = new(Color.Black); - pen.Width = 2; - Brush brush = new SolidBrush(EntityTank.BodyColor); - Brush additionalBrush = new SolidBrush(EntityTank.AdditionalColor); - - base.DrawTransport(g); - - // радар - if (antiAircraftGun.Radar) - { - Pen penRadar = new(Color.DarkGreen); - g.DrawEllipse(penRadar, _startPosX + 52, _startPosY + 46, 21, 12); - g.DrawEllipse(penRadar, _startPosX + 55, _startPosY + 48, 14, 8); - pen = new(Color.Green); - g.DrawLine(penRadar, _startPosX + 61, _startPosY + 52, _startPosX + 70, _startPosY + 48); - } - - // пушка - if (antiAircraftGun.Cannon) - { - g.DrawLine(pen, _startPosX + 54, _startPosY + 33, _startPosX + 113, _startPosY + 2); - g.DrawLine(pen, _startPosX + 57, _startPosY + 35, _startPosX + 122, _startPosY + 2); - } - - // люк - if (antiAircraftGun.Hatch) - { - pen = new(antiAircraftGun.AdditionalColor); - g.DrawRectangle(pen, _startPosX + 88, _startPosY + 64, 17, 6); - g.DrawLine(pen, _startPosX + 88, _startPosY + 67, _startPosX + 105, _startPosY + 67); - g.DrawLine(pen, _startPosX + 94, _startPosY + 64, _startPosX + 94, _startPosY + 70); - } - } - } -} diff --git a/ProjectAntiAirCraftGun/DrawingObjects/DrawingTank.cs b/ProjectAntiAirCraftGun/DrawingObjects/DrawingTank.cs deleted file mode 100644 index 4ff5e10..0000000 --- a/ProjectAntiAirCraftGun/DrawingObjects/DrawingTank.cs +++ /dev/null @@ -1,269 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using ProjectAntiAircraftGun.Entities; -using ProjectAntiAircraftGun.MovementStrategy; -using static System.Windows.Forms.VisualStyles.VisualStyleElement; - -namespace ProjectAntiAircraftGun.DrawingObjects -{ - public class DrawingTank - { - /// - /// Класс-сущность - /// - public EntityTank? EntityTank { get; protected set; } - /// - /// Ширина окна - /// - private int _pictureWidth; - /// - /// Высота окна - /// - private int _pictureHeight; - /// - /// Левая координата прорисовки танка - /// - protected int _startPosX; - /// - /// Верхняя кооридната прорисовки танка - /// - protected int _startPosY; - /// - /// Ширина прорисовки танка - /// - protected readonly int _tankWidth = 130; - /// - /// Высота прорисовки танка - /// - protected readonly int _tankHeight = 102; - - /// - /// Координата X объекта - /// - public int GetPosX => _startPosX; - /// - /// Координата Y объекта - /// - public int GetPosY => _startPosY; - /// - /// Ширина объекта - /// - public int GetWidth => _tankWidth; - /// - /// Высота объекта - /// - public int GetHeight => _tankHeight; - public IMoveableObject GetMoveableObject => new DrawingObjectTank(this); - /// - /// Конструктор - /// - /// Скорость - /// Вес - /// Основной цвет - /// Дополнительный цвет - /// Ширина картинки - /// Высота картинки - public DrawingTank(int speed, double weight, Color bodyColor, Color additionalColor, int - width, int height) - { - - _pictureWidth = width; - _pictureHeight = height; - EntityTank = new EntityTank(speed, weight, bodyColor, additionalColor); - - if (_pictureWidth > _tankWidth && _pictureHeight > _tankHeight) - { - EntityTank = new EntityTank(speed, weight, bodyColor, additionalColor); - } - else - { - EntityTank = null; - } - } - /// - /// Конструктор - /// - /// Скорость - /// Вес - /// Основной цвет - /// Ширина картинки - /// Высота картинки - /// Ширина прорисовки танка - /// Высота прорисовки танка - protected DrawingTank(int speed, double weight, Color bodyColor, Color additionalColor, int - width, int height, int tankWidth, int tankHeight) - { - _pictureWidth = width; - _pictureHeight = height; - _pictureWidth = width; - _pictureHeight = height; - EntityTank = new EntityTank(speed, weight, bodyColor, additionalColor); - - if (_pictureWidth > _tankWidth && _pictureHeight > _tankHeight) - { - EntityTank = new EntityTank(speed, weight, bodyColor, additionalColor); - } - else - { - EntityTank = null; - } - } - - /// - /// Проверка, что объект может переместится по указанному направлению - /// - /// Направление - /// true - можно переместится по указанному направлению - public bool CanMove(DirectionType direction) - { - if (EntityTank == null) - { - return false; - } - return direction switch - { - //влево - DirectionType.Left => _startPosX - EntityTank.Step > 0, - //вверх - DirectionType.Up => _startPosY - EntityTank.Step > 0, - // вправо - DirectionType.Right => _startPosX + _tankWidth + EntityTank.Step < _pictureWidth, - //вниз - DirectionType.Down => _startPosY + _tankHeight + EntityTank.Step < _pictureHeight, - _ => false, - }; - } - - /// - /// Изменение направления перемещения - /// - /// Направление - public void MoveTransport(DirectionType direction) - { - if (!CanMove(direction) || EntityTank == null) - { - return; - } - switch (direction) - { - //влево - case DirectionType.Left: - _startPosX -= (int)EntityTank.Step; - break; - //вверх - case DirectionType.Up: - _startPosY -= (int)EntityTank.Step; - break; - // вправо - case DirectionType.Right: - _startPosX += (int)EntityTank.Step; - break; - //вниз - case DirectionType.Down: - _startPosY += (int)EntityTank.Step; - break; - } - } - /// - /// Установка позиции - /// - /// Координата X - /// Координата Y - public void SetPosition(int x, int y) - { - if (EntityTank == null) return; - while (x + _tankWidth > _pictureWidth) - { - x -= (int)EntityTank.Step; - } - while (x < 0) - { - x += (int)EntityTank.Step; - } - while (y + _tankHeight > _pictureHeight) - { - y -= (int)EntityTank.Step; - } - while (y < 0) - { - y += (int)EntityTank.Step; - } - _startPosX = x; - _startPosY = y; - } - - /// - /// Прорисовка объекта - /// - /// - public virtual void DrawTransport(Graphics g) - { - if (EntityTank == null) { return; } - Pen pen = new(Color.Black); - pen.Width = 2; - Brush brush = new SolidBrush(EntityTank.BodyColor); - - Random random = new Random(); - Brush additionalBrush = new SolidBrush(EntityTank.AdditionalColor); - - // границы зенитной установки - g.DrawRectangle(pen, _startPosX + 3, _startPosY + 60, 121, 23); - g.DrawRectangle(pen, _startPosX + 20, _startPosY + 43, 54, 16); - g.DrawRectangle(pen, _startPosX + 42, _startPosY + 33, 16, 9); - - // корпус - g.FillRectangle(brush, _startPosX + 3, _startPosY + 60, 121, 23); - g.FillRectangle(brush, _startPosX + 20, _startPosY + 43, 54, 16); - g.FillRectangle(brush, _startPosX + 42, _startPosY + 33, 16, 9); - - // контур гусеницы - g.DrawLine(pen, _startPosX + 13, _startPosY + 100, _startPosX + 114, _startPosY + 100); - g.DrawLine(pen, _startPosX + 6, _startPosY + 99, _startPosX + 16, _startPosY + 99); - g.DrawLine(pen, _startPosX + 4, _startPosY + 98, _startPosX + 6, _startPosY + 98); - g.DrawLine(pen, _startPosX + 4, _startPosY + 97, _startPosX + 4, _startPosY + 86); - g.DrawLine(pen, _startPosX + 4, _startPosY + 86, _startPosX + 5, _startPosY + 86); - g.DrawLine(pen, _startPosX + 5, _startPosY + 85, _startPosX + 10, _startPosY + 85); - g.DrawLine(pen, _startPosX + 10, _startPosY + 84, _startPosX + 116, _startPosY + 84); - g.DrawLine(pen, _startPosX + 116, _startPosY + 85, _startPosX + 123, _startPosY + 85); - g.DrawLine(pen, _startPosX + 124, _startPosY + 86, _startPosX + 125, _startPosY + 86); - g.DrawLine(pen, _startPosX + 125, _startPosY + 87, _startPosX + 125, _startPosY + 97); - g.DrawLine(pen, _startPosX + 123, _startPosY + 98, _startPosX + 125, _startPosY + 98); - g.DrawLine(pen, _startPosX + 115, _startPosY + 99, _startPosX + 123, _startPosY + 99); - - //гусеница - g.FillRectangle(additionalBrush, _startPosX + 4, _startPosY + 87, 120, 10); - g.FillRectangle(additionalBrush, _startPosX + 19, _startPosY + 85, 92, 2); - g.FillRectangle(additionalBrush, _startPosX + 14, _startPosY + 93, 100, 7); - - // контур колес - g.DrawEllipse(pen, _startPosX + 5, _startPosY + 83, 18, 17); - g.DrawEllipse(pen, _startPosX + 30, _startPosY + 88, 15, 12); - g.DrawEllipse(pen, _startPosX + 50, _startPosY + 88, 15, 12); - g.DrawEllipse(pen, _startPosX + 70, _startPosY + 88, 15, 12); - g.DrawEllipse(pen, _startPosX + 87, _startPosY + 88, 15, 12); - g.DrawEllipse(pen, _startPosX + 107, _startPosY + 83, 18, 17); - - // контур верхних катков - g.DrawEllipse(pen, _startPosX + 43, _startPosY + 83, 7, 5); - g.DrawEllipse(pen, _startPosX + 64, _startPosY + 83, 7, 5); - g.DrawEllipse(pen, _startPosX + 82, _startPosY + 83, 7, 5); - - - // колеса - g.FillEllipse(brush, _startPosX + 5, _startPosY + 83, 18, 17); - g.FillEllipse(brush, _startPosX + 30, _startPosY + 88, 15, 12); - g.FillEllipse(brush, _startPosX + 50, _startPosY + 88, 15, 12); - g.FillEllipse(brush, _startPosX + 70, _startPosY + 88, 15, 12); - g.FillEllipse(brush, _startPosX + 87, _startPosY + 88, 15, 12); - g.FillEllipse(brush, _startPosX + 107, _startPosY + 83, 18, 17); - - // верхние катки - g.FillEllipse(brush, _startPosX + 43, _startPosY + 83, 7, 5); - g.FillEllipse(brush, _startPosX + 64, _startPosY + 83, 7, 5); - g.FillEllipse(brush, _startPosX + 82, _startPosY + 83, 7, 5); - } - } -} diff --git a/ProjectAntiAirCraftGun/Entities/EntityAntiAircraftGun.cs b/ProjectAntiAirCraftGun/Entities/EntityAntiAircraftGun.cs deleted file mode 100644 index a6ee0c0..0000000 --- a/ProjectAntiAirCraftGun/Entities/EntityAntiAircraftGun.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ProjectAntiAircraftGun.Entities -{ - public class EntityAntiAircraftGun : EntityTank - { - /// - /// Радар - /// - public bool Radar { get; private set; } - - /// - /// люк зенитной установки - /// - public bool Hatch { get; private set; } - - /// - /// пушка танк - /// - public bool Cannon { get; private set; } - - /// - /// Шаг перемещения зенитной установки - /// - public double Step => (double)Speed * 100 / Weight; - - /// - /// Инициализация полей объекта-класс зенитной установки - /// - /// Скорость - /// Вес зенитной установки - /// Основной цвет - /// Признак наличия радара - /// Признак наличия люка зенитной установки - /// Признак наличия пушки зенитной установки - public EntityAntiAircraftGun(int speed, double weight, Color bodyColor, Color additionalColor, bool radar, bool hatch, bool cannon) : base(speed, weight, bodyColor, additionalColor) - { - Hatch = hatch; - Radar = radar; - Cannon = cannon; - } - } -} diff --git a/ProjectAntiAirCraftGun/Entities/EntityTank.cs b/ProjectAntiAirCraftGun/Entities/EntityTank.cs deleted file mode 100644 index dbe6140..0000000 --- a/ProjectAntiAirCraftGun/Entities/EntityTank.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ProjectAntiAircraftGun.Entities -{ - public class EntityTank - { - /// - /// Скорость - /// - 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 double Step => (double)Speed * 100 / Weight; - /// - /// Конструктор с параметрами - /// - /// Скорость - /// Вес автомобиля - /// Основной цвет - public EntityTank(int speed, double weight, Color bodyColor, Color additionalColor) - { - Speed = speed; - Weight = weight; - BodyColor = bodyColor; - AdditionalColor = additionalColor; - } - } -} diff --git a/ProjectAntiAirCraftGun/FormAntiAircraftGun.Designer.cs b/ProjectAntiAirCraftGun/FormAntiAircraftGun.Designer.cs deleted file mode 100644 index b7c3433..0000000 --- a/ProjectAntiAirCraftGun/FormAntiAircraftGun.Designer.cs +++ /dev/null @@ -1,192 +0,0 @@ -namespace ProjectAntiAircraftGun -{ - partial class FormAntiAircraftGun - { - /// - /// 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() - { - pictureBoxAntiAircraftGun = new PictureBox(); - buttonCreateAntiAircraftGun = new Button(); - buttonRight = new Button(); - buttonLeft = new Button(); - buttonDown = new Button(); - buttonUp = new Button(); - comboBoxStrategy = new ComboBox(); - buttonCreateTank = new Button(); - buttonStep = new Button(); - buttonUpdateCollection = new Button(); - ((System.ComponentModel.ISupportInitialize)pictureBoxAntiAircraftGun).BeginInit(); - SuspendLayout(); - // - // pictureBoxAntiAircraftGun - // - pictureBoxAntiAircraftGun.Dock = DockStyle.Fill; - pictureBoxAntiAircraftGun.Location = new Point(0, 0); - pictureBoxAntiAircraftGun.Name = "pictureBoxAntiAircraftGun"; - pictureBoxAntiAircraftGun.Size = new Size(800, 450); - pictureBoxAntiAircraftGun.SizeMode = PictureBoxSizeMode.AutoSize; - pictureBoxAntiAircraftGun.TabIndex = 0; - pictureBoxAntiAircraftGun.TabStop = false; - // - // buttonCreateAntiAircraftGun - // - buttonCreateAntiAircraftGun.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; - buttonCreateAntiAircraftGun.Location = new Point(12, 415); - buttonCreateAntiAircraftGun.Name = "buttonCreateAntiAircraftGun"; - buttonCreateAntiAircraftGun.Size = new Size(174, 23); - buttonCreateAntiAircraftGun.TabIndex = 1; - buttonCreateAntiAircraftGun.Text = "создать зенитную установку"; - buttonCreateAntiAircraftGun.UseVisualStyleBackColor = true; - buttonCreateAntiAircraftGun.Click += ButtonCreateAntiAircraftGun; - // - // buttonRight - // - buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - buttonRight.BackgroundImage = Properties.Resources.png_transparent_grammatical_person_paper_narration_direzione_didattica_statale_gestione_scuola_elementare_copy_print_right_arrow_miscellaneous_game_angle; - buttonRight.BackgroundImageLayout = ImageLayout.Zoom; - buttonRight.Location = new Point(739, 413); - buttonRight.Name = "buttonRight"; - buttonRight.Size = new Size(61, 30); - buttonRight.TabIndex = 2; - buttonRight.UseVisualStyleBackColor = true; - buttonRight.Click += ButtonMove_Click; - // - // buttonLeft - // - buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - buttonLeft.BackgroundImage = Properties.Resources.left; - buttonLeft.BackgroundImageLayout = ImageLayout.Zoom; - buttonLeft.Location = new Point(605, 413); - buttonLeft.Name = "buttonLeft"; - buttonLeft.Size = new Size(61, 30); - buttonLeft.TabIndex = 6; - buttonLeft.UseVisualStyleBackColor = true; - buttonLeft.Click += ButtonMove_Click; - // - // buttonDown - // - buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - buttonDown.BackgroundImage = Properties.Resources.bottom; - buttonDown.BackgroundImageLayout = ImageLayout.Zoom; - buttonDown.Location = new Point(672, 415); - buttonDown.Name = "buttonDown"; - buttonDown.Size = new Size(61, 30); - buttonDown.TabIndex = 7; - buttonDown.UseVisualStyleBackColor = true; - buttonDown.Click += ButtonMove_Click; - // - // buttonUp - // - buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; - buttonUp.BackgroundImage = Properties.Resources.top; - buttonUp.BackgroundImageLayout = ImageLayout.Zoom; - buttonUp.Location = new Point(672, 379); - buttonUp.Name = "buttonUp"; - buttonUp.Size = new Size(61, 30); - buttonUp.TabIndex = 8; - buttonUp.UseVisualStyleBackColor = true; - buttonUp.Click += ButtonMove_Click; - // - // comboBoxStrategy - // - comboBoxStrategy.Anchor = AnchorStyles.Top | AnchorStyles.Right; - comboBoxStrategy.DropDownStyle = ComboBoxStyle.DropDownList; - comboBoxStrategy.FormattingEnabled = true; - comboBoxStrategy.Items.AddRange(new object[] { "0", "1" }); - comboBoxStrategy.Location = new Point(679, 0); - comboBoxStrategy.Name = "comboBoxStrategy"; - comboBoxStrategy.Size = new Size(121, 23); - comboBoxStrategy.TabIndex = 9; - // - // buttonCreateTank - // - buttonCreateTank.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; - buttonCreateTank.Location = new Point(192, 415); - buttonCreateTank.Name = "buttonCreateTank"; - buttonCreateTank.Size = new Size(108, 23); - buttonCreateTank.TabIndex = 10; - buttonCreateTank.Text = "создать танк"; - buttonCreateTank.UseVisualStyleBackColor = true; - buttonCreateTank.Click += ButtonCreateTank_Click; - // - // buttonStep - // - buttonStep.Anchor = AnchorStyles.Top | AnchorStyles.Right; - buttonStep.Location = new Point(704, 29); - buttonStep.Name = "buttonStep"; - buttonStep.Size = new Size(75, 23); - buttonStep.TabIndex = 11; - buttonStep.Text = "шаг"; - buttonStep.UseVisualStyleBackColor = true; - buttonStep.Click += ButtonStep_Click; - // - // buttonUpdateCollection - // - buttonUpdateCollection.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; - buttonUpdateCollection.Location = new Point(306, 413); - buttonUpdateCollection.Name = "buttonUpdateCollection"; - buttonUpdateCollection.Size = new Size(137, 23); - buttonUpdateCollection.TabIndex = 12; - buttonUpdateCollection.Text = "обновить коллекцию"; - buttonUpdateCollection.UseVisualStyleBackColor = true; - buttonUpdateCollection.Click += ButtonSelectCar_Click; - // - // FormAntiAircraftGun - // - AutoScaleDimensions = new SizeF(7F, 15F); - AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(800, 450); - Controls.Add(buttonUpdateCollection); - Controls.Add(buttonStep); - Controls.Add(buttonCreateTank); - Controls.Add(comboBoxStrategy); - Controls.Add(buttonUp); - Controls.Add(buttonDown); - Controls.Add(buttonLeft); - Controls.Add(buttonRight); - Controls.Add(buttonCreateAntiAircraftGun); - Controls.Add(pictureBoxAntiAircraftGun); - Name = "FormAntiAircraftGun"; - Text = "Зенитная установка"; - ((System.ComponentModel.ISupportInitialize)pictureBoxAntiAircraftGun).EndInit(); - ResumeLayout(false); - PerformLayout(); - } - - #endregion - - private PictureBox pictureBoxAntiAircraftGun; - private Button buttonCreateAntiAircraftGun; - private Button buttonRight; - private Button buttonLeft; - private Button buttonDown; - private Button buttonUp; - private Button buttonCreateTank; - private Button buttonStep; - private ComboBox comboBoxStrategy; - private Button buttonUpdateCollection; - } -} \ No newline at end of file diff --git a/ProjectAntiAirCraftGun/FormAntiAircraftGun.cs b/ProjectAntiAirCraftGun/FormAntiAircraftGun.cs deleted file mode 100644 index 5b07762..0000000 --- a/ProjectAntiAirCraftGun/FormAntiAircraftGun.cs +++ /dev/null @@ -1,187 +0,0 @@ -using ProjectAntiAircraftGun.DrawingObjects; -using ProjectAntiAircraftGun.MovementStrategy; -using ProjectAntiAircraftGun.MovementStrategy; - -namespace ProjectAntiAircraftGun -{ - /// - /// " " - /// - public partial class FormAntiAircraftGun : Form - { - /// - /// - - /// - private DrawingTank? _drawingTank; - /// - /// - /// - private AbstractStrategy? _abstractStrategy; - - public DrawingTank? SelectedTank { get; private set; } - - /// - /// - /// - public FormAntiAircraftGun() - { - InitializeComponent(); - _abstractStrategy = null; - SelectedTank = null; - } - - /// - /// - /// - private void Draw() - { - if (_drawingTank == null) - { - return; - } - Bitmap bmp = new(pictureBoxAntiAircraftGun.Width, - pictureBoxAntiAircraftGun.Height); - Graphics gr = Graphics.FromImage(bmp); - _drawingTank.DrawTransport(gr); - pictureBoxAntiAircraftGun.Image = bmp; - } - - /// - /// " " - /// - /// - /// - private void ButtonCreateTank_Click(object sender, EventArgs e) - { - Random random = new(); - Color color = Color.FromArgb(random.Next(0, 256), - random.Next(0, 256), random.Next(0, 256)); - ColorDialog dialog = new(); - if (dialog.ShowDialog() == DialogResult.OK) - { - color = dialog.Color; - } - - Color dopColor = Color.FromArgb(random.Next(0, 256), - random.Next(0, 256), random.Next(0, 256)); - _drawingTank = new DrawingTank(random.Next(100, 300), - random.Next(1000, 3000), - color, dopColor, - pictureBoxAntiAircraftGun.Width, pictureBoxAntiAircraftGun.Height); - _drawingTank.SetPosition(random.Next(10, 100), random.Next(10, - 100)); - Draw(); - } - - /// - /// " " - /// - /// - /// - private void ButtonCreateAntiAircraftGun(object sender, EventArgs e) - { - ColorDialog dialogCoreColor = new ColorDialog(); - - Random random = new(); - Color color = Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)); - if (dialogCoreColor.ShowDialog() == DialogResult.OK) { color = dialogCoreColor.Color; } - - ColorDialog dialogSatelliteColor = new ColorDialog(); - - Color dopColor = Color.FromArgb(random.Next(0, 256), - random.Next(0, 256), random.Next(0, 256)); - if (dialogSatelliteColor.ShowDialog() == DialogResult.OK) { dopColor = dialogSatelliteColor.Color; } - - - _drawingTank = new DrawingAntiAircraftGun(random.Next(100, 300), - random.Next(1000, 3000),color,dopColor, - Convert.ToBoolean(random.Next(0, 2)), - Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)), - pictureBoxAntiAircraftGun.Width, pictureBoxAntiAircraftGun.Height); - _drawingTank.SetPosition(random.Next(10, 100), random.Next(10, - 100)); - Draw(); - - } - - /// - /// - /// - /// - /// - private void ButtonMove_Click(object sender, EventArgs e) - { - if (_drawingTank == null) return; - - string name = ((Button)sender)?.Name ?? string.Empty; - switch (name) - { - case "buttonUp": - _drawingTank.MoveTransport(DirectionType.Up); - break; - case "buttonDown": - _drawingTank.MoveTransport(DirectionType.Down); - break; - case "buttonLeft": - _drawingTank.MoveTransport(DirectionType.Left); - break; - case "buttonRight": - _drawingTank.MoveTransport(DirectionType.Right); - break; - } - Draw(); - } - - /// - /// "" - /// - /// - /// - private void ButtonStep_Click(object sender, EventArgs e) - { - if (_drawingTank == null) - { - return; - } - if (comboBoxStrategy.Enabled) - { - _abstractStrategy = comboBoxStrategy.SelectedIndex - switch - { - 0 => new MoveToCenter(), - 1 => new MoveToBorder(), - _ => null, - }; - if (_abstractStrategy == null) - { - return; - } - _abstractStrategy.SetData(new - DrawingObjectTank(_drawingTank), pictureBoxAntiAircraftGun.Width, - pictureBoxAntiAircraftGun.Height); - comboBoxStrategy.Enabled = false; - } - if (_abstractStrategy == null) - { - return; - } - _abstractStrategy.MakeStep(); - Draw(); - if (_abstractStrategy.GetStatus() == Status.Finish) - { - comboBoxStrategy.Enabled = true; - _abstractStrategy = null; - } - } - /// - /// - /// - /// - /// - private void ButtonSelectCar_Click(object sender, EventArgs e) - { - SelectedTank = _drawingTank; - DialogResult = DialogResult.OK; - } - } -} \ No newline at end of file diff --git a/ProjectAntiAirCraftGun/FormAntiAircraftGun.resx b/ProjectAntiAirCraftGun/FormAntiAircraftGun.resx deleted file mode 100644 index af32865..0000000 --- a/ProjectAntiAirCraftGun/FormAntiAircraftGun.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 diff --git a/ProjectAntiAirCraftGun/FormTankCollection.Designer.cs b/ProjectAntiAirCraftGun/FormTankCollection.Designer.cs deleted file mode 100644 index ae6ec53..0000000 --- a/ProjectAntiAirCraftGun/FormTankCollection.Designer.cs +++ /dev/null @@ -1,123 +0,0 @@ -namespace ProjectAntiAircraftGun -{ - partial class FormTankCollection - { - /// - /// 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() - { - pictureBoxCollection = new PictureBox(); - maskedTextBoxNumber = new MaskedTextBox(); - groupBoxInstruments = new GroupBox(); - buttonUpdateCollection = new Button(); - buttonDeleteTank = new Button(); - buttonAddTank = new Button(); - ((System.ComponentModel.ISupportInitialize)pictureBoxCollection).BeginInit(); - groupBoxInstruments.SuspendLayout(); - SuspendLayout(); - // - // pictureBoxCollection - // - pictureBoxCollection.Location = new Point(0, 0); - pictureBoxCollection.Name = "pictureBoxCollection"; - pictureBoxCollection.Size = new Size(647, 455); - pictureBoxCollection.TabIndex = 0; - pictureBoxCollection.TabStop = false; - // - // maskedTextBoxNumber - // - maskedTextBoxNumber.Location = new Point(24, 104); - maskedTextBoxNumber.Name = "maskedTextBoxNumber"; - maskedTextBoxNumber.Size = new Size(100, 23); - maskedTextBoxNumber.TabIndex = 1; - // - // groupBoxInstruments - // - groupBoxInstruments.Controls.Add(buttonUpdateCollection); - groupBoxInstruments.Controls.Add(buttonDeleteTank); - groupBoxInstruments.Controls.Add(buttonAddTank); - groupBoxInstruments.Controls.Add(maskedTextBoxNumber); - groupBoxInstruments.Location = new Point(644, 0); - groupBoxInstruments.Name = "groupBoxInstruments"; - groupBoxInstruments.Size = new Size(158, 455); - groupBoxInstruments.TabIndex = 2; - groupBoxInstruments.TabStop = false; - groupBoxInstruments.Text = "Инструменты"; - // - // buttonUpdateCollection - // - buttonUpdateCollection.Location = new Point(24, 252); - buttonUpdateCollection.Name = "buttonUpdateCollection"; - buttonUpdateCollection.Size = new Size(100, 23); - buttonUpdateCollection.TabIndex = 4; - buttonUpdateCollection.Text = "Обновить коллекцию"; - buttonUpdateCollection.UseVisualStyleBackColor = true; - buttonUpdateCollection.Click += ButtonRefreshCollection_Click; - // - // buttonDeleteTank - // - buttonDeleteTank.Location = new Point(24, 182); - buttonDeleteTank.Name = "buttonDeleteTank"; - buttonDeleteTank.Size = new Size(100, 23); - buttonDeleteTank.TabIndex = 3; - buttonDeleteTank.Text = "Удалить танк"; - buttonDeleteTank.UseVisualStyleBackColor = true; - buttonDeleteTank.Click += ButtonRemoveTank_Click; - // - // buttonAddTank - // - buttonAddTank.Location = new Point(24, 52); - buttonAddTank.Name = "buttonAddTank"; - buttonAddTank.Size = new Size(100, 23); - buttonAddTank.TabIndex = 2; - buttonAddTank.Text = "Добавить танк"; - buttonAddTank.UseVisualStyleBackColor = true; - buttonAddTank.Click += ButtonAddTank_Click; - // - // FormTankCollection - // - AutoScaleDimensions = new SizeF(7F, 15F); - AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(800, 450); - Controls.Add(groupBoxInstruments); - Controls.Add(pictureBoxCollection); - Name = "FormTankCollection"; - Text = "Набор танков"; - ((System.ComponentModel.ISupportInitialize)pictureBoxCollection).EndInit(); - groupBoxInstruments.ResumeLayout(false); - groupBoxInstruments.PerformLayout(); - ResumeLayout(false); - } - - #endregion - - private PictureBox pictureBoxCollection; - private MaskedTextBox maskedTextBoxNumber; - private GroupBox groupBoxInstruments; - private Button buttonUpdateCollection; - private Button buttonDeleteTank; - private Button buttonAddTank; - } -} \ No newline at end of file diff --git a/ProjectAntiAirCraftGun/FormTankCollection.cs b/ProjectAntiAirCraftGun/FormTankCollection.cs deleted file mode 100644 index 2e0ee5e..0000000 --- a/ProjectAntiAirCraftGun/FormTankCollection.cs +++ /dev/null @@ -1,83 +0,0 @@ -using ProjectAntiAircraftGun; -using ProjectAntiAircraftGun.DrawingObjects; -using ProjectAntiAircraftGun.Generics; -using ProjectAntiAircraftGun.MovementStrategy; - -namespace ProjectAntiAircraftGun -{ - /// - /// Форма для работы с набором объектов класса DrawningTank - /// - public partial class FormTankCollection : Form - { - /// - /// Набор объектов - /// - private readonly TanksGenericCollection _tanks; - /// - /// Конструктор - /// - public FormTankCollection() - { - InitializeComponent(); - _tanks = new TanksGenericCollection(pictureBoxCollection.Width, pictureBoxCollection.Height); - } - /// - /// Добавление объекта в набор - /// - /// - /// - private void ButtonAddTank_Click(object sender, EventArgs e) - { - FormAntiAircraftGun form = new(); - - if (form.ShowDialog() == DialogResult.OK) - { - if (_tanks + form.SelectedTank != -1) - { - MessageBox.Show("Объект добавлен"); - pictureBoxCollection.Image = _tanks.ShowTanks(); - } - else - { - MessageBox.Show("Не удалось добавить объект"); - } - } - } - /// - /// Удаление объекта из набора - /// - /// - /// - private void ButtonRemoveTank_Click(object sender, EventArgs e) - { - if (MessageBox.Show("Удалить объект?", "Удаление", - MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) - { - return; - } - int pos = Convert.ToInt32(maskedTextBoxNumber.Text); - if ((_tanks - pos)) - { - MessageBox.Show("Объект удален"); - pictureBoxCollection.Image = _tanks.ShowTanks(); - } - else - { - MessageBox.Show("Не удалось удалить объект"); - } - } - /// - /// Обновление рисунка по набору - /// - /// - /// - private void ButtonRefreshCollection_Click(object sender, EventArgs - e) - { - pictureBoxCollection.Image = _tanks.ShowTanks(); - } - } -} - diff --git a/ProjectAntiAirCraftGun/FormTankCollection.resx b/ProjectAntiAirCraftGun/FormTankCollection.resx deleted file mode 100644 index f298a7b..0000000 --- a/ProjectAntiAirCraftGun/FormTankCollection.resx +++ /dev/null @@ -1,60 +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 diff --git a/ProjectAntiAirCraftGun/Generics/SetGeneric.cs b/ProjectAntiAirCraftGun/Generics/SetGeneric.cs deleted file mode 100644 index c9df124..0000000 --- a/ProjectAntiAirCraftGun/Generics/SetGeneric.cs +++ /dev/null @@ -1,98 +0,0 @@ -using ProjectAntiAircraftGun.Entities; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ProjectAntiAircraftGun.Generics -{ - /// - /// Параметризованный набор объектов - /// - /// - internal class SetGeneric - where T : class - { - /// - /// Массив объектов, которые храним - /// - private readonly T?[] _places; - /// - /// Количество объектов в массиве - /// - public int Count => _places.Length; - /// - /// Конструктор - /// - /// - public SetGeneric(int count) - { - _places = new T?[count]; - } - /// - /// Добавление объекта в набор - /// - /// Добавляемый танк - /// - public int Insert(T tank) - { - if (_places[0] == null) - { - _places[0] = tank; - return 0; - } - return Insert(tank, 0); - } - /// - /// Добавление объекта в набор на конкретную позицию - /// - /// Добавляемый танк - /// Позиция - /// - public int Insert(T tank, int position) - { - if (position >= 0 && position < Count) - { - - if (_places[position] == null) - { - _places[position] = tank; - return position; - } - else - { - for (var i = Count - 1; i > position; --i) - { - _places[i] = _places[i - 1]; - } - } - _places[position] = tank; - return position; - } - return -1; - } - /// - /// Удаление объекта из набора с конкретной позиции - /// - /// - /// - public bool Remove(int position) - { - - if (position >= 0 && position < Count) _places[position] = null; - return true; - } - /// - /// Получение объекта из набора по позиции - /// - /// - /// - public T? Get(int position) - { - if (position >= 0 && position < Count) - return _places[position]; - return null; - } - } -} diff --git a/ProjectAntiAirCraftGun/Generics/TanksGenericCollection.cs b/ProjectAntiAirCraftGun/Generics/TanksGenericCollection.cs deleted file mode 100644 index 28712d2..0000000 --- a/ProjectAntiAirCraftGun/Generics/TanksGenericCollection.cs +++ /dev/null @@ -1,145 +0,0 @@ -using ProjectAntiAircraftGun.DrawingObjects; -using ProjectAntiAircraftGun.Entities; -using ProjectAntiAircraftGun.MovementStrategy; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ProjectAntiAircraftGun.Generics -{ - /// - /// Параметризованный класс для набора объектов DrawningCar - /// - /// - /// - internal class TanksGenericCollection - where T : DrawingTank - where U : IMoveableObject - { - /// - /// Ширина окна прорисовки - /// - private readonly int _pictureWidth; - /// - /// Высота окна прорисовки - /// - private readonly int _pictureHeight; - /// - /// Размер занимаемого объектом места (ширина) - /// - private readonly int _placeSizeWidth = 130; - /// - /// Размер занимаемого объектом места (высота) - /// - private readonly int _placeSizeHeight = 102; - /// - /// Набор объектов - /// - private readonly SetGeneric _collection; - /// - /// Конструктор - /// - /// - /// - public TanksGenericCollection(int picWidth, int picHeight) - { - int width = picWidth / _placeSizeWidth; - int height = picHeight / _placeSizeHeight; - _pictureWidth = picWidth; - _pictureHeight = picHeight; - _collection = new SetGeneric(width * height); - } - /// - /// Перегрузка оператора сложения - /// - /// - /// - /// - public static int operator +(TanksGenericCollection collect, T? obj) - { - if (obj == null) - { - return -1; - } - return collect._collection.Insert(obj); - } - /// - /// Перегрузка оператора вычитания - /// - /// - /// - /// - public static bool operator -(TanksGenericCollection collect, int - pos) - { - T? obj = collect._collection.Get(pos); - if (obj != null) - { - collect._collection.Remove(pos); - return true; - } - return false; - } - /// - /// Получение объекта IMoveableObject - /// - /// - /// - public U? GetU(int pos) - { - return (U?)_collection.Get(pos)?.GetMoveableObject; - } - /// - /// Вывод всего набора объектов - /// - /// - public Bitmap ShowTanks() - { - Bitmap bmp = new(_pictureWidth, _pictureHeight); - Graphics gr = Graphics.FromImage(bmp); - DrawBackground(gr); - DrawObjects(gr); - return bmp; - } - /// - /// Метод отрисовки фона - /// - /// - private void DrawBackground(Graphics g) - { - Pen pen = new(Color.Black, 3); - for (int i = 0; i < _pictureWidth / _placeSizeWidth; i++) - { - for (int j = 0; j < _pictureHeight / _placeSizeHeight + - 1; ++j) - {//линия рамзетки места - g.DrawLine(pen, i * _placeSizeWidth, j * - _placeSizeHeight, i * _placeSizeWidth + _placeSizeWidth / 2, j * - _placeSizeHeight); - } - g.DrawLine(pen, i * _placeSizeWidth, 0, i * - _placeSizeWidth, _pictureHeight / _placeSizeHeight * _placeSizeHeight); - } - } - /// - /// Метод прорисовки объектов - /// - /// - private void DrawObjects(Graphics g) - { - for (int i = 0; i < _collection.Count; i++) - { - T? tank = _collection.Get(i); - if (tank != null) { - int x = (i) % (_pictureWidth / _placeSizeWidth) * _placeSizeWidth; - int y = (i) / (_pictureHeight / _placeSizeHeight) * _placeSizeHeight; - tank.SetPosition(x, y); - tank.DrawTransport(g); - } - } - } - } - -} diff --git a/ProjectAntiAirCraftGun/MovementStrategy/AbstractStrategy.cs b/ProjectAntiAirCraftGun/MovementStrategy/AbstractStrategy.cs deleted file mode 100644 index e17afd3..0000000 --- a/ProjectAntiAirCraftGun/MovementStrategy/AbstractStrategy.cs +++ /dev/null @@ -1,131 +0,0 @@ -using ProjectAntiAircraftGun; -using static System.Windows.Forms.AxHost; -using static System.Windows.Forms.VisualStyles.VisualStyleElement; - -namespace ProjectAntiAircraftGun.MovementStrategy -{ - /// - /// Класс-стратегия перемещения объекта - /// - public abstract class AbstractStrategy - { - /// - /// Перемещаемый объект - /// - private IMoveableObject? _moveableObject; - /// - /// Статус перемещения - /// - private Status _state = Status.NotInit; - /// - /// Ширина поля - /// - protected int FieldWidth { get; private set; } - /// - /// Высота поля - /// - protected int FieldHeight { get; private set; } - /// - /// Статус перемещения - /// - public Status GetStatus() { return _state; } - /// - /// Установка данных - /// - /// Перемещаемый объект - /// Ширина поля - /// Высота поля - public void SetData(IMoveableObject moveableObject, int width, int - height) - { - if (moveableObject == null) - { - _state = Status.NotInit; - return; - } - _state = Status.InProgress; - _moveableObject = moveableObject; - FieldWidth = width; - FieldHeight = height; - } - /// - /// Шаг перемещения - /// - public void MakeStep() - { - if (_state != Status.InProgress) - { - return; - } - if (IsTargetDestination()) - { - _state = Status.Finish; - return; - } - MoveToTarget(); - } - /// - /// Перемещение влево - /// - /// Результат перемещения (true - удалось переместиться, false - неудача) - protected bool MoveLeft() => MoveTo(DirectionType.Left); - /// - /// Перемещение вправо - /// - /// Результат перемещения (true - удалось переместиться, false - неудача) - protected bool MoveRight() => MoveTo(DirectionType.Right); - /// - /// Перемещение вверх - /// - /// Результат перемещения (true - удалось переместиться,false - неудача) - protected bool MoveUp() => MoveTo(DirectionType.Up); - /// - /// Перемещение вниз - /// - /// Результат перемещения (true - удалось переместиться, false - неудача) - protected bool MoveDown() => MoveTo(DirectionType.Down); - /// - /// Параметры объекта - /// - protected ObjectParameters? GetObjectParameters => _moveableObject?.GetObjectPosition; - /// - /// Шаг объекта - /// - /// - protected int? GetStep() - { - if (_state != Status.InProgress) - { - return null; - } - return _moveableObject?.GetStep; - } - /// - /// Перемещение к цели - /// - protected abstract void MoveToTarget(); - /// - /// Достигнута ли цель - /// - /// - protected abstract bool IsTargetDestination(); - /// - /// Попытка перемещения в требуемом направлении - /// - /// Направление - /// Результат попытки (true - удалось переместиться, false - неудача) - private bool MoveTo(DirectionType directionType) - { - if (_state != Status.InProgress) - { - return false; - } - if (_moveableObject?.CheckCanMove(directionType) ?? false) - { - _moveableObject.MoveObject(directionType); - return true; - } - return false; - } - } -} \ No newline at end of file diff --git a/ProjectAntiAirCraftGun/MovementStrategy/DrawingObjectTank.cs b/ProjectAntiAirCraftGun/MovementStrategy/DrawingObjectTank.cs deleted file mode 100644 index a83fb9f..0000000 --- a/ProjectAntiAirCraftGun/MovementStrategy/DrawingObjectTank.cs +++ /dev/null @@ -1,32 +0,0 @@ -using ProjectAntiAircraftGun.DrawingObjects; -namespace ProjectAntiAircraftGun.MovementStrategy -{ - /// - /// Реализация интерфейса IDrawningObject для работы с объектом Drawing (паттерн Adapter) - - public class DrawingObjectTank : IMoveableObject - { - private readonly DrawingTank? _draningTank = null; - public DrawingObjectTank(DrawingTank drawingTank) - { - _draningTank = drawingTank; - } - public ObjectParameters? GetObjectPosition - { - get - { - if (_draningTank == null || _draningTank.EntityTank == null) - { - return null; - } - return new ObjectParameters(_draningTank.GetPosX, - _draningTank.GetPosY, _draningTank.GetWidth, _draningTank.GetHeight); - } - } - public int GetStep => (int)(_draningTank?.EntityTank?.Step ?? 0); - public bool CheckCanMove(DirectionType direction) => - _draningTank?.CanMove(direction) ?? false; - public void MoveObject(DirectionType direction) => - _draningTank?.MoveTransport(direction); - } -} diff --git a/ProjectAntiAirCraftGun/MovementStrategy/IMoveableObject.cs b/ProjectAntiAirCraftGun/MovementStrategy/IMoveableObject.cs deleted file mode 100644 index e29e723..0000000 --- a/ProjectAntiAirCraftGun/MovementStrategy/IMoveableObject.cs +++ /dev/null @@ -1,29 +0,0 @@ -using ProjectAntiAircraftGun; -namespace ProjectAntiAircraftGun.MovementStrategy -{ - /// - /// Интерфейс для работы с перемещаемым объектом - /// - public interface IMoveableObject - { - /// - /// Получение координаты X объекта - /// - ObjectParameters? GetObjectPosition { get; } - /// - /// Шаг объекта - /// - int GetStep { get; } - /// - /// Проверка, можно ли переместиться по нужному направлению - /// - /// - /// - bool CheckCanMove(DirectionType direction); - /// - /// Изменение направления пермещения объекта - /// - /// Направление - void MoveObject(DirectionType direction); - } -} \ No newline at end of file diff --git a/ProjectAntiAirCraftGun/MovementStrategy/MoveToBorder.cs b/ProjectAntiAirCraftGun/MovementStrategy/MoveToBorder.cs deleted file mode 100644 index 1feb61b..0000000 --- a/ProjectAntiAirCraftGun/MovementStrategy/MoveToBorder.cs +++ /dev/null @@ -1,60 +0,0 @@ -using ProjectAntiAircraftGun.Entities; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ProjectAntiAircraftGun.MovementStrategy -{ - /// - /// Стратегия перемещения объекта к правому нижнему краю формы - /// - public class MoveToBorder : AbstractStrategy - { - protected override bool IsTargetDestination() - { - var objParams = GetObjectParameters; - if (objParams == null) - { - return false; - } - return objParams.RightBorder <= FieldWidth && - objParams.RightBorder + GetStep() >= FieldWidth && - objParams.DownBorder <= FieldHeight && - objParams.DownBorder + GetStep() >= FieldHeight; - } - protected override void MoveToTarget() - { - var objParams = GetObjectParameters; - if (objParams == null) - { - return; - } - var diffX = objParams.RightBorder - FieldWidth; - if (Math.Abs(diffX) > GetStep()) - { - if (diffX > 0) - { - MoveLeft(); - } - else - { - MoveRight(); - } - } - var diffY = objParams.DownBorder - FieldHeight; - if (Math.Abs(diffY) > GetStep()) - { - if (diffY > 0) - { - MoveUp(); - } - else - { - MoveDown(); - } - } - } - } -} diff --git a/ProjectAntiAirCraftGun/MovementStrategy/MoveToCenter.cs b/ProjectAntiAirCraftGun/MovementStrategy/MoveToCenter.cs deleted file mode 100644 index 5d0b641..0000000 --- a/ProjectAntiAirCraftGun/MovementStrategy/MoveToCenter.cs +++ /dev/null @@ -1,60 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ProjectAntiAircraftGun.MovementStrategy -{ - /// - /// Стратегия перемещения объекта в центр экрана - /// - public class MoveToCenter : AbstractStrategy - { - protected override bool IsTargetDestination() - { - var objParams = GetObjectParameters; - if (objParams == null) - { - return false; - } - return objParams.ObjectMiddleHorizontal <= FieldWidth / 2 && - objParams.ObjectMiddleHorizontal + GetStep() >= FieldWidth / 2 && - objParams.ObjectMiddleVertical <= FieldHeight / 2 && - objParams.ObjectMiddleVertical + GetStep() >= FieldHeight / 2; - } - protected override void MoveToTarget() - { - var objParams = GetObjectParameters; - if (objParams == null) - { - return; - } - var diffX = objParams.ObjectMiddleHorizontal - FieldWidth / 2; - if (Math.Abs(diffX) > GetStep()) - { - if (diffX > 0) - { - MoveLeft(); - } - else - { - MoveRight(); - } - } - var diffY = objParams.ObjectMiddleVertical - FieldHeight / 2; - if (Math.Abs(diffY) > GetStep()) - { - if (diffY > 0) - { - MoveUp(); - } - else - { - MoveDown(); - } - } - } - } -} - diff --git a/ProjectAntiAirCraftGun/MovementStrategy/ObjectParametrs.cs b/ProjectAntiAirCraftGun/MovementStrategy/ObjectParametrs.cs deleted file mode 100644 index 2348c75..0000000 --- a/ProjectAntiAirCraftGun/MovementStrategy/ObjectParametrs.cs +++ /dev/null @@ -1,51 +0,0 @@ -namespace ProjectAntiAircraftGun.MovementStrategy -{ - /// - /// Параметры-координаты объекта - /// - public class ObjectParameters - { - private readonly int _x; - private readonly int _y; - private readonly int _width; - private readonly int _height; - /// - /// Левая граница - /// - public int LeftBorder => _x; - /// - /// Верхняя граница - /// - public int TopBorder => _y; - /// - /// Правая граница - /// - public int RightBorder => _x + _width; - /// - /// Нижняя граница - /// - public int DownBorder => _y + _height; - /// - /// Середина объекта - /// - public int ObjectMiddleHorizontal => _x + _width / 2; - /// - /// Середина объекта - /// - public int ObjectMiddleVertical => _y + _height / 2; - /// - /// Конструктор - /// - /// Координата X - /// Координата Y - /// Ширина - /// Высота - public ObjectParameters(int x, int y, int width, int height) - { - _x = x; - _y = y; - _width = width; - _height = height; - } - } -} diff --git a/ProjectAntiAirCraftGun/MovementStrategy/Status.cs b/ProjectAntiAirCraftGun/MovementStrategy/Status.cs deleted file mode 100644 index ee3877c..0000000 --- a/ProjectAntiAirCraftGun/MovementStrategy/Status.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace ProjectAntiAircraftGun.MovementStrategy -{ - /// - /// Статус выполнения операции перемещения - /// - public enum Status - { - NotInit, - InProgress, - Finish - } -} diff --git a/ProjectAntiAirCraftGun/Program.cs b/ProjectAntiAirCraftGun/Program.cs deleted file mode 100644 index ac95f11..0000000 --- a/ProjectAntiAirCraftGun/Program.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace ProjectAntiAircraftGun -{ - internal static class Program - { - /// - /// The main entry point for the application. - /// - [STAThread] - static void Main() - { - // To customize application configuration such as set high DPI settings or default font, - // see https://aka.ms/applicationconfiguration. - ApplicationConfiguration.Initialize(); - Application.Run(new FormTankCollection()); - } - } -} \ No newline at end of file diff --git a/ProjectAntiAirCraftGun/ProjectAntiAircraftGun.csproj b/ProjectAntiAirCraftGun/ProjectAntiAircraftGun.csproj deleted file mode 100644 index 13ee123..0000000 --- a/ProjectAntiAirCraftGun/ProjectAntiAircraftGun.csproj +++ /dev/null @@ -1,26 +0,0 @@ - - - - WinExe - net6.0-windows - enable - true - enable - - - - - True - True - Resources.resx - - - - - - ResXFileCodeGenerator - Resources.Designer.cs - - - - \ No newline at end of file diff --git a/ProjectAntiAirCraftGun/ProjectAntiAircraftGun.sln b/ProjectAntiAirCraftGun/ProjectAntiAircraftGun.sln deleted file mode 100644 index b7ca572..0000000 --- a/ProjectAntiAirCraftGun/ProjectAntiAircraftGun.sln +++ /dev/null @@ -1,25 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.5.33530.505 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectAntiAircraftGun", "ProjectAntiAircraftGun.csproj", "{3D00CFC0-D6DA-4872-B170-5D543632BC67}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {3D00CFC0-D6DA-4872-B170-5D543632BC67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3D00CFC0-D6DA-4872-B170-5D543632BC67}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3D00CFC0-D6DA-4872-B170-5D543632BC67}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3D00CFC0-D6DA-4872-B170-5D543632BC67}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {0F97A468-ED8E-4382-904C-8D6C96065D61} - EndGlobalSection -EndGlobal diff --git a/ProjectAntiAirCraftGun/Properties/Resources.Designer.cs b/ProjectAntiAirCraftGun/Properties/Resources.Designer.cs deleted file mode 100644 index 758a8e2..0000000 --- a/ProjectAntiAirCraftGun/Properties/Resources.Designer.cs +++ /dev/null @@ -1,145 +0,0 @@ -//------------------------------------------------------------------------------ -// -// Этот код создан программой. -// Исполняемая версия:4.0.30319.42000 -// -// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае -// повторной генерации кода. -// -//------------------------------------------------------------------------------ - -namespace ProjectAntiAircraftGun.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("ProjectAntiAircraftGun.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 bottom { - get { - object obj = ResourceManager.GetObject("bottom", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap left { - get { - object obj = ResourceManager.GetObject("left", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap png_clipart_computer_icons_uma_musume_pretty_derby_fate_grand_order_saber_kemono_friends_three_arrow_game_angle { - get { - object obj = ResourceManager.GetObject("png-clipart-computer-icons-uma-musume-pretty-derby-fate-grand-order-saber-kemono-" + - "friends-three-arrow-game-angle", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap png_transparent_arrow_arrow_cdr_angle_triangle { - get { - object obj = ResourceManager.GetObject("png-transparent-arrow-arrow-cdr-angle-triangle", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap png_transparent_arrow_left_thin_zondicons_icon { - get { - object obj = ResourceManager.GetObject("png-transparent-arrow-left-thin-zondicons-icon", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap png_transparent_grammatical_person_paper_narration_direzione_didattica_statale_gestione_scuola_elementare_copy_print_right_arrow_miscellaneous_game_angle { - get { - object obj = ResourceManager.GetObject("png-transparent-grammatical-person-paper-narration-direzione-didattica-statale-ge" + - "stione-scuola-elementare-copy-print-right-arrow-miscellaneous-game-angle", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap right { - get { - object obj = ResourceManager.GetObject("right", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - - /// - /// Поиск локализованного ресурса типа System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap top { - get { - object obj = ResourceManager.GetObject("top", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - } -} diff --git a/ProjectAntiAirCraftGun/Properties/Resources.resx b/ProjectAntiAirCraftGun/Properties/Resources.resx deleted file mode 100644 index 4f804e0..0000000 --- a/ProjectAntiAirCraftGun/Properties/Resources.resx +++ /dev/null @@ -1,145 +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 - - - - ..\Resources\png-transparent-arrow-arrow-cdr-angle-triangle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\png-clipart-computer-icons-uma-musume-pretty-derby-fate-grand-order-saber-kemono-friends-three-arrow-game-angle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\png-transparent-grammatical-person-paper-narration-direzione-didattica-statale-gestione-scuola-elementare-copy-print-right-arrow-miscellaneous-game-angle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\png-transparent-arrow-left-thin-zondicons-icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\bottom.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\left.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\right.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\top.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - \ No newline at end of file diff --git a/ProjectAntiAirCraftGun/Resources/bottom.png b/ProjectAntiAirCraftGun/Resources/bottom.png deleted file mode 100644 index 2228e2f2325dbfa2bb565621716f72fc991edbab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2881 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 diff --git a/ProjectAntiAirCraftGun/Resources/png-clipart-computer-icons-uma-musume-pretty-derby-fate-grand-order-saber-kemono-friends-three-arrow-game-angle.png b/ProjectAntiAirCraftGun/Resources/png-clipart-computer-icons-uma-musume-pretty-derby-fate-grand-order-saber-kemono-friends-three-arrow-game-angle.png deleted file mode 100644 index 32b8866fc857f7a26d8e6560cf4e71da7b2ffb7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2939 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 F{{;<%GOPdq diff --git a/ProjectAntiAirCraftGun/Resources/png-transparent-arrow-left-thin-zondicons-icon.png b/ProjectAntiAirCraftGun/Resources/png-transparent-arrow-left-thin-zondicons-icon.png deleted file mode 100644 index 8d65f1d82eabd6132028e2261e8ad130a5f031d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4573 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 EU*8IyivR!s diff --git a/ProjectAntiAirCraftGun/Resources/png-transparent-grammatical-person-paper-narration-direzione-didattica-statale-gestione-scuola-elementare-copy-print-right-arrow-miscellaneous-game-angle.png b/ProjectAntiAirCraftGun/Resources/png-transparent-grammatical-person-paper-narration-direzione-didattica-statale-gestione-scuola-elementare-copy-print-right-arrow-miscellaneous-game-angle.png deleted file mode 100644 index c54d1d7a7365250b5a4e5dae97e6a0ce60aae107..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2404 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 diff --git a/ProjectAntiAirCraftGun/Resources/top.png b/ProjectAntiAirCraftGun/Resources/top.png deleted file mode 100644 index 29abf7e4b00592f85c1fd5c2c876cf43eaeeb8a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3141 zcmd5;eNYo;8h>^-$r1@BP`(rpw4!`9MwEi5!qP}Z@FOaMCC z6R5!;T8WAl5doPwf5kbWqwFp)NI!Gij>@A&frgiwknVXxro!NPx=QsPl zzvulu&(8e*Az8W9Y|_+80ARK(aLF0~lnJqX7RD^AEkoBb3lhI(=_gRuYCpgvtgZel z`~faxo4)ys&E$N^@{oYOzCN0!nM@{=H8eDsQrFHg30E2z9uF|NVf;mI#1?M>Fs)y< z#6Kjl`}spzT(6Jd`oCSOa8WuIeU*L7tf|#_`=a@--XmSCtn=lebdT|`kDHfUFSgoq z`RL4~Lp2XAPbryW$#4iyc!|W1$A5bASvevB@+Sy@YCr8^oAC|^(OlwR1nXTiSXmkE zG=Bd-KBO~nG4nqn#6v{)5IcNursM?WdA zMw0yUIZ~U!6_~wRcj`0Hjd7*bJdOBRBssZu{&2 zV-%##g*~IDlpWST)>F?*zXiiI=5rL4j?r`36*MQ>h2`|){fv4!CMeiE56c}Kp}WkF zApP}hpFN+0@Dcj@TPw0bXW*wzw*w;|zH2ohY1c42FgPLyzvYtIj);oI=%PpTm!dl!R4PK9=T%P{x&ThR^bPF(!_OE|?AZM_$g$ebkvEkQ z8`<~fuzYs^6IIV)4V_0l9@1N=`Y5r2fFs98>FC(@y|b7ao=s<%PTc-|9G=M06-(F?(#L=Hx- zWwv7D1%kSc-Z*6^M-_z#IN}zF2!(xDCGN1_%fNS7?G8paD8vbC*M+f{cG0OjW1K2q zno@;!h*X&eb>`%*=VSF8aWkUtfI2SuP;Y#Mi))b)JJ=#BveU>g@{t!*#L%9$Ys}hW zQJ=4#BEq9k#B<~L?7UCUw{7RO#j=LFk!r2nEiDNdIg0Fx5jm4HS3G$xWa8Mo*|J<$ zzde^^^rgZR64SP&FqDZzWEuAto@kp?k&Q}2O*OtJA+ZX6@G;OHX+elS5H`6IS^G)X zQ!7bvsWEtI(PYiysg!Y=gd>QhbystQq-+UH;SHd#GfV_MZk?RAYY*xbS7$FT}og(2tjX z2WoUI*z^IBX_O!K_X3#(lyjT{xV$MNYstA>e8vldYC)J83}~THOSb11maa0e$vM@m^sKM2gtI#N!h_#!CLix1P7W3vc=cn1-nid${T#{{qt0$7 z6|%NtJ0c*w@d*C-p8PQubP62~2W>rhfAAmR#%N1*lOMO)d^N5j!PH$YoSHP&wQAf6) z2LlRqv&d}Jkex&fd`h+|18-qL-l(O^-szp&A>|0K3M^gsPS1my8P1|DrI@NwOex|W z;O{}vfmWdHJrGljXf&p?P}1YB?k;@FC~#jbwWZT$_fTd6tP;CNr8UI4(cq zEnO+ZKqz_AS@d{=Ev0O|`#YI%@AMd?NA`jjfTWD>T%<~{BVJh8#(iWWso)pPQ(!LL zc#A7XQ&NM~al~v$aaa(G=9F$b_&6+NH@?p^ z--hZuyjE$YDq#j&=uX5i<@(w-ztl)!<0a2rYd2& zkYh%59$ClGBE^-=lpF!K6sE{NvfT;4EQc^i{U;WTfrFI@$+jS)(#R-i)#E$Ph-3|;M=ZC;VfVOvrno|gx5eYH!%{oC`w3B3HgY8EQ1SH|sAV?J6_N#v4njAwc471jo*ie@%dufte#!og8I-t8wyKn0@JlcFo57_HJM1XYYktWLRz;-}18Ldko~89=ZA9i@VU#?$5m7LoRinks zbTxboEqr9{%G-52R$BXAyt$qE^;a?C^E7uJA*=WkB>co4OUC(Xma3iaf+cIwm zbOGbGBZWO=1>~F2Zf~Vu{c=n&8Zfq-`;KuS=R)`dF2{o0H<2CLa&-ci0~Qn75%vTw z2ML_eJ6TWQa#&8EP2`>a--{(OZ=dhAcq_7q>vX{Ke065@~#OdJo rS3(%`-fgQ@ym#CF>tb*HdSB~zY;$0ef@{$@F3hrkl}pM#iT?UO%4r74 diff --git a/README.md b/README.md new file mode 100644 index 0000000..e69de29