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);
35 protected void measureLake(){
36 long time
= System
.currentTimeMillis();
37 rightMotor
.backward();
39 while(System
.currentTimeMillis()-time
< 250){
43 rightMotor
.stop(true);
45 rightMotor
.setSpeed(25);
46 leftMotor
.setSpeed(25);
47 if(sensors
.leftLight() && !sensors
.rightLight()){
49 } else if (sensors
.rightLight() && !sensors
.leftLight()){
53 rightMotor
.stop(true);
57 while(!suppressed
&& !measMotor
.isStalled()){
61 while(!suppressed
&& !measMotor
.isStalled()){
69 protected void measureRock(){
70 long time
= System
.currentTimeMillis();
73 while(System
.currentTimeMillis()-time
<1500){
77 rightMotor
.stop(true);
81 while(!suppressed
&& !measMotor
.isStalled()){
85 while(!suppressed
&& !measMotor
.isStalled()){
93 protected void turnRandom(int from
, int to
){
94 int degrees
= Marster
.random
.nextInt(to
-from
)+from
;
95 if(Marster
.random
.nextBoolean()){
102 protected void rightTurn(int angle
){
103 rightMotor
.stop(true);
106 rightMotor
.backward();
108 while(!suppressed
&& Math
.abs(sensors
.gyro()) < angle
){
111 rightMotor
.stop(true);
112 leftMotor
.stop(true);
113 LCDPrinter
.print(Float
.toString(sensors
.gyro()));
116 protected void leftTurn(int angle
){
117 rightMotor
.stop(true);
120 leftMotor
.backward();
121 rightMotor
.forward();
122 while(!suppressed
&& Math
.abs(sensors
.gyro()) < angle
){
125 rightMotor
.stop(true);
126 leftMotor
.stop(true);
127 LCDPrinter
.print(Float
.toString(sensors
.gyro()));
131 public void action() {
134 rightMotor
.setSpeed(Constants
.speed
);
135 rightMotor
.setAcceleration(Constants
.acceleration
);
136 leftMotor
.setSpeed(Constants
.speed
);
137 leftMotor
.setAcceleration(Constants
.acceleration
);
138 rightMotor
.stop(true);
139 leftMotor
.stop(true);
143 public void suppress() {
146 rightMotor
.setSpeed(Constants
.speed
);
147 rightMotor
.setAcceleration(Constants
.acceleration
);
148 leftMotor
.setSpeed(Constants
.speed
);
149 leftMotor
.setAcceleration(Constants
.acceleration
);
150 rightMotor
.stop(true);
151 leftMotor
.stop(true);
154 @Override public boolean takeControl(){