!!!1対1での対戦に対するロボットのプログラミング !!静止しているロボットへの対処 サンプルの中にあるSittingDuckという何もしないロボットと対戦する。 攻撃してこないので連続して攻撃する。 処理の流れ +相手を探す +相手を見つけたら動いているかを確認する +相手が動いていなければ、連続して砲弾を発射する +勝利したときの動作を実施 *敵に関する情報はフィールド(変数)に記憶させておく **どんな情報が必要か **敵に関する情報はonScannedRobotメソッド内でScannedRobotEventのメソッドを使って取得する *砲台、レーダーをどう動かすか *自分のロボットはどう動かすか *メソッドの優先順位に注意 *ロボットの初期設定はrun()メソッドの冒頭部に記す。 *レーダーで敵を発見したらonScannedRobot()メソッドに実行が移る。 *敵のロボットが停止しているかは速度を調べればよい。 *砲弾を発射すると砲台は熱せられ、熱の大きさが0になるまで次の砲弾は発射されない(fireメソッドは実行される)。 発生する熱=1+発射エネルギー÷5 熱の下がる速度=0.1/時間 **砲台の熱の大きさはgetGunHeat()メソッドで取得できる if(getGunHeat <= 0){ file(1); } onScannedRobotメソッドなどのイベントメソッドはイベント発生後に1回だけ実行される。 敵を発見後、レーダーの向きが固定されている場合、onScannedRobot()メソッドは実行されないのでrun()メソッド内でscan()メソッドを使って敵を再スキャンする必要がある。 !!演習 上記やAPIの文書を参考にロボットのプログラムを考え、実際の対戦で動作を確認する。