Лабораторная работа №1 v 1.0
This commit is contained in:
parent
8b95c172a3
commit
f38246d46d
@ -1,6 +1,4 @@
|
|||||||
|
namespace ProjectAirplaneWithRadar
|
||||||
|
|
||||||
namespace ProjectAirplaneWithRadar
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Класс, отвечающий за прорисовку и перемещение объекта-сущности
|
/// Класс, отвечающий за прорисовку и перемещение объекта-сущности
|
||||||
@ -33,16 +31,15 @@ namespace ProjectAirplaneWithRadar
|
|||||||
private int? _startPosY;
|
private int? _startPosY;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ширина прорисовки автомобиля
|
/// Ширина прорисовки самолета
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const int PlaneWidth = 260;
|
public readonly int PlaneWidth = 260;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Высота прорисовки автомобиля
|
/// Высота прорисовки самолета
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const int PlaneHeight = 95;
|
public readonly int PlaneHeight = 95;
|
||||||
|
|
||||||
public const int FormPadding = 30;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Инициализация свойств
|
/// Инициализация свойств
|
||||||
@ -51,13 +48,12 @@ namespace ProjectAirplaneWithRadar
|
|||||||
/// <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="bodyKit">Признак наличия обвеса</param>
|
/// <param name="wheels">Шасси</param>
|
||||||
/// <param name="wing">Признак наличия антикрыла</param>
|
/// <param name="rocket">Ракета</param>
|
||||||
/// <param name="sportLine">Признак наличия гоночной полосы</param>
|
public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool wheels, bool rocket)
|
||||||
public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool bodyKit, bool wing, bool sportLine)
|
|
||||||
{
|
{
|
||||||
EntityAirplaneWithRadar = new EntityAirplaneWithRadar();
|
EntityAirplaneWithRadar = new EntityAirplaneWithRadar();
|
||||||
EntityAirplaneWithRadar.Init(speed, weight, bodyColor, additionalColor, bodyKit, wing, sportLine);
|
EntityAirplaneWithRadar.Init(speed, weight, bodyColor, additionalColor, wheels, rocket);
|
||||||
_pictureWidth = null;
|
_pictureWidth = null;
|
||||||
_pictureHeight = null;
|
_pictureHeight = null;
|
||||||
_startPosX = null;
|
_startPosX = null;
|
||||||
@ -76,11 +72,19 @@ namespace ProjectAirplaneWithRadar
|
|||||||
// если влезает, сохраняем границы и корректируем позицию объекта, если она была уже установлена
|
// если влезает, сохраняем границы и корректируем позицию объекта, если она была уже установлена
|
||||||
_pictureWidth = width;
|
_pictureWidth = width;
|
||||||
_pictureHeight = height;
|
_pictureHeight = height;
|
||||||
if (_startPosX is null || _startPosY is null)
|
//if (PlaneWidth < _pictureWidth || PlaneHeight < _pictureHeight)
|
||||||
{
|
//{
|
||||||
return false;
|
// return false;
|
||||||
}
|
//}
|
||||||
return SetPosition(_startPosX!.Value, _startPosY!.Value);
|
//if ((_startPosX + PlaneWidth) < _pictureWidth)
|
||||||
|
//{
|
||||||
|
// _startPosX -= PlaneWidth + _pictureWidth;
|
||||||
|
//}
|
||||||
|
//if ((_startPosY + PlaneHeight) < _pictureHeight)
|
||||||
|
//{
|
||||||
|
// _startPosY -= PlaneHeight + _pictureHeight;
|
||||||
|
//}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -88,21 +92,28 @@ namespace ProjectAirplaneWithRadar
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="x">Координата X</param>
|
/// <param name="x">Координата X</param>
|
||||||
/// <param name="y">Координата Y</param>
|
/// <param name="y">Координата Y</param>
|
||||||
public bool SetPosition(int x, int y)
|
public void SetPosition(int x, int y)
|
||||||
{
|
{
|
||||||
if (!_pictureHeight.HasValue || !_pictureWidth.HasValue)
|
if (!_pictureHeight.HasValue || !_pictureWidth.HasValue)
|
||||||
{
|
{
|
||||||
return true;
|
return;
|
||||||
}
|
}
|
||||||
|
//TODO (10:52)
|
||||||
|
_startPosX = x;
|
||||||
|
_startPosY = y;
|
||||||
|
//if (PlaneWidth < _pictureWidth || PlaneHeight < _pictureHeight)
|
||||||
|
//{
|
||||||
|
// return;
|
||||||
|
//}
|
||||||
|
//if ((_startPosX + PlaneWidth) < _pictureWidth)
|
||||||
|
//{
|
||||||
|
// _startPosX -= PlaneWidth + _pictureWidth;
|
||||||
|
//}
|
||||||
|
//if ((_startPosY + PlaneHeight) < _pictureHeight)
|
||||||
|
//{
|
||||||
|
// _startPosY -= PlaneHeight + _pictureHeight;
|
||||||
|
//}
|
||||||
|
|
||||||
int height = _pictureHeight.Value - PlaneHeight;
|
|
||||||
int width = _pictureWidth.Value - PlaneWidth;
|
|
||||||
|
|
||||||
// TODO если при установке объекта в эти координаты, он будет "выходить" за границы формы
|
|
||||||
// то надо изменить координаты, чтобы он оставался в этих границах
|
|
||||||
_startPosX = x < 0 ? 0 : x > width ? width : x;
|
|
||||||
_startPosY = y < 0 ? 0 : y > height ? height : y;
|
|
||||||
return (x < 0 || x > width || y < 0 || y > height) == false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -1,6 +1,4 @@
|
|||||||
|
namespace ProjectAirplaneWithRadar
|
||||||
|
|
||||||
namespace ProjectAirplaneWithRadar
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Класс-сущность "Самолет с радаром"
|
/// Класс-сущность "Самолет с радаром"
|
||||||
@ -33,40 +31,32 @@ namespace ProjectAirplaneWithRadar
|
|||||||
public bool Wheels { get; private set; }
|
public bool Wheels { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Признак (опция) наличия антикрыла
|
/// Признак (опция) наличия ракеты
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool Rocket { get; private set; }
|
public bool Rocket { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Признак (опция) наличия гоночной полосы
|
|
||||||
/// </summary>
|
|
||||||
public bool SportLine { get; private set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Шаг перемещения автомобиля
|
/// Шаг перемещения автомобиля
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double Step => Speed * 100 / Weight;
|
public double Step => Speed * 100 / Weight;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Инициализация полей объекта-класса спортивного автомобиля
|
/// Инициализация полей объекта-класса самолета с радаром
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="speed">Скорость</param>
|
/// <param name="speed">Скорость</param>
|
||||||
/// <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="bodyKit">Признак наличия обвеса</param>
|
/// <param name="wheels">Шасси</param>
|
||||||
/// <param name="wing">Признак наличия антикрыла</param>
|
/// <param name="rocket">Ракета</param>
|
||||||
/// <param name="sportLine">Признак наличия гоночной полосы</param>
|
public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool wheels, bool rocket)
|
||||||
public void Init(int speed, double weight, Color bodyColor, Color additionalColor, bool wheels, bool rocket, bool sportLine)
|
|
||||||
{
|
{
|
||||||
Speed = speed;
|
Speed = speed;
|
||||||
Weight = weight;
|
Weight = weight;
|
||||||
BodyColor = bodyColor;
|
BodyColor = bodyColor;
|
||||||
AdditionalColor = additionalColor;
|
AdditionalColor = additionalColor;
|
||||||
Wheels = wheels;
|
Wheels = wheels;
|
||||||
|
|
||||||
Rocket = rocket;
|
Rocket = rocket;
|
||||||
SportLine = sportLine;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -118,8 +118,6 @@
|
|||||||
Controls.Add(pictureBoxAirplaneWithRadar);
|
Controls.Add(pictureBoxAirplaneWithRadar);
|
||||||
Name = "FormAirplaneWithRadar";
|
Name = "FormAirplaneWithRadar";
|
||||||
Text = "Самолет с радаром";
|
Text = "Самолет с радаром";
|
||||||
Load += FormAirplaneWithRadar_Load;
|
|
||||||
ResizeEnd += FormAirplaneWithRadar_ResizeEnd;
|
|
||||||
((System.ComponentModel.ISupportInitialize)pictureBoxAirplaneWithRadar).EndInit();
|
((System.ComponentModel.ISupportInitialize)pictureBoxAirplaneWithRadar).EndInit();
|
||||||
ResumeLayout(false);
|
ResumeLayout(false);
|
||||||
}
|
}
|
||||||
|
@ -1,24 +1,28 @@
|
|||||||
using System;
|
namespace ProjectAirplaneWithRadar
|
||||||
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 ProjectAirplaneWithRadar
|
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Форма работы с объектом "Самолет с радаром"
|
||||||
|
/// </summary>
|
||||||
public partial class FormAirplaneWithRadar : Form
|
public partial class FormAirplaneWithRadar : Form
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Поле-объект для происовки объект
|
||||||
|
/// </summary>
|
||||||
private DrawingAirplaneWithRadar? _drawingAirplaneWithRadar;
|
private DrawingAirplaneWithRadar? _drawingAirplaneWithRadar;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Конструктор формы
|
||||||
|
/// </summary>
|
||||||
public FormAirplaneWithRadar()
|
public FormAirplaneWithRadar()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
MinimumSize = new Size(DrawingAirplaneWithRadar.PlaneWidth + 40, DrawingAirplaneWithRadar.PlaneHeight + 40 + DrawingAirplaneWithRadar.FormPadding);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Обработка нажатия кнопки "Создать"
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
private void ButtonCreate_Click(object sender, EventArgs e)
|
private void ButtonCreate_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Random random = new();
|
Random random = new();
|
||||||
@ -26,20 +30,33 @@ namespace ProjectAirplaneWithRadar
|
|||||||
_drawingAirplaneWithRadar.Init(random.Next(100, 300), random.Next(1000, 3000),
|
_drawingAirplaneWithRadar.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)),
|
||||||
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)));
|
Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2)));
|
||||||
_drawingAirplaneWithRadar.SetPictureSize(pictureBoxAirplaneWithRadar.Width, pictureBoxAirplaneWithRadar.Height);
|
_drawingAirplaneWithRadar.SetPictureSize(pictureBoxAirplaneWithRadar.Width, pictureBoxAirplaneWithRadar.Height);
|
||||||
_drawingAirplaneWithRadar.SetPosition(random.Next(10, 100), random.Next(10, 100));
|
_drawingAirplaneWithRadar.SetPosition(random.Next(10, 100), random.Next(10, 100));
|
||||||
|
|
||||||
UpdatePlane();
|
UpdatePlane();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Метод прорисовки самолета
|
||||||
|
/// </summary>
|
||||||
private void UpdatePlane()
|
private void UpdatePlane()
|
||||||
{
|
{
|
||||||
|
if (_drawingAirplaneWithRadar == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
Bitmap bmp = new(pictureBoxAirplaneWithRadar.Width, pictureBoxAirplaneWithRadar.Height);
|
Bitmap bmp = new(pictureBoxAirplaneWithRadar.Width, pictureBoxAirplaneWithRadar.Height);
|
||||||
Graphics gr = Graphics.FromImage(bmp);
|
Graphics gr = Graphics.FromImage(bmp);
|
||||||
_drawingAirplaneWithRadar?.DrawTransport(gr);
|
_drawingAirplaneWithRadar?.DrawTransport(gr);
|
||||||
pictureBoxAirplaneWithRadar.Image = bmp;
|
pictureBoxAirplaneWithRadar.Image = bmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Перемещение объекта по форме (нажатие кнопок навигации)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
private void ButtonMove_Click(object sender, EventArgs e)
|
private void ButtonMove_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (_drawingAirplaneWithRadar == null)
|
if (_drawingAirplaneWithRadar == null)
|
||||||
@ -73,26 +90,7 @@ namespace ProjectAirplaneWithRadar
|
|||||||
_drawingAirplaneWithRadar.MoveTransport(result);
|
_drawingAirplaneWithRadar.MoveTransport(result);
|
||||||
|
|
||||||
UpdatePlane();
|
UpdatePlane();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void FormAirplaneWithRadar_ResizeEnd(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (_drawingAirplaneWithRadar is null)
|
|
||||||
return;
|
|
||||||
bool outOfRange = _drawingAirplaneWithRadar.SetPictureSize(pictureBoxAirplaneWithRadar.Width, pictureBoxAirplaneWithRadar.Height);
|
|
||||||
if (outOfRange)
|
|
||||||
{
|
|
||||||
UpdatePlane();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void FormAirplaneWithRadar_Load(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user