如何让对象随机移动

时间:2017-03-20 04:37:09

标签: java

我正在制作一个游戏,我在屏幕顶部产生敌人,它们向下移动到屏幕的底部。我想让它们随机移动。

public void move_randomly(){

    int random_x_pos = rd.nextInt(700);

    if (xPos < random_x_pos){
        xPos += get_speed();
        if (xPos >= random_x_pos){
           // get a new x position
        }
    }
    if (xPos > random_x_pos){
        xPos -= get_speed();
        if(xPos >= random_x_pos){
            // get a new x position
        }
    }

    yPos += get_speed();  //makes the object keep moving down
}

问题是必须在无限循环内调用此方法,该循环不断重新绘制屏幕,​​因此 random_x_position 变量始终在变化。我希望随机X位置被&#34;保存&#34;直到物体到达那个位置然后改变它。

2 个答案:

答案 0 :(得分:0)

您可以创建一个类变量并存储该实例,直到您需要更改它为止。您可以在创建类时初始化变量,然后根据需要进行更新。它可能看起来像:

public class YourClass{
    int random_x_pos;
    publice YourClass(){
         random_x_pos = rd.nextInt(700);
    }

    ...
public void moveRandomly(){
    //use your variable
    random_x_position...
    if(conditionMet){
         random_x_postion = rd.nextInt(700);
    }
}
...
}

答案 1 :(得分:0)

你需要使用某种&#34;降温&#34;所以它朝那个方向移动了一段时间。您可以使用System.currentTimeMillis()检查冷却时间是否已经运行。

protected double moveCoolDownTime=.2*1000;

public void randomMove() {
    double currentTime=System.currentTimeMillis();
    if ((currentTime-movedTime)>=moveCoolDownTime) {
            speed=random.nextInt(10)-10;
        }
        movedTime=currentTime;
    }
}

    //in your update method
    xPos -= get_speed();