トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

オブジェクト指向プログラミング(H16)2004/11/18

Robotクラスのメソッド

Robotクラスの持つメソッドは一つのメソッドの実行が終わるまで次のメソッドの実行に移れない。このようなメソッドをブロッキングメソッドという。

効率的に動作するロボットを作るには動作に関係するメソッドの実行時間を極力短くする。

レーダーの回転

常に360度回転ではなく、最初は狭い範囲をスキャンし、敵が見つからなければスキャンする範囲を広げていくようにする。

レーダーの方向の補正

レーダーが敵の方向を向いているときに回避で移動するとレーダーは敵とは異なる方向を向いてしまう。これを補正するには三角関数を利用する。移動前の敵までの距離をY、移動距離をXとすると次に示すコードで補正する角度を求められる。

double K = Math.atan2(X, Y);
K = Math.toDegrees(K);

Math.atan2などの三角関数の角度はラジアン単位なので、Robotクラスのメソッドを利用するときはMath.Degrees()メソッドで度数単位に変換する。

以前に作ったロボットを基に新しいロボットを作る

Javaの継承を利用すればよい。継承を利用すると以前に定義したメソッドはそのまま利用できる。動作の異なるメソッドのみを定義しなおせばよい。このメソッドを定義しなおすことをオーバーライドという。

たとえば、新しいロボットBeBe?06を以前に作ったロボットBeBe?04を元に作りたい時はクラス定義のextendsの右側のクラス名をRobotからBeBe?04に変更し、動作の異なるメソッドのみを定義しなおせばよい。

public class BeBe06 extends BeBe04 {
 public void onScannedRobot(ScannedRobotEvent e){
   新たなコードを記述
 }
}