Я пытаюсь сделать этот робот в случайных направлениях, пока он не достигнет препятствия. Затем он должен записать это препятствие (препятствие = 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();
}
Но это не работает. Он просто доходит до истечения таймера, но он не остановит или ничего не зафиксирует.
Что мне не хватает?
Я бы предложил не использовать 10 секунд для каждой итерации при тестировании ... также мы не можем вам помочь, если мы не знаем, что такое поведение isObstacle и isTapped. Также почему вы вызываете therobot.quit() в конце цикла while? не следует ли это вызывать, когда вы находитесь вне цикла while? просто гадание на основе имени –
isObstacle возвращает true, если либо левый, либо правый датчик препятствия обнаруживает препятствие. То же самое для isTapped, если что-то прикасается к нему, оно должно перестать двигаться. Кроме того, они являются логическими. – George
Что делает therobot.quit() и stopWheels()? –