diff --git a/Battleship/Battleship/DirectionType.cs b/Battleship/Battleship/Drawings/DirectionType.cs
similarity index 92%
rename from Battleship/Battleship/DirectionType.cs
rename to Battleship/Battleship/Drawings/DirectionType.cs
index 8b60694..7ed8765 100644
--- a/Battleship/Battleship/DirectionType.cs
+++ b/Battleship/Battleship/Drawings/DirectionType.cs
@@ -1,4 +1,4 @@
-namespace Battleship;
+namespace Battleship.Drawings;
///
/// класс, отвечающий за лево/право/верх/низ
///
diff --git a/Battleship/Battleship/Drawings/DrawingBattleship.cs b/Battleship/Battleship/Drawings/DrawingBattleship.cs
new file mode 100644
index 0000000..dfb481f
--- /dev/null
+++ b/Battleship/Battleship/Drawings/DrawingBattleship.cs
@@ -0,0 +1,108 @@
+using Battleship.Entities;
+//using System.Drawings;
+
+namespace Battleship.Drawings;
+///
+/// Класс, отвечающий за отрисовку и перемещение объекта-сущности
+///
+public class DrawingBattleship : DrawingWarship
+{
+ ///
+ /// Конструктор
+ ///
+ /// Скорость
+ /// Вес
+ /// Основной цвет
+ /// Дополнительный цвет
+ /// Признак наличия палубы
+ /// Признак наличия отсека для ракет
+ /// Признак наличия башни
+ ///
+
+ public DrawingBattleship(int speed, double weight, Color bodyColor, Color additionalColor, bool bodyDeck, bool compartment, bool tower) : base (129, 60)
+ {
+ //Warship = new EntityBattleship(speed, weight, bodyColor, compartment, tower, bodyDeck, additionalColor);
+ }
+
+ public override void DrawTransport(Graphics g)
+ {
+ if (EntityWarship == null || EntityWarship is not EntityBattleship battleship || !_startPosX.HasValue || !_startPosY.HasValue)
+ {
+ return;
+ }
+
+ Pen pen = new(Color.Black);
+ Brush additionalBrush = new SolidBrush(battleship.AdditionalColor);
+
+ //отсек для ракет
+ if (battleship.BodyDeck)
+ {
+ //заливка линкора
+ Brush br = new SolidBrush(EntityWarship.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);
+ }
+
+ base.DrawTransport(g);
+
+ //башня
+ if (battleship.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);
+ }
+
+ //отсек
+ if (battleship.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); //нижний отсек
+ }
+ }
+
+}
diff --git a/Battleship/Battleship/DrawingBattleship.cs b/Battleship/Battleship/Drawings/DrawingWarship.cs
similarity index 58%
rename from Battleship/Battleship/DrawingBattleship.cs
rename to Battleship/Battleship/Drawings/DrawingWarship.cs
index e962b11..7d04815 100644
--- a/Battleship/Battleship/DrawingBattleship.cs
+++ b/Battleship/Battleship/Drawings/DrawingWarship.cs
@@ -1,13 +1,13 @@
-namespace Battleship;
-///
-/// Класс, отвечающий за отрисовку и перемещение объекта-сущности
-///
-public class DrawingBattleship
+using Battleship.Entities;
+
+namespace Battleship.Drawings;
+
+public class DrawingWarship
{
///
/// Класс-сущность
///
- public EntityBattleship? EntityBattleship { get; private set; }
+ public EntityWarship? EntityWarship { get; protected set; }
///
/// Ширина
@@ -20,45 +20,57 @@ public class DrawingBattleship
private int? _pictureHeight;
///
- /// Левая координата прорисовки линкора
+ /// Левая координата прорисовки военного корабля
///
- private int? _startPosX;
+ protected int? _startPosX;
///
- /// Верхняя координата прорисовки линкора
+ /// Верхняя координата прорисовки военного корабля
///
- private int? _startPosY;
+ protected int? _startPosY;
///
- /// Ширина прорисовки линкора
+ /// Ширина прорисовки военного корабля
///
- private readonly int _drawingBattleshipWidth = 129;
+ private readonly int _drawingWarshipWidth = 129;
///
- /// Высота прорисовки линкора
+ /// Высота прорисовки военного корабля
///
- private readonly int _drawingBattleshipHeight = 40;
+ private readonly int _drawingWarshipHeight = 40;
///
- ///
+ /// Пустой конструктор
///
- /// Скорость
- /// Вес
- /// Основной цвет
- /// Дополнительный цвет
- /// Признак наличия палубы
- /// Признак наличия отсека для ракет
- /// Признак наличия башни
- public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool bodyDeck, bool compartment, bool tower)
+ private DrawingWarship()
{
- EntityBattleship = new EntityBattleship();
- EntityBattleship.Init(speed, weight, bodyColor, additionalColor, bodyDeck, compartment, tower);
_pictureWidth = null;
_pictureHeight = null;
_startPosX = null;
_startPosY = null;
}
+ ///
+ /// Конструктор
+ ///
+ /// Скорость
+ /// Вес
+ /// Основной цвет
+ public DrawingWarship(int speed, double weight, Color bodyColor) : this()
+ {
+ EntityWarship = new EntityWarship(speed, weight, bodyColor);
+ }
+
+ ///
+ /// Конструктор для наследников
+ ///
+ /// Ширина прорисовки военного корабля
+ /// Высота прорисовки военного корабля
+ protected DrawingWarship(int drawingWarshipWidth, int drawingWarshipHeight) : this()
+ {
+ _drawingWarshipWidth = drawingWarshipWidth;
+ _drawingWarshipHeight = drawingWarshipHeight;
+ }
///
///
@@ -71,25 +83,25 @@ public class DrawingBattleship
{
//TODO проверка, что объект "влезает" в размеры поля
//если влезает, сохраняем границы и корректируем позицию объекта, если она уже была установлена
-
- if (_drawingBattleshipWidth > width || _drawingBattleshipHeight > height)
+
+ if (_drawingWarshipWidth > width || _drawingWarshipHeight > height)
{
return false;
}
_pictureWidth = width;
_pictureHeight = height;
-
+
if (_startPosX.HasValue || _startPosY.HasValue)
{
- if (_startPosX + _drawingBattleshipWidth > _pictureWidth)
+ if (_startPosX + _drawingWarshipWidth > _pictureWidth)
{
- _startPosX = _pictureWidth - _drawingBattleshipWidth;
+ _startPosX = _pictureWidth - _drawingWarshipWidth;
}
else if (_startPosX < 0) _startPosX = 0;
- if (_startPosY + _drawingBattleshipHeight > _pictureHeight)
+ if (_startPosY + _drawingWarshipHeight > _pictureHeight)
{
- _startPosY = _pictureHeight - _drawingBattleshipHeight;
+ _startPosY = _pictureHeight - _drawingWarshipHeight;
}
else if (_startPosY < 0) _startPosY = 0;
}
@@ -102,7 +114,7 @@ public class DrawingBattleship
///
/// Координата X
/// Координата Y
-
+
public void SetPosition(int x, int y, int width, int height)
{
if (!_pictureWidth.HasValue || !_pictureHeight.HasValue)
@@ -112,17 +124,17 @@ public class DrawingBattleship
// TODO если при установке объекта в эти координаты, он будет "выходить" за границы формы
// то надо изменить координаты, чтобы он оставался в этих границах
-
- if (x + _drawingBattleshipWidth > _pictureWidth)
+
+ if (x + _drawingWarshipWidth > _pictureWidth)
{
- _startPosX = _pictureWidth - _drawingBattleshipWidth;
+ _startPosX = _pictureWidth - _drawingWarshipWidth;
}
- else if (x < 0) _startPosX = 0;
+ else if (x < 0) _startPosX = 0;
else _startPosX = x;
- if (y + _drawingBattleshipHeight > _pictureHeight)
+ if (y + _drawingWarshipHeight > _pictureHeight)
{
- _startPosY = _pictureHeight - _drawingBattleshipHeight;
+ _startPosY = _pictureHeight - _drawingWarshipHeight;
}
else if (y < 0) _startPosY = 0;
else _startPosY = y;
@@ -137,49 +149,49 @@ public class DrawingBattleship
public bool MoveTransport(DirectionType direction)
{
- if (EntityBattleship == null || !_startPosX.HasValue || !_startPosY.HasValue)
+ if (EntityWarship == null || !_startPosX.HasValue || !_startPosY.HasValue)
{
return false;
}
- switch (direction)
+ switch (direction)
{
//влево
case DirectionType.Left:
- if (_startPosX.Value - EntityBattleship.Step > 0)
+ if (_startPosX.Value - EntityWarship.Step > 0)
{
- _startPosX -= (int)EntityBattleship.Step;
+ _startPosX -= (int)EntityWarship.Step;
}
return true;
//вправо
case DirectionType.Right:
- if (_startPosX.Value + EntityBattleship.Step + _drawingBattleshipWidth < _pictureWidth)
+ if (_startPosX.Value + EntityWarship.Step + _drawingWarshipWidth < _pictureWidth)
{
- _startPosX += (int)EntityBattleship.Step;
+ _startPosX += (int)EntityWarship.Step;
}
- return true;
-
+ return true;
+
//вверх
case DirectionType.Up:
- if (_startPosY.Value - EntityBattleship.Step > 0)
+ if (_startPosY.Value - EntityWarship.Step > 0)
{
- _startPosY -= (int)EntityBattleship.Step;
+ _startPosY -= (int)EntityWarship.Step;
}
return true;
//вниз
case DirectionType.Down:
- if (_startPosY.Value + EntityBattleship.Step + _drawingBattleshipHeight < _pictureHeight) //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+ if (_startPosY.Value + EntityWarship.Step + _drawingWarshipHeight < _pictureHeight) //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
{
- _startPosY += (int)EntityBattleship.Step;
+ _startPosY += (int)EntityWarship.Step;
}
return true;
- default:
- return false;
+ default:
+ return false;
}
-
+
}
///
@@ -187,18 +199,17 @@ public class DrawingBattleship
///
///
- public void DrawTransport(Graphics g)
+ public virtual void DrawTransport(Graphics g)
{
- if (EntityBattleship == null || !_startPosX.HasValue || !_startPosY.HasValue)
+ if (EntityWarship == null || !_startPosX.HasValue || !_startPosY.HasValue)
{
return;
}
Pen pen = new(Color.Black);
- Brush additionalBrush = new SolidBrush(EntityBattleship.AdditionalColor);
-
+
//заливка линкора
- Brush br = new SolidBrush(EntityBattleship.BodyColor);
+ Brush br = new SolidBrush(EntityWarship.BodyColor);
g.FillRectangle(br, _startPosX.Value + 10, _startPosY.Value, 80, 40);
//границы линкора
g.DrawRectangle(pen, _startPosX.Value + 10, _startPosY.Value, 80, 40); //ширина высота (сама палуба)
@@ -227,7 +238,7 @@ public class DrawingBattleship
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);
@@ -237,32 +248,5 @@ public class DrawingBattleship
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/Entities/EntityBattleship.cs
similarity index 63%
rename from Battleship/Battleship/EntityBattleship.cs
rename to Battleship/Battleship/Entities/EntityBattleship.cs
index 477cac0..3f34b2f 100644
--- a/Battleship/Battleship/EntityBattleship.cs
+++ b/Battleship/Battleship/Entities/EntityBattleship.cs
@@ -1,14 +1,18 @@
-namespace Battleship;
+namespace Battleship.Entities;
///
/// Класс-сущность Линкор
///
-public class EntityBattleship
+internal class EntityBattleship : EntityWarship
{
+ public EntityBattleship(int speed, double weight, Color bodyColor) : base(speed, weight, bodyColor)
+ {
+ }
+
///
/// Скорость
///
- public int Speed { get; private set; }
+ public int Speed { get; private set; }
///
/// Вес
///
@@ -18,41 +22,44 @@ public class EntityBattleship
///
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 Compartment { get; private set; }
///
/// Признак (опция) наличия башни
///
- public bool Tower { get; private set; }
+ public bool Tower { get; private set; }
+ ///
+ /// Признак (опция) наличия палубы
+ ///
+ public bool BodyDeck { get; private set; }
+ ///
+ /// Дополнительный цвет (для опциональных элементов)
+ ///
+ public Color AdditionalColor { 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)
+ public void EntityWarship(int speed, double weight, Color bodyColor, bool compartment, bool tower, bool bodyDeck, Color additionalColor)
{
Speed = speed;
Weight = weight;
BodyColor = bodyColor;
- AdditionalColor = additionalColor;
- BodyDeck = bodyDeck;
Compartment = compartment;
Tower = tower;
+ BodyDeck = bodyDeck;
+ AdditionalColor = additionalColor;
}
}
\ No newline at end of file
diff --git a/Battleship/Battleship/Entities/EntityWarship.cs b/Battleship/Battleship/Entities/EntityWarship.cs
new file mode 100644
index 0000000..8d20e4d
--- /dev/null
+++ b/Battleship/Battleship/Entities/EntityWarship.cs
@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Battleship.Entities;
+///
+/// Класс-сущность Военный корабль
+///
+public class EntityWarship
+{
+ ///
+ /// Скорость
+ ///
+ public int Speed { get; private set; }
+ ///
+ /// Вес
+ ///
+ public double Weight { get; private set; }
+ ///
+ /// Основной цвет
+ ///
+ public Color BodyColor { get; private set; }
+ ///
+ /// Перемещение военного корабля
+ ///
+ public double Step => Speed * 100 / Weight;
+
+ ///
+ /// Конструктор сущности
+ ///
+ ///
+ ///
+ ///
+ public EntityWarship(int speed, double weight, Color bodyColor)
+ {
+ Speed = speed;
+ Weight = weight;
+ BodyColor = bodyColor;
+ }
+}
diff --git a/Battleship/Battleship/FormBattleship.Designer.cs b/Battleship/Battleship/FormBattleship.Designer.cs
index 87379f3..763764d 100644
--- a/Battleship/Battleship/FormBattleship.Designer.cs
+++ b/Battleship/Battleship/FormBattleship.Designer.cs
@@ -34,6 +34,7 @@ partial class FormBattleship
buttonDown = new Button();
buttonRight = new Button();
buttonUp = new Button();
+ buttonCreateWarshit = new Button();
((System.ComponentModel.ISupportInitialize)pictureBoxBattleship).BeginInit();
SuspendLayout();
//
@@ -50,9 +51,9 @@ partial class FormBattleship
buttonCreate.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
buttonCreate.Location = new Point(12, 518);
buttonCreate.Name = "buttonCreate";
- buttonCreate.Size = new Size(94, 29);
+ buttonCreate.Size = new Size(267, 29);
buttonCreate.TabIndex = 0;
- buttonCreate.Text = "Создать";
+ buttonCreate.Text = "Создать линкор";
buttonCreate.UseVisualStyleBackColor = true;
buttonCreate.Click += buttonCreate_Click;
//
@@ -104,11 +105,23 @@ partial class FormBattleship
buttonUp.UseVisualStyleBackColor = true;
buttonUp.Click += buttonMove_Click;
//
+ // buttonCreateWarshit
+ //
+ buttonCreateWarshit.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
+ buttonCreateWarshit.Location = new Point(316, 518);
+ buttonCreateWarshit.Name = "buttonCreateWarshit";
+ buttonCreateWarshit.Size = new Size(267, 29);
+ buttonCreateWarshit.TabIndex = 5;
+ buttonCreateWarshit.Text = "Создать военный корабль";
+ buttonCreateWarshit.UseVisualStyleBackColor = true;
+ buttonCreateWarshit.Click += buttonCreateWarshit_Click;
+ //
// FormBattleship
//
AutoScaleDimensions = new SizeF(8F, 20F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(957, 559);
+ Controls.Add(buttonCreateWarshit);
Controls.Add(buttonUp);
Controls.Add(buttonRight);
Controls.Add(buttonDown);
@@ -129,4 +142,5 @@ partial class FormBattleship
private Button buttonRight;
private Button buttonUp;
private Button buttonLeft;
+ private Button buttonCreateWarshit;
}
\ No newline at end of file
diff --git a/Battleship/Battleship/FormBattleship.cs b/Battleship/Battleship/FormBattleship.cs
index 048e106..4673128 100644
--- a/Battleship/Battleship/FormBattleship.cs
+++ b/Battleship/Battleship/FormBattleship.cs
@@ -1,4 +1,6 @@
-namespace Battleship;
+using Battleship.Drawings;
+
+namespace Battleship;
///
/// Форма работы с объектом Линкор
///
@@ -7,7 +9,7 @@ public partial class FormBattleship : Form
///
/// Поле/объект для прорисовки объекта
///
- private DrawingBattleship? _drawingBattleship; //поля с нижнего подчеркивания
+ private DrawingWarship? _drawingWarship; //поля с нижнего подчеркивания
public FormBattleship()
{
@@ -19,36 +21,67 @@ public partial class FormBattleship : Form
//создаем отдельный метод
private void Draw()
{
- if (_drawingBattleship == null)
+ if (_drawingWarship == null)
{
return;
}
Bitmap bmp = new(pictureBoxBattleship.Width, pictureBoxBattleship.Height);
Graphics gr = Graphics.FromImage(bmp);
- _drawingBattleship.DrawTransport(gr);
+ _drawingWarship.DrawTransport(gr);
pictureBoxBattleship.Image = bmp;
}
- private void buttonCreate_Click(object sender, EventArgs e)
+ private void CreateObject(string type)
{
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);
+ switch (type)
+ {
+ case nameof(DrawingWarship):
+ _drawingWarship = new DrawingWarship(random.Next(100, 300), random.Next(1000, 3000),
+ Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)));
+ break;
+ case nameof(DrawingBattleship):
+ _drawingWarship = new DrawingBattleship(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)));
+ break;
+ default:
+ return;
+ }
+ _drawingWarship.SetPictureSize(pictureBoxBattleship.Width, pictureBoxBattleship.Height);
+ _drawingWarship.SetPosition(random.Next(10, 100), random.Next(10, 100), pictureBoxBattleship.Width, pictureBoxBattleship.Height);
Draw();
+ }
+
+ ///
+ /// обработка нажатия кнопки "создать линкор"
+ ///
+ ///
+ ///
+ private void buttonCreate_Click(object sender, EventArgs e)
+ {
+ CreateObject(nameof(DrawingBattleship));
+
+ }
+
+ ///
+ /// обработка нажатия кнопки "создать военный корабль"
+ ///
+ ///
+ ///
+ private void buttonCreateWarshit_Click(object sender, EventArgs e)
+ {
+ CreateObject(nameof(DrawingWarship));
}
private void buttonMove_Click(object sender, EventArgs e)
{
- if (_drawingBattleship == null)
+ if (_drawingWarship == null)
{
return;
}
@@ -58,16 +91,16 @@ public partial class FormBattleship : Form
switch (name)
{
case "buttonUp":
- result = _drawingBattleship.MoveTransport(DirectionType.Up);
+ result = _drawingWarship.MoveTransport(DirectionType.Up);
break;
case "buttonDown":
- result = _drawingBattleship.MoveTransport(DirectionType.Down);
+ result = _drawingWarship.MoveTransport(DirectionType.Down);
break;
case "buttonLeft":
- result = _drawingBattleship.MoveTransport(DirectionType.Left);
+ result = _drawingWarship.MoveTransport(DirectionType.Left);
break;
case "buttonRight":
- result = _drawingBattleship.MoveTransport(DirectionType.Right);
+ result = _drawingWarship.MoveTransport(DirectionType.Right);
break;
}