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