2_Laba Kalyshev Y V PIbd-22 #3
@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
@ -32,7 +33,23 @@ namespace PIbd_22_Kalyshev_Y_V_MotorBoat_Base
|
||||
public Bitmap MoveObject(Direction direction)
|
||||
{
|
||||
// TODO проверка, что объект может переместится в требуемом направлении
|
||||
if (true)
|
||||
bool enoughPlace = false;
|
||||
switch (direction)
|
||||
{
|
||||
case Direction.Up:
|
||||
enoughPlace = CheckEnoughPlace(0, _drawningObject.Step * -1);
|
||||
break;
|
||||
case Direction.Down:
|
||||
enoughPlace = CheckEnoughPlace(0, _drawningObject.Step);
|
||||
break;
|
||||
case Direction.Left:
|
||||
enoughPlace = CheckEnoughPlace(_drawningObject.Step * -1, 0);
|
||||
break;
|
||||
case Direction.Right:
|
||||
enoughPlace = CheckEnoughPlace(_drawningObject.Step, 0);
|
||||
break;
|
||||
}
|
||||
if (enoughPlace)
|
||||
{
|
||||
_drawningObject.MoveObject(direction);
|
||||
}
|
||||
@ -48,24 +65,30 @@ namespace PIbd_22_Kalyshev_Y_V_MotorBoat_Base
|
||||
int y = _random.Next(0, 10);
|
||||
_drawningObject.SetObject(x, y, _width, _height);
|
||||
// TODO првоерка, что объект не "накладывается" на закрытые участки
|
||||
while (!CheckEnoughPlace())
|
||||
while (!CheckEnoughPlace(0, 0))
|
||||
{
|
||||
x += 10;
|
||||
if (x >= _width)
|
||||
{
|
||||
y += 10;
|
||||
x = 0;
|
||||
if (y <= _height)
|
||||
{
|
||||
y += 10;
|
||||
x = 0;
|
||||
} else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
_drawningObject.SetObject(x, y, _width, _height);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
private bool CheckEnoughPlace()
|
||||
private bool CheckEnoughPlace(float x, float y)
|
||||
{
|
||||
int right = Convert.ToInt32(_drawningObject.GetCurrentPosition().Right / _size_x);
|
||||
int left = Convert.ToInt32(_drawningObject.GetCurrentPosition().Left / _size_x);
|
||||
int up = Convert.ToInt32(_drawningObject.GetCurrentPosition().Top / _size_y);
|
||||
int down = Convert.ToInt32(_drawningObject.GetCurrentPosition().Bottom / _size_y);
|
||||
int right = Convert.ToInt32((_drawningObject.GetCurrentPosition().Right + x) / _size_x) > 0 ? Convert.ToInt32((_drawningObject.GetCurrentPosition().Right + x) / _size_x) : 0;
|
||||
int left = Convert.ToInt32((_drawningObject.GetCurrentPosition().Left + x) / _size_x) > 0 ? Convert.ToInt32((_drawningObject.GetCurrentPosition().Left + x) / _size_x) : 0;
|
||||
int up = Convert.ToInt32((_drawningObject.GetCurrentPosition().Top + y) / _size_y) > 0 ? Convert.ToInt32((_drawningObject.GetCurrentPosition().Top + y) / _size_y) : 0;
|
||||
int down = Convert.ToInt32((_drawningObject.GetCurrentPosition().Bottom + y) / _size_y) > 0 ? Convert.ToInt32((_drawningObject.GetCurrentPosition().Bottom + y) / _size_y) : 0;
|
||||
for (int i = left; i <= right; i++)
|
||||
{
|
||||
for (int j = up; j <= down; j++)
|
||||
|
@ -19,7 +19,7 @@ namespace PIbd_22_Kalyshev_Y_V_MotorBoat_Base
|
||||
/// <param name="wing">Признак наличия антикрыла</param>
|
||||
/// <param name="sportLine">Признак наличия гоночной полосы</param>
|
||||
public DrawningSportBoat(int speed, float weight, Color bodyColor, Color dopColor, bool bodyKit, bool wing, bool sportLine) :
|
||||
base(speed, weight, bodyColor, 195, 60)
|
||||
base(speed, weight, bodyColor, 195, 80)
|
||||
{
|
||||
Boat = new EntitySportBoat(speed, weight, bodyColor, dopColor, bodyKit, wing, sportLine);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user