我试图让这个机器人沿着随机方向行进,直到它到达障碍物。然后它应记录障碍物(障碍物= 1,2,3等)并切换方向。这应该一直持续到计时器到期为止。
public static void main(String args[]) throws Exception{
Robot therobot = new Robot();
int x = 10000;
int obstacles = 0;
Random rand = new Random();
int r1 = rand.nextInt(255) + 1;
int r2 = rand.nextInt(255) + 1;
therobot.setWheelVelocities(100,100);
long before = System.currentTimeMillis();
while (System.currentTimeMillis() - before < x){
Thread.sleep(x);
if( therobot.isObstacle() ==true || therobot.isTapped() == true)
{
r1 = rand.nextInt(255) - 255;
r2 = rand.nextInt(255) - 255;
obstacles = obstacles++;
therobot.setWheelVelocities(r1, r2);
}
}
System.out.println(obstacles);
therobot.stopWheels();
therobot.quit();
}
但这似乎不起作用。直到计时器到期,它才会停止或记录任何内容。
我错过了什么?
答案 0 :(得分:0)
具有
int x = 10000;
long before = System.currentTimeMillis();
while (System.currentTimeMillis() - before < x){
Thread.sleep(x);
// Processing
}
由于Thread.sleep(10000)
,while循环的第一次迭代需要10秒的整个持续时间。
睡眠量应明显小于总持续时间。