Фиксы
This commit is contained in:
parent
ee7a0def18
commit
bc3f888f2f
@ -32,12 +32,66 @@ namespace AirPlaneWithRadar
|
||||
}
|
||||
public Bitmap MoveObject(Direction direction)
|
||||
{
|
||||
// TODO проверка, что объект может переместится в требуемом направлении
|
||||
if (true)
|
||||
|
||||
switch (direction)
|
||||
{
|
||||
_drawningObject.MoveObject(direction);
|
||||
}
|
||||
case Direction.Up:
|
||||
for (int i = 0; i < _map.GetLength(0); i++)
|
||||
{
|
||||
for (int j = 0; j < _map.GetLength(1); j++)
|
||||
{
|
||||
if (_map[i, j] == _barrier && ((_drawningObject.GetCurrentPosition().Left < i * _size_x && _drawningObject.GetCurrentPosition().Top > i * _size_x) ||
|
||||
(_drawningObject.GetCurrentPosition().Left < i * (_size_x + 1) && _drawningObject.GetCurrentPosition().Top > i * (_size_x + 1))) &&
|
||||
j * (_size_y + 1) < _drawningObject.GetCurrentPosition().Right && _drawningObject.GetCurrentPosition().Right - j * (_size_y + 1) <= _drawningObject.Step)
|
||||
return DrawMapWithObject();
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
case Direction.Down:
|
||||
for (int i = 0; i < _map.GetLength(0); i++)
|
||||
{
|
||||
for (int j = 0; j < _map.GetLength(1); j++)
|
||||
{
|
||||
if (_map[i, j] == _barrier && ((_drawningObject.GetCurrentPosition().Left < i * _size_x && _drawningObject.GetCurrentPosition().Top > i * _size_x) ||
|
||||
(_drawningObject.GetCurrentPosition().Left < i * (_size_x + 1) && _drawningObject.GetCurrentPosition().Top > i * (_size_x + 1))) &&
|
||||
j * _size_y > _drawningObject.GetCurrentPosition().Bottom && j * _size_y - _drawningObject.GetCurrentPosition().Bottom <= _drawningObject.Step)
|
||||
return DrawMapWithObject();
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
case Direction.Left:
|
||||
for (int i = 0; i < _map.GetLength(0); i++)
|
||||
{
|
||||
for (int j = 0; j < _map.GetLength(1); j++)
|
||||
{
|
||||
if (_map[i, j] == _barrier && ((_drawningObject.GetCurrentPosition().Right < j * _size_y && _drawningObject.GetCurrentPosition().Bottom > j * _size_y) ||
|
||||
(_drawningObject.GetCurrentPosition().Right < j * (_size_y + 1) && _drawningObject.GetCurrentPosition().Bottom > j * (_size_y + 1))) &&
|
||||
i * (_size_x + 1) < _drawningObject.GetCurrentPosition().Left && _drawningObject.GetCurrentPosition().Left - i * (_size_x + 1) <= _drawningObject.Step)
|
||||
return DrawMapWithObject();
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
case Direction.Right:
|
||||
for (int i = 0; i < _map.GetLength(0); i++)
|
||||
{
|
||||
for (int j = 0; j < _map.GetLength(1); j++)
|
||||
{
|
||||
if (_map[i, j] == _barrier && ((_drawningObject.GetCurrentPosition().Right < j * _size_y && _drawningObject.GetCurrentPosition().Bottom > j * _size_y) ||
|
||||
(_drawningObject.GetCurrentPosition().Right < j * (_size_y + 1) && _drawningObject.GetCurrentPosition().Bottom > j * (_size_y + 1))) &&
|
||||
i * (_size_x) > _drawningObject.GetCurrentPosition().Top && i * (_size_x) - _drawningObject.GetCurrentPosition().Top <= _drawningObject.Step)
|
||||
return DrawMapWithObject();
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
_drawningObject.MoveObject(direction);
|
||||
return DrawMapWithObject();
|
||||
|
||||
|
||||
}
|
||||
private bool SetObjectOnMap()
|
||||
{
|
||||
@ -48,7 +102,18 @@ namespace AirPlaneWithRadar
|
||||
int x = _random.Next(0, 10);
|
||||
int y = _random.Next(0, 10);
|
||||
_drawningObject.SetObject(x, y, _width, _height);
|
||||
// TODO првоерка, что объект не "накладывается" на закрытые участки
|
||||
if (_drawningObject is DrawingObjectPlane)
|
||||
{
|
||||
for (int i = 0; i < _map.GetLength(0); i++)
|
||||
{
|
||||
for (int j = 0; j < _map.GetLength(1); j++)
|
||||
{
|
||||
if (_map[i, j] == _barrier && _drawningObject.GetCurrentPosition().Left < i * _size_x && _drawningObject.GetCurrentPosition().Right < j * _size_y && _drawningObject.GetCurrentPosition().Top > i * _size_x && _drawningObject.GetCurrentPosition().Bottom > j * _size_y)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
private Bitmap DrawMapWithObject()
|
||||
|
@ -6,11 +6,11 @@ using System.Threading.Tasks;
|
||||
|
||||
namespace AirPlaneWithRadar
|
||||
{
|
||||
internal class DrawingObject : IDrawingObject
|
||||
internal class DrawingObjectPlane : IDrawingObject
|
||||
{
|
||||
private DrawingPlain _plain;
|
||||
|
||||
public DrawingObject(DrawingPlain plain)
|
||||
public DrawingObjectPlane(DrawingPlain plain)
|
||||
{
|
||||
_plain = plain;
|
||||
}
|
||||
@ -19,7 +19,7 @@ namespace AirPlaneWithRadar
|
||||
|
||||
public void DrawningObject(Graphics g)
|
||||
{
|
||||
//TODO
|
||||
_plain?.DrawTransoprt(g);
|
||||
}
|
||||
|
||||
public (float Left, float Right, float Top, float Bottom) GetCurrentPosition()
|
@ -23,7 +23,7 @@ namespace AirPlaneWithRadar
|
||||
toolStripStatusLabelSpeed.Text = $"Скорость: {plain.Plain.Speed}";
|
||||
toolStripStatusLabelWeight.Text = $"Вес: {plain.Plain.Weight}";
|
||||
toolStripStatusLabelColor.Text = $"Цвет: {plain.Plain.BodyColor.Name}";
|
||||
pictureBoxPlain.Image = _abstractMap.CreateMap(pictureBoxPlain.Width, pictureBoxPlain.Height,new DrawingObject(plain)) ;
|
||||
pictureBoxPlain.Image = _abstractMap.CreateMap(pictureBoxPlain.Width, pictureBoxPlain.Height,new DrawingObjectPlane(plain)) ;
|
||||
}
|
||||
private void ButtonCreate_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user