gpt4 book ai didi

java - Space Invaders - 奇怪的运动与外星人运动算法

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:25:54 26 4
gpt4 key购买 nike

我已经为太空入侵者的克隆工作了一段时间。到目前为止,我遇到的最大问题是让外星人移动。经过大量努力,我开发了 n 个算法来移动它们。该算法的行为符合预期,除了当外星人完成向左/右移动然后向下移动时,最左边或最右边的外星人开始聚集在他们旁边的两个上,重叠他们的 Sprite 。观察它们的 X 坐标,我发现它们每次向下移动时都会向左/向右移动 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 个像素。

你需要以同样的方式对待所有的外星人。要么也移动边缘外星人,要么在到达边缘时不移动任何外星人。

关于java - Space Invaders - 奇怪的运动与外星人运动算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25911968/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com