From 094cb0cbabe126b9da7c7e7796bbd2401339c88e Mon Sep 17 00:00:00 2001 From: victinass Date: Sat, 3 Feb 2024 20:47:38 +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 --- Battleship/Battleship/Battleship.csproj | 15 ++ Battleship/Battleship/DirectionType.cs | 27 ++ Battleship/Battleship/DrawingBattleship.cs | 250 ++++++++++++++++++ Battleship/Battleship/EntityBattleship.cs | 63 +++++ Battleship/Battleship/Form1.Designer.cs | 39 --- Battleship/Battleship/Form1.cs | 10 - .../Battleship/FormBattleship.Designer.cs | 134 ++++++++++ Battleship/Battleship/FormBattleship.cs | 79 ++++++ Battleship/Battleship/FormBattleship.resx | 211 +++++++++++++++ Battleship/Battleship/Program.cs | 2 +- .../Properties/Resources.Designer.cs | 93 +++++++ .../{Form1.resx => Properties/Resources.resx} | 10 + Battleship/Battleship/Resources/arrowDown.png | Bin 0 -> 4866 bytes Battleship/Battleship/Resources/arrowLeft.png | Bin 0 -> 3859 bytes .../Battleship/Resources/arrowRight.png | Bin 0 -> 3986 bytes 15 files changed, 883 insertions(+), 50 deletions(-) create mode 100644 Battleship/Battleship/DirectionType.cs create mode 100644 Battleship/Battleship/DrawingBattleship.cs create mode 100644 Battleship/Battleship/EntityBattleship.cs delete mode 100644 Battleship/Battleship/Form1.Designer.cs delete mode 100644 Battleship/Battleship/Form1.cs create mode 100644 Battleship/Battleship/FormBattleship.Designer.cs create mode 100644 Battleship/Battleship/FormBattleship.cs create mode 100644 Battleship/Battleship/FormBattleship.resx create mode 100644 Battleship/Battleship/Properties/Resources.Designer.cs rename Battleship/Battleship/{Form1.resx => Properties/Resources.resx} (86%) create mode 100644 Battleship/Battleship/Resources/arrowDown.png create mode 100644 Battleship/Battleship/Resources/arrowLeft.png create mode 100644 Battleship/Battleship/Resources/arrowRight.png diff --git a/Battleship/Battleship/Battleship.csproj b/Battleship/Battleship/Battleship.csproj index 663fdb8..af03d74 100644 --- a/Battleship/Battleship/Battleship.csproj +++ b/Battleship/Battleship/Battleship.csproj @@ -8,4 +8,19 @@ enable + + + True + True + Resources.resx + + + + + + ResXFileCodeGenerator + Resources.Designer.cs + + + \ No newline at end of file diff --git a/Battleship/Battleship/DirectionType.cs b/Battleship/Battleship/DirectionType.cs new file mode 100644 index 0000000..7a4b742 --- /dev/null +++ b/Battleship/Battleship/DirectionType.cs @@ -0,0 +1,27 @@ +namespace Battleship; +/// +/// +/// +public enum DirectionType +{ + /// + /// Вверх + /// + Up = 1, + + /// + /// Вниз + /// + Down = 2, + + /// + /// Влево + /// + Left = 3, + + /// + /// Вправо + /// + Right = 4 + +} diff --git a/Battleship/Battleship/DrawingBattleship.cs b/Battleship/Battleship/DrawingBattleship.cs new file mode 100644 index 0000000..ab9bcb5 --- /dev/null +++ b/Battleship/Battleship/DrawingBattleship.cs @@ -0,0 +1,250 @@ +namespace Battleship; +/// +/// Класс, отвечающий за отрисовку и перемещение объекта-сущности +/// +public class DrawingBattleship +{ + + /// + /// Класс-сущность + /// + public EntityBattleship? EntityBattleship { get; private set; } + + /// + /// Ширина + /// + private int? _pictureWidth; + + /// + /// Высота + /// + private int? _pictureHeight; + + /// + /// Левая координата прорисовки линкора + /// + private int? _startPosX; + + /// + /// Верхняя координата прорисовки линкора + /// + private int? _startPosY; + + /// + /// Ширина прорисовки линкора + /// + private readonly int _drawingBattleshipWidth = 120; + + /// + /// Высота прорисовки линкора + /// + private readonly int _drawingBattleshipHeight = 80; + + /// + /// + /// + /// Скорость + /// Вес + /// Основной цвет + /// Дополнительный цвет + /// Признак наличия палубы + /// Признак наличия отсека для ракет + /// Признак наличия башни + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool bodyDeck, bool compartment, bool tower) + { + EntityBattleship = new EntityBattleship(); + EntityBattleship.Init(speed, weight, bodyColor, additionalColor, bodyDeck, compartment, tower); + _pictureWidth = null; + _pictureHeight = null; + _startPosX = null; + _startPosY = null; + } + + + /// + /// + /// + /// Ширина поля + /// Высота поля + /// true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах + + public bool SetPictureSize(int width, int height) + { + //TODO проверка, что объект "влезает" в размеры поля + //если влезает, сохраняем границы и корректируем позицию объекта, если она уже была установлена + _pictureWidth = width; + _pictureHeight = height; + if (_pictureWidth <= _drawingBattleshipWidth || _pictureHeight <= _drawingBattleshipHeight) + { + _pictureHeight = null; + _pictureWidth = null; + return false; + } + if (_startPosX + _drawingBattleshipWidth > _pictureWidth) + { + _startPosX = _pictureWidth.Value - _drawingBattleshipWidth; + } + if (_startPosY + _drawingBattleshipHeight > _pictureHeight) + { + _startPosY = _pictureHeight.Value - _drawingBattleshipHeight; + } + return true; + } + + /// + /// Установка позиции + /// + /// Координата X + /// Координата Y + + public void SetPosition(int x, int y, int width, int height) + { + // TODO если при установке объекта в эти координаты, он будет "выходить" за границы формы + // то надо изменить координаты, чтобы он оставался в этих границах + if (x >= 0 && x + _drawingBattleshipWidth <= width && y >= 0 && y + _drawingBattleshipWidth <= height) + { + _startPosX = x; + _startPosY = y; + _pictureWidth = width; + _pictureHeight = height; + } + + } + + /// + /// Изменение направления перемещения + /// + /// Направление + /// true - перемещение выполнено, false - перемещение невозможно + + public bool MoveTransport(DirectionType direction) + { + if (EntityBattleship == null || !_startPosX.HasValue || !_startPosY.HasValue) + { + return false; + } + + switch (direction) + { + //влево + case DirectionType.Left: + if (_startPosX.Value - EntityBattleship.Step > 0) + { + _startPosX -= (int)EntityBattleship.Step; + } + return true; + + //вправо + case DirectionType.Right: + if (_startPosX.Value + EntityBattleship.Step + _drawingBattleshipWidth < _pictureWidth) + { + _startPosX += (int)EntityBattleship.Step; + } + return true; + + //вверх + case DirectionType.Up: + if (_startPosY.Value - EntityBattleship.Step > 0) + { + _startPosY -= (int)EntityBattleship.Step; + } + return true; + + //вниз + case DirectionType.Down: + if (_startPosY.Value + EntityBattleship.Step + _drawingBattleshipHeight < _pictureHeight) //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + { + _startPosY += (int)EntityBattleship.Step; + } + return true; + + default: + return false; + } + + } + + /// + /// Прорисовка объекта + /// + /// + + public void DrawTransport(Graphics g) + { + if (EntityBattleship == null || !_startPosX.HasValue || !_startPosY.HasValue) + { + return; + } + + Pen pen = new(Color.Black); + Brush additionalBrush = new SolidBrush(EntityBattleship.AdditionalColor); + + //заливка линкора + Brush br = new SolidBrush(EntityBattleship.BodyColor); + g.FillRectangle(br, _startPosX.Value + 10, _startPosY.Value, 80, 40); + //границы линкора + g.DrawRectangle(pen, _startPosX.Value + 10, _startPosY.Value, 80, 40); //ширина высота (сама палуба) + + //заливка двигателей (2 фигни сзади) + Brush brBlack = new SolidBrush(Color.Black); + g.FillRectangle(brBlack, _startPosX.Value + 5, _startPosY.Value + 7, 5, 10); //верхний + g.FillRectangle(brBlack, _startPosX.Value + 5, _startPosY.Value + 22, 5, 10); //нижний + //границы двигателей + g.DrawRectangle(pen, _startPosX.Value + 5, _startPosY.Value + 7, 5, 10); //двигатель верхний + g.DrawRectangle(pen, _startPosX.Value + 5, _startPosY.Value + 22, 5, 10); //двигатель нижний + + //прямоугольник левый на палубе (горизонтальный) + Brush brLightSteelBlue = new SolidBrush(Color.LightSteelBlue); + g.FillRectangle(brLightSteelBlue, _startPosX.Value + 32, _startPosY.Value + 13, 21, 12); + g.DrawRectangle(pen, _startPosX.Value + 32, _startPosY.Value + 13, 21, 12); + + //прямоугольник правый на палубе (вертикальный) + Brush brGray = new SolidBrush(Color.Gray); + g.FillRectangle(brGray, _startPosX.Value + 53, _startPosY.Value + 7, 16, 24); + g.DrawRectangle(pen, _startPosX.Value + 53, _startPosY.Value + 7, 16, 24); + + //линии для треугольника + Point[] pointsNOS = + { + new Point(_startPosX.Value + 90, _startPosY.Value), + new Point(_startPosX.Value + 120, _startPosY.Value + 20), + new Point(_startPosX.Value + 90, _startPosY.Value + 40), + + }; + g.DrawPolygon(pen, pointsNOS); + g.FillPolygon(br, pointsNOS); + + //заливка круга + Brush brLightSlateGray = new SolidBrush(Color.LightSlateGray); + g.FillEllipse(brLightSlateGray, _startPosX.Value + 78, _startPosY.Value + 12, 15, 15); + //круг на палубе + g.DrawEllipse(pen, _startPosX.Value + 78, _startPosY.Value + 12, 15, 15); + + //ПРОВЕРКА + + if (EntityBattleship.Compartment) + { + //отсеки для ракет + //заливка отсеков + + g.FillRectangle(additionalBrush, _startPosX.Value + 15, _startPosY.Value + 5, 27, 5); //верхний отсек для ракет + g.FillRectangle(additionalBrush, _startPosX.Value + 15, _startPosY.Value + 28, 27, 5); //нижний отсек для ракет + + //границы отсеков + g.DrawRectangle(pen, _startPosX.Value + 15, _startPosY.Value + 5, 27, 5); //верхний отсек + g.DrawRectangle(pen, _startPosX.Value + 15, _startPosY.Value + 28, 27, 5); //нижний отсек + + } + + if (EntityBattleship.Tower) + { + //заливка башни + g.FillEllipse(additionalBrush, _startPosX.Value + 98, _startPosY.Value + 15, 10, 10); + g.FillRectangle(additionalBrush, _startPosX.Value + 107, _startPosY.Value + 17, 30, 5); + + //границы башни + g.DrawEllipse(pen, _startPosX.Value + 98, _startPosY.Value + 15, 10, 10); + g.DrawRectangle(pen, _startPosX.Value + 107, _startPosY.Value + 17, 30, 5); + } + } +} diff --git a/Battleship/Battleship/EntityBattleship.cs b/Battleship/Battleship/EntityBattleship.cs new file mode 100644 index 0000000..3c494f9 --- /dev/null +++ b/Battleship/Battleship/EntityBattleship.cs @@ -0,0 +1,63 @@ +namespace Battleship; + +/// +/// Класс-сущность Линкор +/// +public class EntityBattleship +{ + /// + /// Скорость + /// + 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 BodyDeck { get; private set; } + /// + /// Признак (опция) отсека для ракет + /// + public bool Compartment { get; private set; } + /// + /// Признак (опция) наличия башни + /// + public bool Tower { get; private set; } + /// + /// Перемещение линкора + /// + public double Step => Speed * 100 / Weight; + + /// + /// + /// + /// + /// + /// + /// + /// + /// + /// + public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool bodyDeck, bool compartment, bool tower) + { + Speed = speed; + Weight = weight; + BodyColor = bodyColor; + AdditionalColor = additionalColor; + BodyDeck = bodyDeck; + Compartment = compartment; + Tower = tower; + } +} + + diff --git a/Battleship/Battleship/Form1.Designer.cs b/Battleship/Battleship/Form1.Designer.cs deleted file mode 100644 index 18ae06a..0000000 --- a/Battleship/Battleship/Form1.Designer.cs +++ /dev/null @@ -1,39 +0,0 @@ -namespace Battleship -{ - partial class Form1 - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(800, 450); - this.Text = "Form1"; - } - - #endregion - } -} diff --git a/Battleship/Battleship/Form1.cs b/Battleship/Battleship/Form1.cs deleted file mode 100644 index 1d6c6e1..0000000 --- a/Battleship/Battleship/Form1.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Battleship -{ - public partial class Form1 : Form - { - public Form1() - { - InitializeComponent(); - } - } -} diff --git a/Battleship/Battleship/FormBattleship.Designer.cs b/Battleship/Battleship/FormBattleship.Designer.cs new file mode 100644 index 0000000..337e640 --- /dev/null +++ b/Battleship/Battleship/FormBattleship.Designer.cs @@ -0,0 +1,134 @@ +namespace Battleship +{ + partial class FormBattleship + { + /// + /// 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() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormBattleship)); + pictureBoxBattleship = new PictureBox(); + buttonCreate = new Button(); + buttonLeft = new Button(); + buttonDown = new Button(); + buttonRight = new Button(); + buttonUp = new Button(); + ((System.ComponentModel.ISupportInitialize)pictureBoxBattleship).BeginInit(); + SuspendLayout(); + // + // pictureBoxBattleship + // + pictureBoxBattleship.Location = new Point(0, 0); + pictureBoxBattleship.Name = "pictureBoxBattleship"; + pictureBoxBattleship.Size = new Size(957, 559); + pictureBoxBattleship.TabIndex = 0; + pictureBoxBattleship.TabStop = false; + // + // buttonCreate + // + buttonCreate.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; + buttonCreate.Location = new Point(12, 518); + buttonCreate.Name = "buttonCreate"; + buttonCreate.Size = new Size(94, 29); + buttonCreate.TabIndex = 0; + buttonCreate.Text = "Создать"; + buttonCreate.UseVisualStyleBackColor = true; + buttonCreate.Click += buttonCreate_Click; + // + // buttonLeft + // + buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonLeft.BackgroundImage = Properties.Resources.arrowLeft; + buttonLeft.BackgroundImageLayout = ImageLayout.Stretch; + buttonLeft.Location = new Point(819, 512); + buttonLeft.Name = "buttonLeft"; + buttonLeft.Size = new Size(35, 35); + buttonLeft.TabIndex = 3; + buttonLeft.UseVisualStyleBackColor = true; + buttonLeft.Click += buttonMove_Click; + // + // buttonDown + // + buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonDown.BackgroundImage = Properties.Resources.arrowDown; + buttonDown.BackgroundImageLayout = ImageLayout.Stretch; + buttonDown.Location = new Point(860, 512); + buttonDown.Name = "buttonDown"; + buttonDown.Size = new Size(35, 35); + buttonDown.TabIndex = 2; + buttonDown.UseVisualStyleBackColor = true; + buttonDown.Click += buttonMove_Click; + // + // buttonRight + // + buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonRight.BackgroundImage = Properties.Resources.arrowRight; + buttonRight.BackgroundImageLayout = ImageLayout.Stretch; + buttonRight.Location = new Point(901, 512); + buttonRight.Name = "buttonRight"; + buttonRight.Size = new Size(35, 35); + buttonRight.TabIndex = 4; + buttonRight.UseVisualStyleBackColor = true; + buttonRight.Click += buttonMove_Click; + // + // buttonUp + // + buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; + buttonUp.BackgroundImage = (Image)resources.GetObject("buttonUp.BackgroundImage"); + buttonUp.BackgroundImageLayout = ImageLayout.Stretch; + buttonUp.Location = new Point(860, 471); + buttonUp.Name = "buttonUp"; + buttonUp.Size = new Size(35, 35); + buttonUp.TabIndex = 1; + buttonUp.UseVisualStyleBackColor = true; + buttonUp.Click += buttonMove_Click; + // + // FormBattleship + // + AutoScaleDimensions = new SizeF(8F, 20F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(957, 559); + Controls.Add(buttonUp); + Controls.Add(buttonRight); + Controls.Add(buttonDown); + Controls.Add(buttonLeft); + Controls.Add(buttonCreate); + Controls.Add(pictureBoxBattleship); + Name = "FormBattleship"; + Text = "Линкор"; + ((System.ComponentModel.ISupportInitialize)pictureBoxBattleship).EndInit(); + ResumeLayout(false); + } + + #endregion + + private PictureBox pictureBoxBattleship; + private Button buttonCreate; + private Button buttonDown; + private Button buttonRight; + private Button buttonUp; + private Button buttonLeft; + } +} \ No newline at end of file diff --git a/Battleship/Battleship/FormBattleship.cs b/Battleship/Battleship/FormBattleship.cs new file mode 100644 index 0000000..bbdf799 --- /dev/null +++ b/Battleship/Battleship/FormBattleship.cs @@ -0,0 +1,79 @@ +namespace Battleship; +/// +/// Форма работы с объектом Линкор +/// +public partial class FormBattleship : Form +{ + /// + /// Поле\объект для прорисовки объекта + /// + private DrawingBattleship? _drawingBattleship; //поля с нижнего подчеркивания + + public FormBattleship() + { + InitializeComponent(); + } + /// + /// Метод прорисовки машины + /// + //создаем отдельный метод + private void Draw() + { + if (_drawingBattleship == null) + { + return; + } + + Bitmap bmp = new(pictureBoxBattleship.Width, pictureBoxBattleship.Height); + Graphics gr = Graphics.FromImage(bmp); + _drawingBattleship.DrawTransport(gr); + pictureBoxBattleship.Image = bmp; + + } + + private void buttonCreate_Click(object sender, EventArgs e) + { + Random random = new(); + _drawingBattleship = new DrawingBattleship(); + _drawingBattleship.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))); + _drawingBattleship.SetPictureSize(pictureBoxBattleship.Width, pictureBoxBattleship.Height); + _drawingBattleship.SetPosition(random.Next(10, 100), random.Next(10, 100), pictureBoxBattleship.Width, pictureBoxBattleship.Height); + + Draw(); + + } + + private void buttonMove_Click(object sender, EventArgs e) + { + if (_drawingBattleship == null) + { + return; + } + + string name = ((Button)sender)?.Name ?? string.Empty; + bool result = false; + switch (name) + { + case "buttonUp": + result = _drawingBattleship.MoveTransport(DirectionType.Up); + break; + case "buttonDown": + result = _drawingBattleship.MoveTransport(DirectionType.Down); + break; + case "buttonLeft": + result = _drawingBattleship.MoveTransport(DirectionType.Left); + break; + case "buttonRight": + result = _drawingBattleship.MoveTransport(DirectionType.Right); + break; + } + + if (result) + { + Draw(); + } + } +} diff --git a/Battleship/Battleship/FormBattleship.resx b/Battleship/Battleship/FormBattleship.resx new file mode 100644 index 0000000..865aa56 --- /dev/null +++ b/Battleship/Battleship/FormBattleship.resx @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + + + 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 + + + \ No newline at end of file diff --git a/Battleship/Battleship/Program.cs b/Battleship/Battleship/Program.cs index 48b33ea..4d0e539 100644 --- a/Battleship/Battleship/Program.cs +++ b/Battleship/Battleship/Program.cs @@ -11,7 +11,7 @@ namespace Battleship // 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 FormBattleship()); } } } \ No newline at end of file diff --git a/Battleship/Battleship/Properties/Resources.Designer.cs b/Battleship/Battleship/Properties/Resources.Designer.cs new file mode 100644 index 0000000..c4758f0 --- /dev/null +++ b/Battleship/Battleship/Properties/Resources.Designer.cs @@ -0,0 +1,93 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программой. +// Исполняемая версия:4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильной работе и будут потеряны в случае +// повторной генерации кода. +// +//------------------------------------------------------------------------------ + +namespace Battleship.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("Battleship.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)); + } + } + } +} diff --git a/Battleship/Battleship/Form1.resx b/Battleship/Battleship/Properties/Resources.resx similarity index 86% rename from Battleship/Battleship/Form1.resx rename to Battleship/Battleship/Properties/Resources.resx index 1af7de1..32344b3 100644 --- a/Battleship/Battleship/Form1.resx +++ b/Battleship/Battleship/Properties/Resources.resx @@ -117,4 +117,14 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\arrowRight.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\arrowDown.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/Battleship/Battleship/Resources/arrowDown.png b/Battleship/Battleship/Resources/arrowDown.png new file mode 100644 index 0000000000000000000000000000000000000000..84204b37c93a0d442f807d2a876c1d17edad51f4 GIT binary patch literal 4866 zcmeHL`B&4&7M~#0g(`ib1x4UlRG!*^7R%azD*B0-3r|hO$9Ca&0dPOx{8N+}A}>wxi%11v#goq+b#vI~?{%6Yj-WQ>fOgO%ZXIM9UqAzU9os zrKZj?M?T6w%z7I*MN^}Y;Rn0vH&-U_jO&Nq8Cw{gI!GWz{QEy`{}^9_f+T5B<%x zk`>#4gxYj+YJ5q4zhT(~aGOO$7kD9e;lYEcGG^*}@?vX17RjD79XyUn@}?aDxOEK$ zz@``ga+a+)<=?8mcj9kM{O_soLX{pFRU|uZ_&_7*v!IP|vHN6${Y0kiZyqDL zc0W4>=x_{fS9$tMU|waZN$iJd-6jax=Ki9XNixFXOng z1xFOda}AfFSyDYIwCzz)j>uFb;>wDVCSxCxeeyfEU}(+zyQsi z5@k80W06pON}wB~W8T+0aY_MEv{9KR%ukGDjJrak$frSWaYme)@Jp%KiDJlYq>T$> zl+|;TOhLBjNNH8{0A2ygr=Nu;7xr-cunhV@9PEkicdg1))=0A37Nio8ZzK&cui7bc78YvHL4U`56Js%bXg>u#P#8BZL(UqdX}sPq*&V>2GT*~MhM zKVk`TL#KM?lKEcu^EAJzUd1bE_e%iHnEd#$nn_=*Pyp{ zu%c&VC0K-UlZ&h9j<36$J&*;rkp<1`=^Z~no?n-+!NJp!IJo`f>Sk9;CG`|LDMaqA zVlh@5nI`1(L&%xGAJgpbA{12+hc+tr3Y`;5XdPaV4-QoKdBl_4%(6CEugpS;P7DEbWq(LtICsc zDzG|MgFh5|xE}xBkxzWuEibWg3Is_x;pLi`=1ZrUyjIU%(DzRTS91;n zG1v5^_G}tsCAYioqKwmgk?da#sy2k+yKt?k4CX&qi$<#={pgXvu-)<#ZJ*zP-1s zQ6=OPdEN5++8axA(9?g&IM2en$E6Uh2R}4v*3%Fw8+4~{Z+l_j)Iy2%V0_eHNuy%r!sm;4mz~NVnHS2 zyu|9>XO(&+s0pC_I*jefEwe^SJOeK4JPj!EMyJNR51LyjvqsM7QG*UQ1uM$bE zY4d4J-$RFVhjEP!<>dok!>Ly_a63L5+^Dqa@@7HiPsY62cEv0irmFzW?=}9)PcQB^ z9%K5MkdLyt#1O_^Yk0WaMH&o^9;`2udA9n{yS76E3ZG)|vSDivSs%V=aV>jh@60DZStm_8BK@P{b&3-aZMXu4Hiccvr8#Wq~mhf6yw z%o7UW=zPK42s++NwB0h&PG8-5?HFwxJmS=UT!wW~c&6ohL7$TniX53A7>S3^ z$I$HeTlit+m_G|_9HQla4-GIt z%7#&{UYx-=y#{9Y>{D%n+9K*7SH#xR$Lx;L?EQsP;N|a5`y=%JN&EjcOeum5nyv~U0<;U`4)h*dHp+!O@ko@uR8@g3lSi`W_AbnUI!=blCzusyI zss|zJvQJseD9;F8GcK+E(7z9{H0jt;o)75#^I3x+u*tw=9)(0218ZVP-ITZnnzA8L zW}x+!pqJ-8Ixppm4_wuZsQ#lmr%7i`oMUz}HJWtaa3$2}0jl8;=_FrFzN)G1xmaW( zUTBFaD;_8D4O696lur$&z-DBls#r#P;LCW;lW1De5fKV}wvZB82*@LcInZUrnA-QD z6-PVeON&MLf|yWb2hR1O8<2V57&UPo?x}h00Sy%;C`}|!J$*8_(5=3+Z5dz*@hI{L z#^W;wci280_;;W`sQX?JFb-`_v8tqmE58Dbok-k+=LfZmCB2n43IPr_BN)P!&k#N( z36bjKN;2cFbfLB}jN$_Nn1Au-KhlLTWkus^FmYvT56l-&t8$gR#(#i`JM^ryc^>2S z0a!Y^q6)>RCp}FGcg<)_{;N-l;i}j0f9_Z&sGMl#PkNf#=|NE_dckpr6ctctCS zT?D>p@}yh6qW{=o3cjTIG6U64PsS@)Wvr#Zdg7C|T}HYV-d`S!HV1Xz1QLc3=ABwC zPgQ&ez}C6f4S7W-;~upEKvGye!rSR)L`e!c#Y4rA`RoM&j;ddjvpj{WSI9_p?CRo? zhsay~0YfPk)nqcDq^@Uv9J*Y>#rNFcXG+*7)xu K>=o=LpZPC*W95hd literal 0 HcmV?d00001 diff --git a/Battleship/Battleship/Resources/arrowLeft.png b/Battleship/Battleship/Resources/arrowLeft.png new file mode 100644 index 0000000000000000000000000000000000000000..16c62ca975ac2d77462b14c3b35f57886acc5956 GIT binary patch literal 3859 zcmeHJX;jnK62A$XyS4O*4@6W@6cmsmXb^%TkdP1*D5!`85hNm8h+qtX)b^=eKn230 zB;XN}0*V`mAWLi&YuxakB4wxA81iI!5+p1pdG|&?y!W|Zn{#rKxpVK#Z+>^~%zU?t z=C^R3`8)u?LNaM*5CC}i7Z2tb!=H)czsI+pfxa?I0ZSHfjcjq?_= zA}I5@j;i#&tG0jca~;g;>(p#}uE@(!ZPN)IhSP~^-NC``wN7Wx_c`cnHvFU?+Rc< zR%IXiLCOGueTKZ8Oh*B!?owix$>+c+c0MKwu~4M2j^RODT!~^fE3_IeuYHTzSGr1H zS2a1s?S`7ce%6K#Uv>%C5eKsQ_3yZwI@<2|WfcS7DQWoBZBh4U>Y=N(1gOkctH)?{ zt42Fs&joRRj6KXA2k66;U%u(?y1QuO)opAGeI0Z z=7eVlgkd6^fo6x_)Dn^8j#WYFN=Ds*#LDW0$%RWfR*M0eudcPH{2o%OMb)j00!VIjamRz0kqX zs|gk|ms5Th(tiDzQXXP4C>){1BZ-6EKvDwvF_g;KN^OY6K))t{;0B}HCxom|O%5OL zE`mO<25^F4=(pV>N}SYA&kr2NK@e=?q;o1Llu$?Un>u-Mf)ul?Jr`DxJuvf{ZQ_y@!1K{*;l0q_py{ zptNWDh$aMy+RYI#F5E_{uIR|?o?Fa!Q4MoaXwVXi-7Q2(;3l&*g%m{w&Z594iArm9 zeCt4#GrB$9`GU0&+ieA@h~_)%m{hS zo!E(TgC-t7b#E_P`1iy&|3h}G;A4V6V0{GmXOI06;c^{Gt zsAl0ZtBRzYoT53tvCMpxrUyIi=LclZBP#|1#lC(lxq;-+y2a}C&sC8G0=}q4yOF!i z(#rD1(~?_6WxQYGpHHp<**96EDje4!W7O{kgc6wH^k7nV-*Q&hOJQl|X^2{kNnZn=RK zm`Ry2lIYCRUK@B3iQ8sP>1%s9leW=s^1_JrLG19Q5~_T)Bqzh5J+Q%G@IS?oxY+W; zx$nmAoA6q+n&CiR@z9Hp-dp-hrLUbl&MzrqNE>w3*u~4%ZO{HQ@!r?Y3jZ=E2gK$O zNdwzd_8wElbmw7Opv_*@_`BO(RCYs58iRPC5{>??-rjGM?*4FmJA+R z7j~~83A7L)pF%A`6YH!smB8)09lqTwSV1Cg)B&e}4`Gd-Tvvge&MS+Cql(5a4EhDJ zBV8pS%+<{WQcGGm78b--v=WaFn$V9EypwQz`Vi35|#e0+qJ7E%3{8^Kx$gAcf0d?Hf#-t5*vvf zr|zUL7EPl@AydXxElhbXy(MuBfB^I_?3HjNK%Py9;$zv%5Q|qr%fOoXu;aX`AU8V< ze$7fmE^RF-(B{vy_bq~`n@3iPQj>i0htb>F3;(};n|P`gf}CuFFWH}ZlJV?8BH zZP8g7EY1)x33ks<6)xptg^MfCkRNC{aScXC6Emw0hC*CL0;$h&`N5{{W$NJ@wd){R zM@grHko_Hv&WJie8fvM-UX8GkWp5w{BI!zR<4_|2adElV<{w`N%ZrzFdO55h_dR+F zLTw<1cv+1e|Aj;n;tVT5l7M7k3K2E2V3kc7(>e$W;SG+`{PfWrZG>Y-_7&7T&U|Vf zz6Ii|$fmn+zZsm61sB)8Z{)R-Qjw8n_e`AeTpBjDwomk}ZH zX6Uoqn*Z?qOQ;&~w?~&;r#y`U{y46fH>~68gLsJPAK8JIDuteo^RAGbOLt{2LM&b% z;P)6h!sPL8y^xuIB)YeH+;uyAL27YQIn0EgdT-t#;Hddb?H8gvCTCDo>vDCYu6-}t zYZv>w_App>y;9Yp*Oiln(_1*3a3Go$ePUzBDfWK;Ln97nCHS!`M%jR7xjH+jyuDK6 zU6rlcVwdD%2nf?h?G`I5vssTrVWM9izoH#~qV3*QKa^~joZD-96`pN$SEe+&g literal 0 HcmV?d00001 diff --git a/Battleship/Battleship/Resources/arrowRight.png b/Battleship/Battleship/Resources/arrowRight.png new file mode 100644 index 0000000000000000000000000000000000000000..9c6578c23ba670154222b4626aabec8a4b7be59d GIT binary patch literal 3986 zcmeHKYgAKL7Cs?7tO~JpT5Lh0%jMW=gS17UJZsT~wj*G9L`ry66tGAFVjAQXEUjp3 zrB)k642+c)xPc^!fILFt;DCxi6|X?$DZ}gX2oM7#A<3L`v0ZD{nt%P$6WSnl1k>k|M>;7=2S#6v#^!3|F zI^%TiF6|A47NcomRh_tBxfP=O>+|Or=(4tY;0Y92#}BIYIM1jol!!dtlrBK=W{x;K zA}p*obbZLMfbhUqiK6~4d>M3YZVu*@Oph6J44wDA0{sdT4}gKEyie5+8#IIb$m!CI z&DCy{fsMnD3Cyl%(aS+uZdchHV*%{Gio&*O=bMeOhEmsI!E{)}Z*^ON!g(Sxs>yir1dsbD{8basaGkcpU^1|$g=tnO^$~(h z$oe!YDy->Dv%RvXg5<{TwoTT6Ip@!Tl$3^w>RNC7#v4aVE%rw_K*rX z^v3;GPg;Wfg}a2`WiRbSvONIiZd#T?-%2-d`$9cFXK}$mvnVtlE~fpWJxSteEBEYO zdKfV}LVQh4r7A{*j|{2#1Lp-2`-ZE-0yE&CxXz#ru4fx&Bq}jcl!#L@nKzeM%1O9~ zAkGYZP6d7;H11sND#!HAX#)I2XxgBVa||3-u<8P#-<<(U=_?meAV1= zO(&OQf}EX@eKnrG)aaWq6x4sKSzhrT@Lhipw({#90v%_y;z%u zg2#!9tw=D@+#qB>#XdHlH_vQ!yP86RZDc5&U7{g@T~$;DXSz5G967Aku%sOS4t!yD^iMM6P?gpSa`%s0e5+Q4M`*)nZF z@~7M|?CWE z#T_J}7Y8xXdW|SWed{-%XvC^tC^0*PQGtc14hh8y5qgr9T!Gn;!ufkdk;*hP>11KV zs4JFh%U>oVrHI#fP(kGPS-1znCXUsZQ-Q7C;LfFDA{2bM0No_J|Ul6tYaWWb>F%KVvfF~P zZt`RN0u~xWKQxiHFN&X>)I{$(%5ID9t%cx$`tn&X=|0$=^U_ZDwY}bC?0}aR?x2RW>X%h?ws{fB*oApMJ(`OsLx9=mk<6i0N>qIK?73SVs*kR z)s-0Ser zBAOoA(qnRI;tp|HP}peN^@C2-929XW{rmDch>jO5chao^YnRwf{H?Tqw(__w-VW9e zJXa{}Gz-LTh>y#rOwwo)dr7#9ZUe~bWeGdxHaM<@5&5^|DLi!;{@#{Cv&f6>fuq&+ zrl;?@Q>FYKrv9M1k->S%bkR4lC?$>?&ei>=Vn*I$(p3l*EU_0Cbj($ib%?TC-T$V@ zN+_u<(zZYuGL??o%Nu&;yr%RQ`DJZ(=(LT0pgtuSJsq8+cjX6q97MKhYB`OGD*YHd3YOy5>B@NXxWY0Ynmu|n-BIL>VNxO#lt*R z3{CHQ!iW28*+Z!TLkMIH&N@@@MR$j&-3cPDDb-#lGsvi|l_3u}zINF|)o_M!5MksW zAUoF4j%y-$ETS}GdV#7~Ga6jTHb4rJ)L)Vg>@jvcv{h$_Nn~HJx|wz}gRg4N5VnW{ z-~h;scde-{Ll6c9*=ushMlgO4FGj@LV)mqv6Ps~HD_zGGm$um;VUKwAEBO&zVmX5n zLkZk|PN#=WCl3!oFS149WDk2nHX)eKizXCeAxcG#S^I@fVkdC4qfu1t%pXI;C=s?m zg_B2v_JAroL+BsB>u1Cls55QXTy`E3>$C(?d$O+|JQl|e7>C(C9|5c&#?_&JSOr;=X{(O-kq9{x|X#M_R+oSa50zoQ#@ zL0hJRHi7}0)I&pTY7bMEp@dVt|C_?Ng=QnXf~AI-fW;@a9n+qxX8iCA^EUvP8E~)C z<~HbOjYEQ`D}loM&N%Lqn$XDSs9P8j3{zlt@SG&0Qu|T=(xTCud;4so38I9=ZDG{+ak|H)3E>utbwK`9IGy S{~{LIdw2Wp5`P%^<$nRB+vuwR literal 0 HcmV?d00001