final
[des2015.git] / mart / ev3 / ex2 / nl / ru / des / behaviours / StayInFieldBehaviour.java
index 75e6d2a..682c659 100644 (file)
@@ -1,5 +1,7 @@
 package nl.ru.des.behaviours;
 
+import java.util.Random;
+
 import lejos.hardware.motor.EV3LargeRegulatedMotor;
 import lejos.robotics.Color;
 import lejos.robotics.SampleProvider;
@@ -7,15 +9,17 @@ import lejos.robotics.subsumption.Behavior;
 
 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
@@ -34,14 +38,19 @@ public class StayInFieldBehaviour extends ReactiveBehaviour implements Behavior
                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);