3 import lejos
.robotics
.RegulatedMotor
;
4 import lejos
.robotics
.subsumption
.Behavior
;
5 import nl
.ru
.des
.sensors
.SensorCollector
;
7 public abstract class BasicBehaviour
implements Behavior
{
8 protected boolean suppressed
;
9 protected boolean finished
;
10 protected RegulatedMotor leftMotor
, rightMotor
, measMotor
;
11 protected SensorCollector sensors
;
14 public BasicBehaviour(SensorCollector sensors
, RegulatedMotor leftMotor
,
15 RegulatedMotor rightMotor
, RegulatedMotor measMotor
){
16 this.leftMotor
= leftMotor
;
17 this.rightMotor
= rightMotor
;
18 this.measMotor
= measMotor
;
19 this.sensors
= sensors
;
24 protected void reset(){
26 rightMotor
.setSpeed(Constants
.speed
);
27 rightMotor
.setAcceleration(Constants
.acceleration
);
28 leftMotor
.setSpeed(Constants
.speed
);
29 leftMotor
.setAcceleration(Constants
.acceleration
);
30 rightMotor
.stop(true);
34 protected void measureLake(){
35 long time
= System
.currentTimeMillis();
36 rightMotor
.backward();
38 while(System
.currentTimeMillis()-time
<500){
42 rightMotor
.stop(true);
44 rightMotor
.setSpeed(25);
45 leftMotor
.setSpeed(25);
46 if(sensors
.leftLight() && !sensors
.rightLight()){
48 } else if (sensors
.rightLight() && !sensors
.leftLight()){
52 rightMotor
.stop(true);
56 while(!suppressed
&& !measMotor
.isStalled()){
60 while(!suppressed
&& !measMotor
.isStalled()){
68 protected void measureRock(){
69 long time
= System
.currentTimeMillis();
72 while(System
.currentTimeMillis()-time
<1500){
76 rightMotor
.stop(true);
80 while(!suppressed
&& !measMotor
.isStalled()){
84 while(!suppressed
&& !measMotor
.isStalled()){
92 protected void turnRandom(int from
, int to
){
93 int degrees
= Marster
.random
.nextInt(to
-from
)+from
;
94 if(Marster
.random
.nextBoolean()){
101 protected void rightTurn(int angle
){
102 rightMotor
.stop(true);
105 rightMotor
.backward();
107 while(!suppressed
&& Math
.abs(sensors
.gyro()) < angle
){
110 rightMotor
.stop(true);
111 leftMotor
.stop(true);
112 LCDPrinter
.print(Float
.toString(sensors
.gyro()));
115 protected void leftTurn(int angle
){
116 rightMotor
.stop(true);
119 leftMotor
.backward();
120 rightMotor
.forward();
121 while(!suppressed
&& Math
.abs(sensors
.gyro()) < angle
){
124 rightMotor
.stop(true);
125 leftMotor
.stop(true);
126 LCDPrinter
.print(Float
.toString(sensors
.gyro()));
130 public void action() {
133 rightMotor
.setSpeed(Constants
.speed
);
134 rightMotor
.setAcceleration(Constants
.acceleration
);
135 leftMotor
.setSpeed(Constants
.speed
);
136 leftMotor
.setAcceleration(Constants
.acceleration
);
137 rightMotor
.stop(true);
138 leftMotor
.stop(true);
142 public void suppress() {
145 rightMotor
.setSpeed(Constants
.speed
);
146 rightMotor
.setAcceleration(Constants
.acceleration
);
147 leftMotor
.setSpeed(Constants
.speed
);
148 leftMotor
.setAcceleration(Constants
.acceleration
);
149 rightMotor
.stop(true);
150 leftMotor
.stop(true);
153 @Override public boolean takeControl(){