This commit is contained in:
Данила Никифоров 2024-04-22 20:54:47 +04:00
parent f8c0112e97
commit 4a3a927777
10 changed files with 319 additions and 294 deletions

View File

@ -0,0 +1,25 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.9.34728.123
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProjectBoat", "ProjectBus\ProjectBoat.csproj", "{C59FB840-1FB7-448F-95EC-A93F736DC5A2}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C59FB840-1FB7-448F-95EC-A93F736DC5A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C59FB840-1FB7-448F-95EC-A93F736DC5A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C59FB840-1FB7-448F-95EC-A93F736DC5A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C59FB840-1FB7-448F-95EC-A93F736DC5A2}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {0CABDAF5-45EA-451F-B8F4-E997B01147FB}
EndGlobalSection
EndGlobal

View File

@ -1,4 +1,4 @@
namespace ProjectBus; namespace ProjectBoat;
/// <summary> /// <summary>
/// Направление перемещения /// Направление перемещения
/// </summary> /// </summary>

View File

@ -0,0 +1,219 @@
using ProjectBoat;
using System.Drawing.Drawing2D;
using System.Security.Cryptography.Xml;
namespace ProjectBoat;
/// <summary>
/// Класс, отвечающий за прорисовку и перемещение объекта-сущности
/// </summary>
public class DrawningBoat
{
/// <summary>
/// Класс-сущность
/// </summary>
public EntityBoat? EntityBoat { get; private set; }
/// <summary>
/// Ширина окна
/// </summary>
private int? _pictureWidth;
/// <summary>
/// Высота окна
/// </summary>
private int? _pictureHeight;
/// <summary>
/// Левая координата прорисовки автомобиля
/// </summary>
private int? _startPosX;
/// <summary>
/// Верхняя кооридната прорисовки автомобиля
/// </summary>
private int? _startPosY;
/// <summary>
/// Ширина прорисовки крейсера
/// </summary>
private readonly int _drawningBoatWidth = 150;
/// <summary>
/// Высота прорисовки крейсера
/// </summary>
private readonly int _drawningBoatHeight = 50;
private readonly int _drawningEnginesWidth = 3;
/// <summary>
/// Инициализация свойств
/// </summary>
/// <param name="speed">Скорость</param>
/// <param name="weight">Вес</param>
/// <param name="bodyColor">Основной цвет</param>
/// <param name="additionalColor">Дополнительный цвет</param>
/// <param name="motor">Признак наличия вертолетной площадки</param>
/// <param name="boat">Признак наличия шлюпок</param>
/// <param name="glass">Признак наличия пушки</param>
public void Init(int speed, double weight, Color bodyColor, Color
additionalColor, bool motor, bool boat, bool glass)
{
EntityBoat = new EntityBoat();
EntityBoat.Init(speed, weight, bodyColor, additionalColor,
motor, boat, glass);
_pictureWidth = null;
_pictureHeight = null;
_startPosX = null;
_startPosY = null;
}
/// <summary>
/// Установка границ поля
/// </summary>
/// <param name="width">Ширина поля</param>
/// <param name="height">Высота поля</param>
/// <returns>true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах</returns>
public bool SetPictureSize(int width, int height)
{
// TODO проверка, что объект "влезает" в размеры поля
// если влезает, сохраняем границы и корректируем позицию объекта,если она была уже установлена
if (_drawningBoatHeight > height || _drawningBoatWidth > width)
{
return false;
}
_pictureWidth = width;
_pictureHeight = height;
if (_startPosX.HasValue && _startPosY.HasValue)
{
SetPosition(_startPosX.Value, _startPosY.Value);
}
return true;
}
/// <summary>
/// Установка позиции
/// </summary>
/// <param name="x">Координата X</param>
/// <param name="y">Координата Y</param>
public void SetPosition(int x, int y)
{
if (!_pictureHeight.HasValue || !_pictureWidth.HasValue)
{
return;
}
if (x < 0 || x + _drawningBoatWidth > _pictureWidth || y < 0 || y + _drawningBoatHeight > _pictureHeight)
{
_startPosX = _pictureWidth - _drawningBoatWidth;
_startPosY = _pictureHeight - _drawningBoatHeight;
}
else
{
_startPosX = x;
_startPosY = y;
}
}
/// <summary>
/// Изменение направления перемещения
/// </summary>
/// <param name="direction">Направление</param>
/// <returns>true - перемещене выполнено, false - перемещение невозможно</returns>
public bool MoveTransport(DirectionType direction)
{
if (EntityBoat == null || !_startPosX.HasValue || !_startPosY.HasValue)
{
return false;
}
switch (direction)
{
//влево
case DirectionType.Left:
if (_startPosX.Value - EntityBoat.Step - _drawningEnginesWidth > 0)
{
_startPosX -= (int)EntityBoat.Step;
}
return true;
//вверх
case DirectionType.Up:
if (_startPosY.Value - EntityBoat.Step > 0)
{
_startPosY -= (int)EntityBoat.Step;
}
return true;
// вправо
case DirectionType.Right:
//TODO прописать логику сдвига в право
if (_startPosX.Value + EntityBoat.Step + _drawningBoatWidth < _pictureWidth)
{
_startPosX += (int)EntityBoat.Step;
}
return true;
//вниз
case DirectionType.Down:
if (_startPosY.Value + EntityBoat.Step + _drawningBoatHeight < _pictureHeight)
{
_startPosY += (int)EntityBoat.Step;
}
return true;
default:
return false;
}
}
/// <summary>
/// Прорисовка объекта
/// </summary>
/// <param name="g"></param>
public void DrawTransport(Graphics g)
{
if (EntityBoat == null || !_startPosX.HasValue ||
!_startPosY.HasValue)
{
return;
}
Pen pen = new(EntityBoat.BodyColor, 2);
Brush motorBrush = new SolidBrush(Color.Black);
Brush glassBrush = new SolidBrush(Color.Blue);
Brush glassBrush2 = new SolidBrush(EntityBoat.AdditionalColor);
Brush oarsBrush = new HatchBrush(HatchStyle.ZigZag, EntityBoat.AdditionalColor, Color.FromArgb(163, 163, 163));
Brush additionalBrush = new SolidBrush(EntityBoat.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);
g.DrawLine(pen, _startPosX.Value, _startPosY.Value + 49, _startPosX.Value + 105, _startPosY.Value + 49);
g.DrawLine(pen, _startPosX.Value + 105, _startPosY.Value + 49, _startPosX.Value + 147, _startPosY.Value + 24);
g.DrawLine(pen, _startPosX.Value, _startPosY.Value, _startPosX.Value, _startPosY.Value + 49);
//внутренности круисера
g.DrawRectangle(pen, _startPosX.Value + 25, _startPosY.Value + 10, 80, 30);
g.FillRectangle(additionalBrush, _startPosX.Value + 25, _startPosY.Value + 10, 80, 30);
if (EntityBoat.Motor)
{
g.FillRectangle(motorBrush, _startPosX.Value - 3, _startPosY.Value + 15, 20, 17);
}
if (EntityBoat.Oars)
{
g.DrawEllipse(pen, _startPosX.Value + 45, _startPosY.Value - 15, 10, 13);
g.FillEllipse(oarsBrush, _startPosX.Value + 45, _startPosY.Value - 15, 10, 13);
g.FillRectangle(motorBrush, _startPosX.Value + 49, _startPosY.Value - 1 , 2, 20);
g.DrawEllipse(pen, _startPosX.Value + 45, _startPosY.Value + 48, 10, 13);
g.FillEllipse(oarsBrush, _startPosX.Value + 45, _startPosY.Value + 48, 10, 13);
g.FillRectangle(motorBrush, _startPosX.Value + 49, _startPosY.Value + 30, 2, 20);
}
if (EntityBoat.Glass)
{
g.FillRectangle(glassBrush, _startPosX.Value + 100, _startPosY.Value + 7, 10, 36);
}
}
}

View File

@ -1,239 +0,0 @@
using ProjectBus;
using System.Drawing.Drawing2D;
using System.Security.Cryptography.Xml;
namespace ProjectBus;
/// <summary>
/// Класс, отвечающий за прорисовку и перемещение объекта-сущности
/// </summary>
public class DrawningBus
{
/// <summary>
/// Класс-сущность
/// </summary>
public EntityBus? EntityBus { get; private set; }
/// <summary>
/// Ширина окна
/// </summary>
private int? _pictureWidth;
/// <summary>
/// Высота окна
/// </summary>
private int? _pictureHeight;
/// <summary>
/// Левая координата прорисовки автомобиля
/// </summary>
private int? _startPosX;
/// <summary>
/// Верхняя кооридната прорисовки автомобиля
/// </summary>
private int? _startPosY;
/// <summary>
/// Ширина прорисовки крейсера
/// </summary>
private readonly int _drawningBusWidth = 150;
/// <summary>
/// Высота прорисовки крейсера
/// </summary>
private readonly int _drawningBusHeight = 50;
private readonly int _drawningEnginesWidth = 3;
/// <summary>
/// Инициализация свойств
/// </summary>
/// <param name="speed">Скорость</param>
/// <param name="weight">Вес</param>
/// <param name="bodyColor">Основной цвет</param>
/// <param name="additionalColor">Дополнительный цвет</param>
/// <param name="secondFloor">Признак наличия второго этажа</param>
/// <param name="ladder">Признак наличия лестнницы</param>
/// <param name="headlights">Признак наличия фар</param>
public void Init(int speed, double weight, Color bodyColor, Color
additionalColor, bool secondFloor, bool ladder, bool headlights)
{
EntityBus = new EntityBus();
EntityBus.Init(speed, weight, bodyColor, additionalColor,
secondFloor, ladder, headlights);
_pictureWidth = null;
_pictureHeight = null;
_startPosX = null;
_startPosY = null;
}
/// <summary>
/// Установка границ поля
/// </summary>
/// <param name="width">Ширина поля</param>
/// <param name="height">Высота поля</param>
/// <returns>true - границы заданы, false - проверка не пройдена, нельзя разместить объект в этих размерах</returns>
public bool SetPictureSize(int width, int height)
{
// TODO проверка, что объект "влезает" в размеры поля
// если влезает, сохраняем границы и корректируем позицию объекта,если она была уже установлена
if (_drawningBusHeight > height || _drawningBusWidth > width)
{
return false;
}
_pictureWidth = width;
_pictureHeight = height;
if (_startPosX.HasValue && _startPosY.HasValue)
{
SetPosition(_startPosX.Value, _startPosY.Value);
}
return true;
}
/// <summary>
/// Установка позиции
/// </summary>
/// <param name="x">Координата X</param>
/// <param name="y">Координата Y</param>
public void SetPosition(int x, int y)
{
if (!_pictureHeight.HasValue || !_pictureWidth.HasValue)
{
return;
}
if (x < 0 || x + _drawningBusWidth > _pictureWidth || y < 0 || y + _drawningBusHeight > _pictureHeight)
{
_startPosX = _pictureWidth - _drawningBusWidth;
_startPosY = _pictureHeight - _drawningBusHeight;
}
else
{
_startPosX = x;
_startPosY = y;
}
}
/// <summary>
/// Изменение направления перемещения
/// </summary>
/// <param name="direction">Направление</param>
/// <returns>true - перемещене выполнено, false - перемещение невозможно</returns>
public bool MoveTransport(DirectionType direction)
{
if (EntityBus == null || !_startPosX.HasValue || !_startPosY.HasValue)
{
return false;
}
switch (direction)
{
//влево
case DirectionType.Left:
if (_startPosX.Value - EntityBus.Step - _drawningEnginesWidth > 0)
{
_startPosX -= (int)EntityBus.Step;
}
return true;
//вверх
case DirectionType.Up:
if (_startPosY.Value - EntityBus.Step > 0)
{
_startPosY -= (int)EntityBus.Step;
}
return true;
// вправо
case DirectionType.Right:
//TODO прописать логику сдвига в право
if (_startPosX.Value + EntityBus.Step + _drawningBusWidth < _pictureWidth)
{
_startPosX += (int)EntityBus.Step;
}
return true;
//вниз
case DirectionType.Down:
if (_startPosY.Value + EntityBus.Step + _drawningBusHeight < _pictureHeight)
{
_startPosY += (int)EntityBus.Step;
}
return true;
default:
return false;
}
}
/// <summary>
/// Прорисовка объекта
/// </summary>
/// <param name="g"></param>
public void DrawTransport(Graphics g)
{
if (EntityBus == null || !_startPosX.HasValue ||
!_startPosY.HasValue)
{
return;
}
Pen pen = new(EntityBus.BodyColor, 2);
Pen pen2 = new(Color.Black, 2);
Brush additionalBrush = new SolidBrush(Color.Black);
Brush headlightsBrush = new SolidBrush(Color.Yellow);
Brush headlightsBrush2 = new SolidBrush(EntityBus.AdditionalColor);
Brush secondFloorBrush = new HatchBrush(HatchStyle.ZigZag, EntityBus.AdditionalColor, Color.FromArgb(163, 163, 163));
Brush ladderBrush = new SolidBrush(Color.LightBlue);
//границы круисера
g.FillRectangle(secondFloorBrush, _startPosX.Value, _startPosY.Value + 50, 150, 50);
g.DrawRectangle(pen, _startPosX.Value, _startPosY.Value + 50, 150, 50);
g.FillRectangle(headlightsBrush2, _startPosX.Value + 40, _startPosY.Value + 65, 20, 35);
g.DrawRectangle(pen, _startPosX.Value + 40, _startPosY.Value + 65, 20, 35);
g.FillEllipse(additionalBrush, _startPosX.Value + 15, _startPosY.Value + 90, 22, 22);
g.FillEllipse(additionalBrush, _startPosX.Value + 110, _startPosY.Value + 90, 22, 22);
g.FillEllipse(ladderBrush, _startPosX.Value + 130, _startPosY.Value + 55, 20, 30);
g.FillEllipse(ladderBrush, _startPosX.Value + 108, _startPosY.Value + 55, 20, 30);
g.FillEllipse(ladderBrush, _startPosX.Value + 86, _startPosY.Value + 55, 20, 30);
g.FillEllipse(ladderBrush, _startPosX.Value + 64, _startPosY.Value + 55, 20, 30);
if (EntityBus.SecondFloor)
{
g.FillRectangle(secondFloorBrush, _startPosX.Value, _startPosY.Value, 150, 50);
g.DrawRectangle(pen, _startPosX.Value, _startPosY.Value, 150, 50);
g.FillEllipse(ladderBrush, _startPosX.Value + 130, _startPosY.Value + 5, 20, 30);
g.FillEllipse(ladderBrush, _startPosX.Value + 105, _startPosY.Value + 5, 20, 30);
g.FillEllipse(ladderBrush, _startPosX.Value + 80, _startPosY.Value + 5, 20, 30);
g.FillEllipse(ladderBrush, _startPosX.Value + 55, _startPosY.Value + 5, 20, 30);
g.FillEllipse(ladderBrush, _startPosX.Value + 30, _startPosY.Value + 5, 20, 30);
//g.FillEllipse(ladderBrush, _startPosX.Value + 5, _startPosY.Value + 5, 20, 30);
//g.FillEllipse(ladderBrush, _startPosX.Value + -2, _startPosY.Value + 5, 20, 30);
if (EntityBus.Ladder)
{
g.FillRectangle(headlightsBrush2, _startPosX.Value, _startPosY.Value + 15, 20, 35);
g.DrawRectangle(pen, _startPosX.Value, _startPosY.Value + 15, 20, 35);
g.DrawLine(pen2, _startPosX.Value, _startPosY.Value + 50, _startPosX.Value, _startPosY.Value + 100);
g.DrawLine(pen2, _startPosX.Value + 20, _startPosY.Value + 50, _startPosX.Value + 20, _startPosY.Value + 100);
g.DrawLine(pen2, _startPosX.Value, _startPosY.Value + 60, _startPosX.Value + 20, _startPosY.Value + 60);
g.DrawLine(pen2, _startPosX.Value, _startPosY.Value + 70, _startPosX.Value + 20, _startPosY.Value + 70);
g.DrawLine(pen2, _startPosX.Value, _startPosY.Value + 80, _startPosX.Value + 20, _startPosY.Value + 80);
g.DrawLine(pen2, _startPosX.Value, _startPosY.Value + 90, _startPosX.Value + 20, _startPosY.Value + 90);
}
else
{
g.FillEllipse(ladderBrush, _startPosX.Value + 5, _startPosY.Value + 5, 20, 30);
g.FillEllipse(ladderBrush, _startPosX.Value + 5, _startPosY.Value + 55, 20, 30);
}
}
else
{
g.FillEllipse(ladderBrush, _startPosX.Value + 5, _startPosY.Value + 55, 20, 30);
}
if (EntityBus.Headlights)
{
g.FillEllipse(headlightsBrush, _startPosX.Value + 143, _startPosY.Value + 80, 8, 15);
}
}
}

View File

@ -1,8 +1,8 @@
namespace ProjectBus; namespace ProjectBoat;
/// <summary> /// <summary>
/// Класс-сущность "автобус" /// Класс-сущность "автобус"
/// </summary> /// </summary>
public class EntityBus public class EntityBoat
{ {
//свойства //свойства
/// <summary> /// <summary>
@ -24,15 +24,15 @@ public class EntityBus
/// <summary> /// <summary>
/// Признак (опция) наличие второго этажа /// Признак (опция) наличие второго этажа
/// </summary> /// </summary>
public bool SecondFloor { get; private set; } public bool Motor { get; private set; }
/// <summary> /// <summary>
/// Признак (опция) наличие лестницы /// Признак (опция) наличие лестницы
/// </summary> /// </summary>
public bool Ladder { get; private set; } public bool Oars { get; private set; }
/// <summary> /// <summary>
/// Признак (опция) наличие фар /// Признак (опция) наличие фар
/// </summary> /// </summary>
public bool Headlights { get; private set; } public bool Glass { get; private set; }
//поле класса //поле класса
/// <summary> /// <summary>
/// Шаг перемещения автомобиля /// Шаг перемещения автомобиля
@ -45,18 +45,18 @@ public class EntityBus
/// <param name="weight">вес</param> /// <param name="weight">вес</param>
/// <param name="bodyColor">основной цвет</param> /// <param name="bodyColor">основной цвет</param>
/// <param name="additionalColor">дополнительный цвет</param> /// <param name="additionalColor">дополнительный цвет</param>
/// <param name="secondFloor">второй этаж</param> /// <param name="motor">второй этаж</param>
/// <param name="ladder">лестница</param> /// <param name="oars">лестница</param>
/// <param name="headlights">наличие фар</param> /// <param name="glass">наличие фар</param>
public void Init(int speed, double weight, Color bodyColor, Color public void Init(int speed, double weight, Color bodyColor, Color
additionalColor, bool secondFloor, bool ladder, bool headlights) additionalColor, bool motor, bool oars, bool glass)
{ {
Speed = speed; Speed = speed;
Weight = weight; Weight = weight;
BodyColor = bodyColor; BodyColor = bodyColor;
AdditionalColor = additionalColor; AdditionalColor = additionalColor;
SecondFloor = secondFloor; Motor = motor;
Ladder = ladder; Oars = oars;
Headlights = headlights; Glass = glass;
} }
} }

View File

@ -1,6 +1,7 @@
namespace ProjectBus 
namespace ProjectBoat
{ {
partial class FormBus partial class FormBoat
{ {
/// <summary> /// <summary>
/// Required designer variable. /// Required designer variable.
@ -28,7 +29,7 @@
/// </summary> /// </summary>
private void InitializeComponent() private void InitializeComponent()
{ {
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormBus)); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormBoat));
pictureBox1 = new PictureBox(); pictureBox1 = new PictureBox();
button1 = new Button(); button1 = new Button();
buttonUp = new Button(); buttonUp = new Button();
@ -42,8 +43,9 @@
// //
pictureBox1.Dock = DockStyle.Fill; pictureBox1.Dock = DockStyle.Fill;
pictureBox1.Location = new Point(0, 0); pictureBox1.Location = new Point(0, 0);
pictureBox1.Margin = new Padding(3, 2, 3, 2);
pictureBox1.Name = "pictureBox1"; pictureBox1.Name = "pictureBox1";
pictureBox1.Size = new Size(800, 450); pictureBox1.Size = new Size(700, 338);
pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize; pictureBox1.SizeMode = PictureBoxSizeMode.AutoSize;
pictureBox1.TabIndex = 0; pictureBox1.TabIndex = 0;
pictureBox1.TabStop = false; pictureBox1.TabStop = false;
@ -51,22 +53,24 @@
// button1 // button1
// //
button1.Anchor = AnchorStyles.Bottom | AnchorStyles.Left; button1.Anchor = AnchorStyles.Bottom | AnchorStyles.Left;
button1.Location = new Point(12, 409); button1.Location = new Point(10, 307);
button1.Margin = new Padding(3, 2, 3, 2);
button1.Name = "button1"; button1.Name = "button1";
button1.Size = new Size(94, 29); button1.Size = new Size(82, 22);
button1.TabIndex = 1; button1.TabIndex = 1;
button1.Text = "создать"; button1.Text = "создать";
button1.UseVisualStyleBackColor = true; button1.UseVisualStyleBackColor = true;
button1.Click += ButtonCreateBus_Click; button1.Click += ButtonCreateBoat_Click;
// //
// buttonUp // buttonUp
// //
buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; buttonUp.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
buttonUp.BackgroundImage = (Image)resources.GetObject("buttonUp.BackgroundImage"); buttonUp.BackgroundImage = (Image)resources.GetObject("buttonUp.BackgroundImage");
buttonUp.BackgroundImageLayout = ImageLayout.Zoom; buttonUp.BackgroundImageLayout = ImageLayout.Zoom;
buttonUp.Location = new Point(722, 373); buttonUp.Location = new Point(632, 280);
buttonUp.Margin = new Padding(3, 2, 3, 2);
buttonUp.Name = "buttonUp"; buttonUp.Name = "buttonUp";
buttonUp.Size = new Size(30, 30); buttonUp.Size = new Size(26, 22);
buttonUp.TabIndex = 2; buttonUp.TabIndex = 2;
buttonUp.UseVisualStyleBackColor = true; buttonUp.UseVisualStyleBackColor = true;
buttonUp.Click += ButtonMove_Click; buttonUp.Click += ButtonMove_Click;
@ -76,9 +80,10 @@
buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; buttonDown.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
buttonDown.BackgroundImage = (Image)resources.GetObject("buttonDown.BackgroundImage"); buttonDown.BackgroundImage = (Image)resources.GetObject("buttonDown.BackgroundImage");
buttonDown.BackgroundImageLayout = ImageLayout.Zoom; buttonDown.BackgroundImageLayout = ImageLayout.Zoom;
buttonDown.Location = new Point(722, 409); buttonDown.Location = new Point(632, 307);
buttonDown.Margin = new Padding(3, 2, 3, 2);
buttonDown.Name = "buttonDown"; buttonDown.Name = "buttonDown";
buttonDown.Size = new Size(30, 30); buttonDown.Size = new Size(26, 22);
buttonDown.TabIndex = 3; buttonDown.TabIndex = 3;
buttonDown.UseVisualStyleBackColor = true; buttonDown.UseVisualStyleBackColor = true;
buttonDown.Click += ButtonMove_Click; buttonDown.Click += ButtonMove_Click;
@ -88,9 +93,10 @@
buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; buttonRight.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
buttonRight.BackgroundImage = (Image)resources.GetObject("buttonRight.BackgroundImage"); buttonRight.BackgroundImage = (Image)resources.GetObject("buttonRight.BackgroundImage");
buttonRight.BackgroundImageLayout = ImageLayout.Zoom; buttonRight.BackgroundImageLayout = ImageLayout.Zoom;
buttonRight.Location = new Point(758, 409); buttonRight.Location = new Point(663, 307);
buttonRight.Margin = new Padding(3, 2, 3, 2);
buttonRight.Name = "buttonRight"; buttonRight.Name = "buttonRight";
buttonRight.Size = new Size(30, 30); buttonRight.Size = new Size(26, 22);
buttonRight.TabIndex = 4; buttonRight.TabIndex = 4;
buttonRight.UseVisualStyleBackColor = true; buttonRight.UseVisualStyleBackColor = true;
buttonRight.Click += ButtonMove_Click; buttonRight.Click += ButtonMove_Click;
@ -100,26 +106,29 @@
buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right; buttonLeft.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
buttonLeft.BackgroundImage = (Image)resources.GetObject("buttonLeft.BackgroundImage"); buttonLeft.BackgroundImage = (Image)resources.GetObject("buttonLeft.BackgroundImage");
buttonLeft.BackgroundImageLayout = ImageLayout.Zoom; buttonLeft.BackgroundImageLayout = ImageLayout.Zoom;
buttonLeft.Location = new Point(686, 409); buttonLeft.Location = new Point(600, 307);
buttonLeft.Margin = new Padding(3, 2, 3, 2);
buttonLeft.Name = "buttonLeft"; buttonLeft.Name = "buttonLeft";
buttonLeft.Size = new Size(30, 30); buttonLeft.Size = new Size(26, 22);
buttonLeft.TabIndex = 5; buttonLeft.TabIndex = 5;
buttonLeft.UseVisualStyleBackColor = true; buttonLeft.UseVisualStyleBackColor = true;
buttonLeft.Click += ButtonMove_Click; buttonLeft.Click += ButtonMove_Click;
// //
// Form1 // FormBoat
// //
AutoScaleDimensions = new SizeF(8F, 20F); AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font; AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(800, 450); ClientSize = new Size(700, 338);
Controls.Add(buttonLeft); Controls.Add(buttonLeft);
Controls.Add(buttonRight); Controls.Add(buttonRight);
Controls.Add(buttonDown); Controls.Add(buttonDown);
Controls.Add(buttonUp); Controls.Add(buttonUp);
Controls.Add(button1); Controls.Add(button1);
Controls.Add(pictureBox1); Controls.Add(pictureBox1);
Name = "Form1"; Margin = new Padding(3, 2, 3, 2);
Text = "FormBus"; Name = "FormBoat";
Text = "FormBoat";
//Load += this.FormBoat_Load_1;
Click += ButtonMove_Click; Click += ButtonMove_Click;
((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit(); ((System.ComponentModel.ISupportInitialize)pictureBox1).EndInit();
ResumeLayout(false); ResumeLayout(false);

View File

@ -1,12 +1,12 @@
namespace ProjectBus namespace ProjectBoat
{ {
public partial class FormBus : Form public partial class FormBoat : Form
{ {
/// <summary> /// <summary>
/// Поле-объект для прорисовки объекта /// Поле-объект для прорисовки объекта
/// </summary> /// </summary>
private DrawningBus? _drawningBus; private DrawningBoat? _drawningBoat;
public FormBus() public FormBoat()
{ {
InitializeComponent(); InitializeComponent();
@ -17,14 +17,14 @@
/// </summary> /// </summary>
private void Draw() private void Draw()
{ {
if (_drawningBus == null) if (_drawningBoat == null)
{ {
return; return;
} }
Bitmap bmp = new(pictureBox1.Width, Bitmap bmp = new(pictureBox1.Width,
pictureBox1.Height); pictureBox1.Height);
Graphics gr = Graphics.FromImage(bmp); Graphics gr = Graphics.FromImage(bmp);
_drawningBus.DrawTransport(gr); _drawningBoat.DrawTransport(gr);
pictureBox1.Image = bmp; pictureBox1.Image = bmp;
} }
/// <summary> /// <summary>
@ -32,22 +32,22 @@
/// </summary> /// </summary>
/// <param name="sender"></param> /// <param name="sender"></param>
/// <param name="e"></param> /// <param name="e"></param>
private void ButtonCreateBus_Click(object sender, EventArgs e) private void ButtonCreateBoat_Click(object sender, EventArgs e)
{ {
Random random = new(); Random random = new();
_drawningBus = new DrawningBus(); _drawningBoat = new DrawningBoat();
_drawningBus.Init(random.Next(100, 300), random.Next(1000, 3000), _drawningBoat.Init(random.Next(100, 300), random.Next(1000, 3000),
Color.FromArgb(random.Next(0, 256), random.Next(0, 256), Color.FromArgb(random.Next(0, 256), random.Next(0, 256),
random.Next(0, 256)), random.Next(0, 256)),
Color.FromArgb(random.Next(0, 256), random.Next(0, 256), Color.FromArgb(random.Next(0, 256), 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)), Convert.ToBoolean(random.Next(0, 2))); Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)));
_drawningBus.SetPictureSize(pictureBox1.Width, _drawningBoat.SetPictureSize(pictureBox1.Width,
pictureBox1.Height); pictureBox1.Height);
//начальное положение круисера //начальное положение круисера
_drawningBus.SetPosition(random.Next(10, 100), random.Next(10, 100)); _drawningBoat.SetPosition(random.Next(10, 100), random.Next(10, 100));
Draw(); Draw();
} }
/// <summary> /// <summary>
@ -57,7 +57,7 @@
/// <param name="e"></param> /// <param name="e"></param>
private void ButtonMove_Click(object sender, EventArgs e) private void ButtonMove_Click(object sender, EventArgs e)
{ {
if (_drawningBus == null) if (_drawningBoat == null)
{ {
return; return;
} }
@ -67,19 +67,19 @@
{ {
case "buttonUp": case "buttonUp":
result = result =
_drawningBus.MoveTransport(DirectionType.Up); _drawningBoat.MoveTransport(DirectionType.Up);
break; break;
case "buttonDown": case "buttonDown":
result = result =
_drawningBus.MoveTransport(DirectionType.Down); _drawningBoat.MoveTransport(DirectionType.Down);
break; break;
case "buttonLeft": case "buttonLeft":
result = result =
_drawningBus.MoveTransport(DirectionType.Left); _drawningBoat.MoveTransport(DirectionType.Left);
break; break;
case "buttonRight": case "buttonRight":
result = result =
_drawningBus.MoveTransport(DirectionType.Right); _drawningBoat.MoveTransport(DirectionType.Right);
break; break;
} }
if (result) if (result)

View File

@ -121,7 +121,7 @@
<data name="buttonUp.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="buttonUp.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAABGsAAAZACAYAAADO3c9BAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO iVBORw0KGgoAAAANSUhEUgAABGsAAAZACAYAAADO3c9BAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vwAADr8BOAVTJAAAVu1JREFUeF7s3XHE5XXe//HcstZKkiRJMpIkSZIkSZJkJUmSlSRZK1lJxkokK0mS vQAADr0BR/uQrQAAVu1JREFUeF7s3XHE5XXe//HcstZKkiRJMpIkSZIkSZJkJUmSlSRZK1lJxkokK0mS
JGtkJUmSJEkykiRJMpIkyRgjY4wxxhhjjN/v9dnd7rutz3xmrus61/uc8z2PJw+/2++/na7rnO/3dZ3z JGtkJUmSJEkykiRJMpIkyRgjY4wxxhhjjN/v9dnd7rutz3xmrus61/uc8z2PJw+/2++/na7rnO/3dZ3z
+Z4iSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk +Z4iSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk
SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk
@ -498,7 +498,7 @@
<data name="buttonDown.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="buttonDown.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAABGsAAAZACAYAAADO3c9BAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO iVBORw0KGgoAAAANSUhEUgAABGsAAAZACAYAAADO3c9BAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vwAADr8BOAVTJAAAVmJJREFUeF7s3XGk5nX+//98ZK2VJEkykpEkSZKsJEmyspIkyUqSrJWsJGMlkpUk vQAADr0BR/uQrQAAVmJJREFUeF7s3XGk5nX+//98ZK2VJEkykpEkSZKsJEmyspIkyUqSrJWsJGMlkpUk
SZKVrCRZSVYyVpIkSZKRJEnGGBljjDHGGGP8fo/37mc/36199WzOnHOe531d1+3Ozf69zTnX9X4/znW9 SZKVrCRZSVYyVpIkSZKRJEnGGBljjDHGGGP8fo/37mc/36199WzOnHOe531d1+3Ozf69zTnX9X4/znW9
3qdJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJ 3qdJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJ
kiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJ kiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJ
@ -873,7 +873,7 @@
<data name="buttonRight.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="buttonRight.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAABkAAAARrCAYAAADb+Gp7AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO iVBORw0KGgoAAAANSUhEUgAABkAAAARrCAYAAADb+Gp7AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vwAADr8BOAVTJAAASClJREFUeF7s3Q+k3vX///F85SNJJjMzk0ySyXwkk8nMJEkyyWQySSaZZGYmGUmS vQAADr0BR/uQrQAASClJREFUeF7s3Q+k3vX///F85SNJJjMzk0ySyXwkk8nMJEkyyWQySSaZZGYmGUmS
ZJJJZpLMJJlkJjOZj5mZmZmZyczMzBwzxxzHMcfv93hXq7ad/+d9Xdf7/Xrf7tx8vt+vjy/V2RXn4Xq+ ZJJJZpLMJJlkJjOZj5mZmZmZyczMzBwzxxzHMcfv93hXq7ad/+d9Xdf7/Xrf7tx8vt+vjy/V2RXn4Xq+
7pMkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk 7pMkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk
SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk
@ -1187,7 +1187,7 @@
<data name="buttonLeft.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <data name="buttonLeft.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value> <value>
iVBORw0KGgoAAAANSUhEUgAABkAAAARrCAYAAADb+Gp7AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO iVBORw0KGgoAAAANSUhEUgAABkAAAARrCAYAAADb+Gp7AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO
vwAADr8BOAVTJAAAUVNJREFUeF7s3X/E34X+//F85DiSTDKTSSbJJEcySZIkSZJkkiTJ5EiSZJJIkiRJ vQAADr0BR/uQrQAAUVNJREFUeF7s3X/E34X+//F85DiSTDKTSSbJJEcySZIkSZJkkiTJ5EiSZJJIkiRJ
JpkkSZJMMpNM5pjMzMzMTGZmZmZmZuZymcv3+3idTufU9tyuX+8frx+3OzfO+bPrer9fF8+Hvd9XSZIk JpkkSZJMMpNM5pjMzMzMTGZmZmZmZuZymcv3+3idTufU9tyuX+8frx+3OzfO+bPrer9fF8+Hvd9XSZIk
SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk
SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk SZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIkSZIk

View File

@ -1,4 +1,4 @@
namespace ProjectBus namespace ProjectBoat
{ {
internal static class Program internal static class Program
{ {
@ -11,7 +11,7 @@ namespace ProjectBus
// To customize application configuration such as set high DPI settings or default font, // To customize application configuration such as set high DPI settings or default font,
// see https://aka.ms/applicationconfiguration. // see https://aka.ms/applicationconfiguration.
ApplicationConfiguration.Initialize(); ApplicationConfiguration.Initialize();
Application.Run(new FormBus()); Application.Run(new FormBoat());
} }
} }
} }

View File

@ -0,0 +1,11 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net8.0-windows</TargetFramework>
<Nullable>enable</Nullable>
<UseWindowsForms>true</UseWindowsForms>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
</Project>