package nl.ru.des.behaviours;
+import java.util.Random;
+
import lejos.hardware.motor.EV3LargeRegulatedMotor;
import lejos.robotics.Color;
import lejos.robotics.SampleProvider;
public class StayInFieldBehaviour extends ReactiveBehaviour implements Behavior {
public static final long BACKWARDSTIME = 250;
- public static final long TURNTIME = 250;
+ public static final long TURNTIME = 500;
private EV3LargeRegulatedMotor leftMotor, rightMotor;
+ private Random random;
public StayInFieldBehaviour(SampleProvider color, EV3LargeRegulatedMotor leftMotor,
EV3LargeRegulatedMotor rightMotor) {
super(color);
this.leftMotor = leftMotor;
this.rightMotor = rightMotor;
+ random = new Random();
}
@Override
leftMotor.backward();
rightMotor.backward();
long time = System.currentTimeMillis();
- while (!suppressed && System.currentTimeMillis() - time > BACKWARDSTIME) {
+ while (!suppressed && System.currentTimeMillis() - time < BACKWARDSTIME) {
Thread.yield();
}
- leftMotor.forward();
- rightMotor.backward();
+ if(random.nextBoolean()){
+ leftMotor.backward();
+ rightMotor.forward();
+ } else {
+ rightMotor.backward();
+ leftMotor.forward();
+ }
time = System.currentTimeMillis();
- while (!suppressed && System.currentTimeMillis() - time > TURNTIME) {
+ while (!suppressed && System.currentTimeMillis() - time < TURNTIME) {
Thread.yield();
}
leftMotor.stop(true);