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);
56 measMotor
.rotate(-100, true);
57 while(!suppressed
&& !measMotor
.isStalled() && measMotor
.isMoving()){
60 measMotor
.rotate(100, true);
61 while(!suppressed
&& !measMotor
.isStalled() && measMotor
.isMoving()){
67 rightMotor
.backward();
69 while(System
.currentTimeMillis()-time
< 250){
75 protected void measureRock(){
76 long time
= System
.currentTimeMillis();
79 while(System
.currentTimeMillis()-time
<1000){
83 rightMotor
.stop(true);
87 while(!suppressed
&& !measMotor
.isStalled()){
91 while(!suppressed
&& !measMotor
.isStalled()){
96 rightMotor
.backward();
98 while(System
.currentTimeMillis()-time
<1000){
104 protected void turnRandom(int from
, int to
){
105 int degrees
= Marster
.random
.nextInt(to
-from
)+from
;
106 if(Marster
.random
.nextBoolean()){
113 protected void rightTurn(int angle
){
114 rightMotor
.stop(true);
117 rightMotor
.backward();
119 while(!suppressed
&& Math
.abs(sensors
.gyro()) < angle
){
122 rightMotor
.stop(true);
123 leftMotor
.stop(true);
124 System
.out
.println(Float
.toString(sensors
.gyro()));
127 protected void leftTurn(int angle
){
128 rightMotor
.stop(true);
131 leftMotor
.backward();
132 rightMotor
.forward();
133 while(!suppressed
&& Math
.abs(sensors
.gyro()) < angle
){
136 rightMotor
.stop(true);
137 leftMotor
.stop(true);
138 System
.out
.println(Float
.toString(sensors
.gyro()));
142 public void action() {
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);
154 public void suppress() {
157 rightMotor
.setSpeed(Constants
.speed
);
158 rightMotor
.setAcceleration(Constants
.acceleration
);
159 leftMotor
.setSpeed(Constants
.speed
);
160 leftMotor
.setAcceleration(Constants
.acceleration
);
161 rightMotor
.stop(true);
162 leftMotor
.stop(true);
165 @Override public boolean takeControl(){