ec16941b3a6118b87eb9355fd47ba30583d2ea3e
[des2015.git] / mart / ev3 / ex2 / nl / ru / des / behaviours / WandererBehaviour.java
1 package nl.ru.des.behaviours;
2
3 import lejos.hardware.Sound;
4 import lejos.hardware.motor.EV3LargeRegulatedMotor;
5 import lejos.robotics.Color;
6 import lejos.robotics.subsumption.Behavior;
7 import nl.ru.des.bluetooth.ColorMemory;
8 import nl.ru.des.sensors.ColorSensor;
9
10 public class WandererBehaviour implements Behavior {
11 private EV3LargeRegulatedMotor leftMotor, rightMotor;
12 private ColorSensor colorSensor;
13 private boolean suppressed;
14 private ColorMemory cm;
15
16 public WandererBehaviour(ColorSensor colorSensor, EV3LargeRegulatedMotor leftMotor,
17 EV3LargeRegulatedMotor rightMotor, ColorMemory cm) {
18 this.leftMotor = leftMotor;
19 this.rightMotor = rightMotor;
20 this.colorSensor = colorSensor;
21 this.cm = cm;
22 }
23
24 @Override
25 public boolean takeControl() {
26 return !cm.finished();
27 }
28
29 @Override
30 public void action() {
31 suppressed = false;
32 leftMotor.setSpeed(300);
33 rightMotor.setSpeed(300);
34 leftMotor.forward();
35 rightMotor.forward();
36 while (!suppressed) {
37 int current = colorSensor.getCurrentColor();
38 if (current == Color.YELLOW || current == Color.BLUE || current == Color.RED) {
39 Sound.beep();
40 cm.addColor(current);
41 }
42 Thread.yield();
43 }
44 leftMotor.stop(true);
45 rightMotor.stop(true);
46 }
47
48 @Override
49 public void suppress() {
50 suppressed = true;
51 }
52 }