すずろぐ

人生大逆転を目指す、鈴木俊吾の成長日記

Robocode Head-On Targetingの概要とサンプルプログラム

プログラミング

こんにちは、すずしんです。

今回の記事では、Robocode戦術に関する記事を書いてみようと思います。 今回扱うのはターゲッティングアルゴリズムの内、最も基本となるHead-On Targetingです。 Head-On Targetingの概要サンプルプログラムを紹介します。

Head-On Targetingの概要

Head-On Targetingは、Robocodeにおけるターゲッティングアルゴリズムの中で最も基本となります。 Head-On Targetingでは、最後に敵を見つけた場所に向かって弾を発射します。 おそらく、Robocodeを始めたばかりの方はこの方法を最初に実装するのではないでしょうか?

アルゴリズムの考え方や実装がシンプルで使いやすい上、意外と多くのロボットに有効な戦術となります。 その場にじっとしているロボットはもちろん、主に振動移動(Oscillator Movement)しているロボットや一部のランダム移動しているロボットに効果があります。 また、Meleeでも効果的な戦術となっています。

Head-On Targetingのサンプルプログラム

onScannedRobotメソッドの中で以下のようなコードを追加すれば良いです。

double absoluteBearing = getHeadingRadians() + e.getBearingRadians();
setTurnGunRightRadians(Utils.normalRelativeAngle(absoluteBearing - getGunHeadingRadians()));
setFire(3);

このサンプルプログラムでは、敵のいる方向に砲塔を回転させ、パワー3で弾を発射させています。 Utils.normalRelativeAngleメソッドを使うと、回転時の無駄が無くなりますので良いですよ。

ひとこと

Head-On Targetingは、敵ロボットを攻撃するための戦術としては最も基本となります。 基本でありながらも、攻撃手段として有効なロボットが多いというのがまた面白いですね。 とりあえず、迷ったらこのターゲッティングアルゴリズムを採用してみるのもありかもしれません。

関連記事

Robocode アーカイブTargeting アーカイブ