机器人障碍记录/避免

时间:2017-01-13 23:50:52

标签: java while-loop robot

我试图让这个机器人沿着随机方向行进,直到它到达障碍物。然后它应记录障碍物(障碍物= 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();
}

但这似乎不起作用。直到计时器到期,它才会停止或记录任何内容。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

具有

int x = 10000;
long before = System.currentTimeMillis();
while (System.currentTimeMillis() - before < x){
    Thread.sleep(x);
    // Processing
}

由于Thread.sleep(10000),while循环的第一次迭代需要10秒的整个持续时间。

睡眠量应明显小于总持续时间。