diff --git a/ProjectCruiser/DrawningCruiser.cs b/ProjectCruiser/DrawningCruiser.cs
index fb62ed1..5f6a85a 100644
--- a/ProjectCruiser/DrawningCruiser.cs
+++ b/ProjectCruiser/DrawningCruiser.cs
@@ -1,51 +1,51 @@
-using ProjectCruiser;
using System.Drawing.Drawing2D;
namespace ProjectCruiser;
///
-/// , -
+/// Класс, отвечающий за прорисовку и перемещение объекта-сущности
///
public class DrawningCruiser
{
///
- /// -
+ /// Класс-сущность
///
public EntityCruiser? EntityCruiser { get; private set; }
///
- ///
+ /// Ширина окна
///
private int? _pictureWidth;
///
- ///
+ /// Высота окна
///
private int? _pictureHeight;
///
- ///
+ /// Левая координата прорисовки автомобиля
///
private int? _startPosX;
///
- ///
+ /// Верхняя кооридната прорисовки автомобиля
///
private int? _startPosY;
///
- ///
+ /// Ширина прорисовки крейсера
///
- private readonly int _drawningCruiserWidth = 110;
+ private readonly int _drawningCruiserWidth = 150;
///
- ///
+ /// Высота прорисовки крейсера
///
- private readonly int _drawningCruiserHeight = 60;
+ private readonly int _drawningCruiserHeight = 50;
+ private readonly int _drawningEnginesWidth = 3;
///
- ///
+ /// Инициализация свойств
///
- ///
- ///
- ///
- ///
- ///
- ///
- ///
+ /// Скорость
+ /// Вес
+ /// Основной цвет
+ /// Дополнительный цвет
+ /// Признак наличия вертолетной площадки
+ /// Признак наличия шлюпок
+ /// Признак наличия пушки
public void Init(int speed, double weight, Color bodyColor, Color
additionalColor, bool helicopterArea, bool boat, bool wepon)
{
@@ -58,34 +58,37 @@ public class DrawningCruiser
_startPosY = null;
}
///
- ///
+ /// Установка границ поля
///
- ///
- ///
- /// true - , false - ,
+ /// Ширина поля
+ /// Высота поля
+ /// true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах
public bool SetPictureSize(int width, int height)
{
- // TODO , ""
- // , ,
+ // TODO проверка, что объект "влезает" в размеры поля
+ // если влезает, сохраняем границы и корректируем позицию объекта,если она была уже установлена
- if (_startPosX + 150 > width)
+ if (_drawningCruiserHeight > height || _drawningCruiserWidth > width)
{
- _startPosX -= (_startPosX + 150) - width;
- }
- if (_startPosY + 80 > height)
- {
- _startPosY -= (_startPosY + 80) - height;
+ return false;
+
}
_pictureWidth = width;
_pictureHeight = height;
+
+ if (_startPosX.HasValue && _startPosY.HasValue)
+ {
+ SetPosition(_startPosX.Value, _startPosY.Value);
+ }
+
return true;
}
///
- ///
+ /// Установка позиции
///
- /// X
- /// Y
+ /// Координата X
+ /// Координата Y
public void SetPosition(int x, int y)
{
if (!_pictureHeight.HasValue || !_pictureWidth.HasValue)
@@ -93,29 +96,23 @@ public class DrawningCruiser
return;
}
- if(x + 150 > _pictureWidth)
+ if (x < 0 || x + _drawningCruiserWidth > _pictureWidth || y < 0 || y + _drawningCruiserHeight > _pictureHeight)
{
- x -= (x+150) - _pictureWidth.Value;
+ _startPosX = _pictureWidth - _drawningCruiserWidth;
+ _startPosY = _pictureHeight - _drawningCruiserHeight;
}
-
- if (y + 50 > _pictureHeight)
+ else
{
- y -= (y+50) - _pictureHeight.Value;
+ _startPosX = x;
+ _startPosY = y;
}
- // TODO , ""
- // ,
-
- _startPosX = x;
- _startPosY = y;
-
-
}
///
- ///
+ /// Изменение направления перемещения
///
- ///
- /// true - , false -
+ /// Направление
+ /// true - перемещене выполнено, false - перемещение невозможно
public bool MoveTransport(DirectionType direction)
{
if (EntityCruiser == null || !_startPosX.HasValue || !_startPosY.HasValue)
@@ -124,41 +121,31 @@ public class DrawningCruiser
}
switch (direction)
{
- //
+ //влево
case DirectionType.Left:
- if (_startPosX.Value - EntityCruiser.Step > 0)
+ if (_startPosX.Value - EntityCruiser.Step - _drawningEnginesWidth > 0)
{
_startPosX -= (int)EntityCruiser.Step;
}
-
return true;
- //
+ //вверх
case DirectionType.Up:
if (_startPosY.Value - EntityCruiser.Step > 0)
{
_startPosY -= (int)EntityCruiser.Step;
}
return true;
- //
+ // вправо
case DirectionType.Right:
- if (_startPosX.Value >= 640)
- {
- return true;
- }
- //TODO
- if (_startPosX.Value + EntityCruiser.Step > 0)
+ //TODO прописать логику сдвига в право
+ if (_startPosX.Value + EntityCruiser.Step + _drawningCruiserWidth < _pictureWidth)
{
_startPosX += (int)EntityCruiser.Step;
}
return true;
- //
+ //вниз
case DirectionType.Down:
- //TODO
- if(_startPosY.Value >= 390)
- {
- return true;
- }
- if (_startPosY.Value + EntityCruiser.Step > 0)
+ if (_startPosY.Value + EntityCruiser.Step + _drawningCruiserHeight < _pictureHeight)
{
_startPosY += (int)EntityCruiser.Step;
}
@@ -168,7 +155,7 @@ public class DrawningCruiser
}
}
///
- ///
+ /// Прорисовка объекта
///
///
public void DrawTransport(Graphics g)
@@ -178,15 +165,14 @@ public class DrawningCruiser
{
return;
}
- Pen pen = new(Color.Black, 2);
+ Pen pen = new(EntityCruiser.BodyColor, 2);
Brush additionalBrush = new SolidBrush(Color.Black);
Brush weaponBrush = new SolidBrush(Color.Black);
Brush weaponBrush2 = new SolidBrush(EntityCruiser.AdditionalColor);
Brush helicopterAreaBrush = new HatchBrush(HatchStyle.ZigZag, EntityCruiser.AdditionalColor, Color.FromArgb(163, 163, 163));
Brush boatBrush = new SolidBrush(EntityCruiser.AdditionalColor);
- //
-
+ //границы круисера
g.DrawLine(pen, _startPosX.Value, _startPosY.Value, _startPosX.Value + 105, _startPosY.Value);
g.DrawLine(pen, _startPosX.Value + 105, _startPosY.Value, _startPosX.Value + 147, _startPosY.Value + 24);
@@ -195,13 +181,13 @@ public class DrawningCruiser
g.DrawLine(pen, _startPosX.Value, _startPosY.Value, _startPosX.Value, _startPosY.Value + 49);
- //
+ //внутренности круисера
g.DrawEllipse(pen, _startPosX.Value + 94, _startPosY.Value + 14, 19, 19);
g.DrawRectangle(pen, _startPosX.Value + 63, _startPosY.Value + 11, 21, 28);
g.DrawRectangle(pen, _startPosX.Value + 35, _startPosY.Value + 17, 28, 14);
- //
+ //зад
g.FillRectangle(additionalBrush, _startPosX.Value - 3, _startPosY.Value + 7, 3, 14);
g.FillRectangle(additionalBrush, _startPosX.Value - 3, _startPosY.Value + 26, 3, 14);
@@ -225,10 +211,7 @@ public class DrawningCruiser
g.DrawEllipse(pen, _startPosX.Value + 97, _startPosY.Value + 36, 10, 10);
g.FillEllipse(weaponBrush2, _startPosX.Value + 97, _startPosY.Value + 36, 10, 10);
-
g.FillRectangle(weaponBrush, _startPosX.Value + 107, _startPosY.Value + 40, 15, 5);
-
-
}
}
diff --git a/ProjectCruiser/EntityCruiser.cs b/ProjectCruiser/EntityCruiser.cs
index 4e3bd50..aaabd12 100644
--- a/ProjectCruiser/EntityCruiser.cs
+++ b/ProjectCruiser/EntityCruiser.cs
@@ -4,6 +4,7 @@
///
public class EntityCruiser
{
+ //свойства
///
/// Скорость
///
@@ -27,18 +28,18 @@ public class EntityCruiser
///
/// Признак (опция) наличие шлюпок
///
-
public bool Boat { get; private set; }
///
- /// Признак (опция) наличие тц
+ /// Признак (опция) наличие пушки
///
public bool Weapon { get; private set; }
+ //поле класса
///
/// Шаг перемещения автомобиля
///
public double Step => Speed * 100 / Weight;
///
- /// Инициализация полей объекта-класса спортивного автомобиля
+ /// Инициализация полей объекта-класса крейсера
///
/// скорость
/// вес
@@ -46,7 +47,7 @@ public class EntityCruiser
/// дополнительный цвет
/// вертолетная площадка
/// шлюпки
- /// наличие тц
+ /// наличие пушки
public void Init(int speed, double weight, Color bodyColor, Color
additionalColor, bool helicopterArea, bool boat, bool wepon)
{
diff --git a/ProjectCruiser/FormCruiser.cs b/ProjectCruiser/FormCruiser.cs
index cf05929..b14b170 100644
--- a/ProjectCruiser/FormCruiser.cs
+++ b/ProjectCruiser/FormCruiser.cs
@@ -1,14 +1,4 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
-
-namespace ProjectCruiser
+namespace ProjectCruiser
{
public partial class FormCruiser : Form
{
@@ -23,7 +13,7 @@ namespace ProjectCruiser
}
///
- /// Метод прорисовки машины
+ /// Метод прорисовки круисера
///
private void Draw()
{
@@ -55,8 +45,9 @@ namespace ProjectCruiser
Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)));
_drawningCruiser.SetPictureSize(pictureBox1.Width,
pictureBox1.Height);
- _drawningCruiser.SetPosition(random.Next(10, 100), random.Next(10,
- 100));
+
+ //начальное положение круисера
+ _drawningCruiser.SetPosition(random.Next(10, 100), random.Next(10, 100));
Draw();
}
///