这是我写的在屏幕上移动正方形的算法,xcenter和ycenter是正方形的中心。speedx是水平方向的速度,垂直方向的速度。
while (true)
{
int keyState = getKeyStates();
// Update the ball's position
xCenter += speedX;
yCenter += speedY;
// Check if the ball hit the bound. 'Reflect' the ball if so.
if (xCenter > xMax)
{
xCenter = xMax;
speedX = -speedX;
}
else if (xCenter < xMin)
{
xCenter = xMin;
speedX = -speedX;
}
if (yCenter > yMax)
{
yCenter = yMax;
speedY = -speedY;
}
else if (yCenter < yMin)
{
yCenter = yMin;
speedY = -speedY;
}
应该用什么算法来提高速度。speedx++,只是在水平方向上增加,因此没有给出期望的结果。
提前谢谢。
1条答案
按热度按时间kcwpcxri1#
您可以很好地按顺序递增/递减这些x,y位置。因为设置一个变量不会移动正方形。但是当你将新的位置应用到动作中时,square会立即转到新的位置。
再来一个建议
当你发现正方形超出了边界,它实际上需要从另一侧出现。手段
if (xCenter > xMax)
套xCenter = xMin
反之亦然