我为一个太空入侵者的克隆人工作了一段时间到目前为止,我面临的最大问题是让外星人搬家。经过很多努力,我已经开发了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像素。
你要对所有外星人一视同仁。也可以移动边缘外星生物,或者在到达边缘时不移动任何外星生物。

10-06 14:59