センサーの値に実際にアクセスしていないようです。最初にセンサーの値に (getObstacleSensors(); メソッドを介して) アクセスする必要があることに注意してください。また、このメソッドは各センサーの値をブール配列として返すことを思い出してください。javadoc を参照してください。
getObstacleSensors public boolean[] getObstacleSensors()
両方の障害物センサーの値を 2 要素のブール配列として返します。左のセンサーが 0 番目の要素で、右のセンサーが 1 番目の要素です。
戻り値: 2 要素配列内の左右の障害物センサーの値
ボタンアクションリスナーからの入力を使用して、あなたがやろうとしていることに最近似たようなことをしました。実装する前に、障害物に遭遇したときにボットが実際に実行する「obstacleAvoidance」というメソッドを作成しました。このメソッドは、引数として Finch オブジェクト (つまり、suzie) を受け入れます。これにより、コードが [比較的] すっきりしました。このタスクを (アクション リスナーで) 実行するコードは、次のようになります。
プライベート クラス ButtonListener は ActionListener を実装します {
public void actionPerformed( ActionEvent e ) {
//Get the finchbot's obstacle sensors and store them in an array
boolean [] sensors = suzie.getObstacleSensors();
//Check to see if either of the ficnhbot's sensors
//detect an obstacle. This is enclosed in a while loop which is
//broken if either sensor returns false (detects an obstacle)
while (sensors [0] == false && sensors[1] == false)
{
// Sets the Action text field
System.out.println( "Performing Action..." );
// This method tells the robot to perform an action
command.performAction(suzie, -255, -85);
}
//Otherwise, perform obstacle avoidance maneuver
command.obtacleAvoidance(suzie);
}
}
これがあなたにとって良い出発点になることを願っています...
T