PIbd-22 Kaznacheeva E.K. LabWork_01 #1

Merged
kaznacheeva merged 4 commits from LabWork_01 into main 2023-09-27 10:03:06 +04:00
3 changed files with 88 additions and 200 deletions
Showing only changes of commit 25753f7cac - Show all commits

View File

@ -34,11 +34,8 @@ namespace Battleship
_drawningBattleship = new DrawningBattleship();
_drawningBattleship.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)),
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)),
pictureBoxBattleship.Width, pictureBoxBattleship.Height);
_drawningBattleship.SetPosition(random.Next(10, 100),

View File

@ -34,35 +34,39 @@ namespace Battleship
/// <summary>
/// Ширина прорисовки автомобиля
/// </summary>
private readonly int _buttleshipWidth = 150;
private readonly int _buttleshipWidth = 175;
/// <summary>
/// Высота прорисовки автомобиля
/// </summary>
private readonly int _buttleshipHeight = 70;
/// <summary>
/// Инициализация свойств
/// </summary>
/// <param name="speed">Скорость</param>
/// <param name="weight">Вес</param>
/// <param name="bodyColor">Цвет кузова</param>
/// <param name="additionalColor">Дополнительный цвет</param>
/// <param name="bodyKit">Признак наличия обвеса</param>
/// <param name="wing">Признак наличия антикрыла</param>
/// <param name="sportLine">Признак наличия гоночной полосы</param>
/// <param name="width">Ширина картинки</param>
/// <param name="height">Высота картинки</param>
/// <returns>true - объект создан, false - проверка не пройдена,
///нельзя создать объект в этих размерах</returns>
public bool Init(int speed, double weight, Color bodyColor, Color
additionalColor, bool bodyKit, bool wing, bool sportLine, int width, int height)
private readonly int _buttleshipHeight = 80;
///// <summary>
///// Инициализация свойств
///// </summary>
///// <param name="speed">Скорость</param>
///// <param name="weight">Вес</param>
///// <param name="bodyColor">Цвет кузова</param>
///// <param name="additionalColor">Дополнительный цвет</param>
///// <param name="bodyKit">Признак наличия обвеса</param>
///// <param name="wing">Признак наличия антикрыла</param>
///// <param name="sportLine">Признак наличия гоночной полосы</param>
///// <param name="width">Ширина картинки</param>
///// <param name="height">Высота картинки</param>
///// <returns>true - объект создан, false - проверка не пройдена,
/////нельзя создать объект в этих размерах</retu rns>
public bool Init(int speed, double weight, Color bodyColor, Color additionalColor, bool tower, bool section, int width, int height)
{
// TODO: Продумать проверки
if(width < _buttleshipWidth || height < _buttleshipHeight)
{
return false;
}
_pictureWidth = width;
_pictureHeight = height;
EntityBattleship = new EntityBattleship();
EntityBattleship.Init(speed, weight, bodyColor, additionalColor,
bodyKit, wing, sportLine);
EntityBattleship.Init(speed, weight, bodyColor, additionalColor,
tower, section);
return true;
}
/// <summary>
@ -73,8 +77,11 @@ additionalColor, bool bodyKit, bool wing, bool sportLine, int width, int height)
public void SetPosition(int x, int y)
Review

Нет корректировки координат, если при текущих объект "выходит" за границы

Нет корректировки координат, если при текущих объект "выходит" за границы
{
// TODO: Изменение x, y
_startPosX = x;
_startPosY = y;
if (x >= 0 && x + _buttleshipWidth <= _pictureWidth && y >= 0 && y + _buttleshipHeight <= _pictureHeight)
{
_startPosX = x;
_startPosY = y;
}
}
/// <summary>
/// Изменение направления перемещения
@ -86,6 +93,7 @@ additionalColor, bool bodyKit, bool wing, bool sportLine, int width, int height)
{
return;
}
switch (direction)
{
//влево
@ -104,16 +112,14 @@ additionalColor, bool bodyKit, bool wing, bool sportLine, int width, int height)
break;
// вправо
case DirectionType.Right:
// TODO: Продумать логику
if (_startPosX + _buttleshipWidth + EntityBattleship.Step < 800)
if (_startPosX + _buttleshipWidth + EntityBattleship.Step < _pictureWidth)
{
_startPosX += (int)EntityBattleship.Step;
}
break;
//вниз
case DirectionType.Down:
// TODO: Продумать логику
if (_startPosY + _buttleshipHeight + EntityBattleship.Step < 450)
if (_startPosY + _buttleshipHeight + EntityBattleship.Step < _pictureHeight)
{
_startPosY += (int)EntityBattleship.Step;
}
@ -134,173 +140,59 @@ additionalColor, bool bodyKit, bool wing, bool sportLine, int width, int height)
Brush additionalBrush = new
SolidBrush(EntityBattleship.AdditionalColor);
//корпус линкора
Brush Brush = new
SolidBrush(EntityBattleship.AdditionalColor);
//основа
Brush mainBrush = new SolidBrush(EntityBattleship.BodyColor);
Point[] hull = new Point[]
{
new Point(_startPosX + 40, _startPosY + 20),
new Point(_startPosX + 150, _startPosY + 20),
new Point(_startPosX + 180, _startPosY + 55),
new Point(_startPosX + 150, _startPosY + 90),
new Point(_startPosX + 40, _startPosY + 90),
new Point(_startPosX + 10, _startPosY + 0),
new Point(_startPosX + 120, _startPosY + 0),
new Point(_startPosX + 160, _startPosY + 35),
new Point(_startPosX + 120, _startPosY + 70),
new Point(_startPosX + 10, _startPosY + 70),
};
g.FillPolygon(Brush, hull);
g.FillPolygon(mainBrush, hull);
g.DrawPolygon(pen, hull);
//блоки
Brush blockBrush2 = new
SolidBrush(Color.Gray);
g.FillRectangle(blockBrush2, _startPosX + 100, _startPosY + 35, 20, 40);
g.DrawRectangle(pen, _startPosX + 100, _startPosY+35, 20, 40);
Brush blockBrush = new
SolidBrush(Color.DimGray);
g.FillRectangle(blockBrush, _startPosX + 70, _startPosY + 15, 20, 40);
g.DrawRectangle(pen, _startPosX + 70, _startPosY + 15, 20, 40);
Brush blockBrush1 = new
SolidBrush(EntityBattleship.BodyColor);
g.FillRectangle(blockBrush1, _startPosX + 70, _startPosY + 45, 30, 20);
g.DrawRectangle(pen, _startPosX + 70, _startPosY + 45, 30, 20);
g.FillRectangle(additionalBrush, _startPosX + 40, _startPosY + 25, 30, 20);
g.DrawRectangle(pen, _startPosX + 40, _startPosY + 25, 30, 20);
g.FillEllipse(blockBrush1, _startPosX + 130, _startPosY + 40, 30, 30);
g.DrawEllipse(pen, _startPosX + 130, _startPosY + 40, 30, 30);
//орудийная башня
Brush towerBrush = new
SolidBrush(EntityBattleship.AdditionalColor);
g.FillRectangle(towerBrush, _startPosX + 138, _startPosY + 48, 15, 15);
g.DrawRectangle(pen, _startPosX + 138, _startPosY + 48, 15, 15);
Brush gunBrush = new
SolidBrush(Color.Black);
g.FillRectangle(gunBrush, _startPosX + 153, _startPosY + 52, 55, 6);
g.DrawRectangle(pen, _startPosX + 153, _startPosY + 52, 55, 6);
g.FillEllipse(additionalBrush, _startPosX + 100, _startPosY + 20, 30, 30);
g.DrawEllipse(pen, _startPosX + 100, _startPosY + 20, 30, 30);
//для ускорения
Brush speedBrush = new
SolidBrush(Color.Orange);
g.FillRectangle(speedBrush, _startPosX + 35, _startPosY + 30, 5, 20);
g.DrawRectangle(pen, _startPosX + 35, _startPosY + 30, 5, 20);
g.FillRectangle(speedBrush, _startPosX + 35, _startPosY + 60, 5, 20);
g.DrawRectangle(pen, _startPosX + 35, _startPosY + 60, 5, 20);
SolidBrush(Color.Gold);
g.FillRectangle(speedBrush, _startPosX + 5, _startPosY + 10, 5, 20);
g.DrawRectangle(pen, _startPosX + 5, _startPosY + 10, 5, 20);
g.FillRectangle(speedBrush, _startPosX + 5, _startPosY + 40, 5, 20);
g.DrawRectangle(pen, _startPosX + 5, _startPosY + 40, 5, 20);
//орудийная башня
if (EntityBattleship.Tower)
{
Brush baseBrush = new SolidBrush(Color.White);
g.FillRectangle(baseBrush, _startPosX + 108, _startPosY + 28, 15, 15);
g.DrawRectangle(pen, _startPosX + 108, _startPosY + 28, 15, 15);
Brush gunBrush = new SolidBrush(Color.Black);
g.FillRectangle(gunBrush, _startPosX + 123, _startPosY + 32, 47, 6);
g.DrawRectangle(pen, _startPosX + 123, _startPosY + 32, 55, 6);
}
//отсеки под ракеты
Brush sectionBrush = new
SolidBrush(Color.Gray);
g.FillRectangle(sectionBrush, _startPosX + 50, _startPosY + 90, 40, 10);
g.DrawRectangle(pen, _startPosX + 50, _startPosY + 90, 40, 10);
g.FillRectangle(sectionBrush, _startPosX + 100, _startPosY + 90, 40, 10);
g.DrawRectangle(pen, _startPosX + 100, _startPosY + 90, 40, 10);
// обвесы
// if (EntityBattleship.BodyKit)
// {
// g.DrawEllipse(pen, _startPosX + 90, _startPosY, 20, 20);
// g.DrawEllipse(pen, _startPosX + 90, _startPosY + 40, 20,
// 20);
// g.DrawRectangle(pen, _startPosX + 90, _startPosY + 10,
// 20, 40);
// g.DrawRectangle(pen, _startPosX + 90, _startPosY, 15,
// 15);
// g.DrawRectangle(pen, _startPosX + 90, _startPosY + 45,
// 15, 15);
// g.FillEllipse(additionalBrush, _startPosX + 90,
// _startPosY, 20, 20);
// g.FillEllipse(additionalBrush, _startPosX + 90,
// _startPosY + 40, 20, 20);
// g.FillRectangle(additionalBrush, _startPosX + 90,
// _startPosY + 10, 20, 40);
// g.FillRectangle(additionalBrush, _startPosX + 90,
//_startPosY + 1, 15, 15);
// g.FillRectangle(additionalBrush, _startPosX + 90,
// _startPosY + 45, 15, 15);
// g.DrawEllipse(pen, _startPosX, _startPosY, 20, 20);
// g.DrawEllipse(pen, _startPosX, _startPosY + 40, 20, 20);
// g.DrawRectangle(pen, _startPosX, _startPosY + 10, 20,
// 40);
// g.DrawRectangle(pen, _startPosX + 5, _startPosY, 14,
// 15);
// g.DrawRectangle(pen, _startPosX + 5, _startPosY + 45,
// 14, 15);
// g.FillEllipse(additionalBrush, _startPosX, _startPosY,
// 20, 20);
// g.FillEllipse(additionalBrush, _startPosX, _startPosY +
// 40, 20, 20);
// g.FillRectangle(additionalBrush, _startPosX + 1,
// _startPosY + 10, 25, 40);
// g.FillRectangle(additionalBrush, _startPosX + 5,
// _startPosY + 1, 15, 15);
// g.FillRectangle(additionalBrush, _startPosX + 5,
// _startPosY + 45, 15, 15);
// g.DrawRectangle(pen, _startPosX + 35, _startPosY, 39,
// 15);
// g.DrawRectangle(pen, _startPosX + 35, _startPosY + 45,
// 39, 15);
// g.FillRectangle(additionalBrush, _startPosX + 35,
// _startPosY + 1, 40, 15);
// g.FillRectangle(additionalBrush, _startPosX + 35,
// _startPosY + 45, 40, 15);
// }
// //границы автомобиля
// g.DrawEllipse(pen, _startPosX + 10, _startPosY + 5, 20, 20);
// g.DrawEllipse(pen, _startPosX + 10, _startPosY + 35, 20, 20);
// g.DrawEllipse(pen, _startPosX + 80, _startPosY + 5, 20, 20);
// g.DrawEllipse(pen, _startPosX + 80, _startPosY + 35, 20, 20);
// g.DrawRectangle(pen, _startPosX + 9, _startPosY + 15, 10, 30);
// g.DrawRectangle(pen, _startPosX + 90, _startPosY + 15, 10,
// 30);
// g.DrawRectangle(pen, _startPosX + 20, _startPosY + 4, 70, 52);
// //задние фары
// Brush brRed = new SolidBrush(Color.Red);
// g.FillEllipse(brRed, _startPosX + 10, _startPosY + 5, 20, 20);
// g.FillEllipse(brRed, _startPosX + 10, _startPosY + 35, 20,
// 20);
// //передние фары
// Brush brYellow = new SolidBrush(Color.Yellow);
// g.FillEllipse(brYellow, _startPosX + 80, _startPosY + 5, 20,
// 20);
// g.FillEllipse(brYellow, _startPosX + 80, _startPosY + 35, 20,
// 20);
// //кузов
// Brush br = new SolidBrush(EntityBattleship.BodyColor);
// g.FillRectangle(br, _startPosX + 10, _startPosY + 15, 10, 30);
// g.FillRectangle(br, _startPosX + 90, _startPosY + 15, 10, 30);
// g.FillRectangle(br, _startPosX + 20, _startPosY + 5, 70, 50);
// //стекла
// Brush brBlue = new SolidBrush(Color.LightBlue);
// g.FillRectangle(brBlue, _startPosX + 70, _startPosY + 10, 5,
// 40);
// g.FillRectangle(brBlue, _startPosX + 30, _startPosY + 10, 5,
// 40);
// g.FillRectangle(brBlue, _startPosX + 35, _startPosY + 8, 35,
// 2);
// g.FillRectangle(brBlue, _startPosX + 35, _startPosY + 51, 35,
// 2);
// //выделяем рамкой крышу
// g.DrawRectangle(pen, _startPosX + 35, _startPosY + 10, 35,
// 40);
// g.DrawRectangle(pen, _startPosX + 75, _startPosY + 15, 25,
// 30);
// g.DrawRectangle(pen, _startPosX + 10, _startPosY + 15, 15,
// 30);
// // спортивная линия
// if (EntityBattleship.SportLine)
// {
// g.FillRectangle(additionalBrush, _startPosX + 75,
// _startPosY + 23, 25, 15);
// g.FillRectangle(additionalBrush, _startPosX + 35,
// _startPosY + 23, 35, 15);
// g.FillRectangle(additionalBrush, _startPosX + 10,
// _startPosY + 23, 20, 15);
// }
// // крыло
// if (EntityBattleship.Wing)
// {
// g.FillRectangle(additionalBrush, _startPosX, _startPosY
// + 5, 10, 50);
// g.DrawRectangle(pen, _startPosX, _startPosY + 5, 10,
// 50);
// }
if (EntityBattleship.Section)
{
Brush sectionBrush = new
SolidBrush(Color.Gray);
g.FillRectangle(sectionBrush, _startPosX + 20, _startPosY + 70, 40, 10);
g.DrawRectangle(pen, _startPosX + 20, _startPosY + 70, 40, 10);
g.FillRectangle(sectionBrush, _startPosX + 75, _startPosY + 70, 40, 10);
g.DrawRectangle(pen, _startPosX + 75, _startPosY + 70, 40, 10);
}
}
}
}

View File

@ -27,15 +27,15 @@ namespace Battleship
/// <summary>
/// Признак (опция) наличия обвеса
/// </summary>
public bool BodyKit { get; private set; }
//public bool BodyKit { get; private set; }
// /// <summary>
// /// Признак (опция) наличия башни
// /// </summary>
public bool Tower { get; private set; }
/// <summary>
/// Признак (опция) наличия антикрыла
/// Признак (опция) наличия секции под ракеты
/// </summary>
public bool Wing { get; private set; }
/// <summary>
/// Признак (опция) наличия гоночной полосы
/// </summary>
public bool SportLine { get; private set; }
public bool Section { get; private set; }
/// <summary>
/// Шаг перемещения автомобиля
/// </summary>
@ -48,18 +48,17 @@ namespace Battleship
/// <param name="bodyColor">Основной цвет</param>
/// <param name="additionalColor">Дополнительный цвет</param>
/// <param name="bodyKit">Признак наличия обвеса</param>
/// <param name="wing">Признак наличия антикрыла</param>
/// <param name="sportLine">Признак наличия гоночной полосы</param>
/// <param name="tower">Признак наличия антикрыла</param>
/// <param name="section">Признак наличия гоночной полосы</param>
public void Init(int speed, double weight, Color bodyColor, Color
additionalColor, bool bodyKit, bool wing, bool sportLine)
additionalColor, bool tower, bool section)
{
Speed = speed;
Weight = weight;
BodyColor = bodyColor;
AdditionalColor = additionalColor;
BodyKit = bodyKit;
Wing = wing;
SportLine = sportLine;
AdditionalColor = additionalColor;
Tower = tower;
Section = section;
}
}
}