我正在制作一个游戏,我在屏幕顶部产生敌人,它们向下移动到屏幕的底部。我想让它们随机移动。
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;直到物体到达那个位置然后改变它。
答案 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();