我为一个太空入侵者的克隆人工作了一段时间到目前为止,我面临的最大问题是让外星人搬家。经过很多努力,我已经开发了n个算法来移动它们该算法的行为与预期的一样,只是当外星人完成向左/向右移动,然后向下移动时,最左或最右的外星人开始在他们旁边的两个上收敛,重叠他们的精灵。监视它们的x坐标,我发现它们每次向下移动时都会向左/向右移动10个像素。我不明白他们为什么这么做,希望你能帮助我这是我的移动算法(外星人被排列成两行,每10帧一次,这种方法被称为每10帧一次)movestate
指示外星人往哪个方向移动。)
public void alienMove()
{
boolean movedown = false;
if(movestate)
{
for(int i = 0;i<aliens.length;i++)
{
if(aliens[i].getX()==950)
{
movestate = false;
movedown = true;
}
else
{
aliens[i].setX(aliens[i].getX()+10);
}
}
if(movedown)
{
for(int j = 0;j<aliens.length;j++)
{
aliens[j].setY(aliens[j].getY()+20);
}
movedown = false;
}
}
else
{
for(int i = 0;i<aliens.length;i++)
{
if(aliens[i].getX()==50)
{
movestate = true;
movedown = true;
}
else
{
aliens[i].setX(aliens[i].getX()-10);
}
}
if(movedown)
{
for(int j = 0;j<aliens.length;j++)
{
aliens[j].setY(aliens[j].getY()+20);
}
movedown = false;
}
}
}
最佳答案
假设外星人要撞到右边。前9个(从左到右)没有X=950,所以向右移动10个像素然后最右边的确实有X=950,所以不会向右移动;相反,它会触发方向改变和降档。
同样,在左边缘,第一个外星人不移动,但触发(稍后)降档和方向反转,然后其他九个外星人左移10像素。
你要对所有外星人一视同仁。也可以移动边缘外星生物,或者在到达边缘时不移动任何外星生物。