В образце автомобильной игры я хочу, чтобы машина двигалась по экрану, и я хочу, чтобы она была «привязана» к краям. Тем не менее, он продолжает отсекать и выходит за пределы экрана.
Я сделал прямоугольник с картинкой и использовал размеры изображения автомобиля, центрированного в картинке, для построения модели кода. Picturebox имеет размер 100x100, а изображение автомобиля (если смотреть вбок) примерно 50x100. Например, если машина движется вбок от краев экрана, я бы сделал Y-расположение в поле для картинок -25. Тем не менее, я чувствую, что это слишком неудобно, потому что мне, возможно, придется изменить картину автомобиля.
Point pNewLoc = carLocation;
int iX = Width - pbCar.Width;
int iY = Height - pbCar.Height;
if (pNewLoc.X <= 0 || pNewLoc.X >= iX)
{
if (pNewLoc.X <= 0)
{
if (iDirection == CarDirection.UP || iDirection == CarDirection.DOWN)
{
pNewLoc.X = -25;
}
else
{
pNewLoc.X = 0;
}
}
if (pNewLoc.X >= iX)
{
if (iDirection == CarDirection.UP || iDirection == CarDirection.DOWN)
{
pNewLoc.X = iX + 25;
}
else
{
pNewLoc.X = iX;
}
}
}
if (pNewLoc.Y <= 0 || pNewLoc.Y >= iY)
{
if (pNewLoc.Y <= 0)
{
if (iDirection == CarDirection.LEFT || iDirection == CarDirection.RIGHT)
{
pNewLoc.Y = -25;
}
else
{
pNewLoc.Y = 0;
}
}
if (pNewLoc.Y >= iY)
{
if (iDirection == CarDirection.LEFT || iDirection == CarDirection.RIGHT)
{
pNewLoc.Y = iY + 25;
}
else
{
pNewLoc.Y = iY;
}
}
}
carLocation = pNewLoc;
Этот код работает просто отлично, но я чувствую, что он слишком длинный и слишком неудобный.