ロケットボット
年は3024です。人々は戦争で危険にさらすにはリソースが不足しているため、戦闘はロボットに移行しました。あなたの仕事は、他に類を見ないボットを構築することです。誰のロケットが敵に破壊を降らせ、入ってくるすべての脅威を撃ち落とします。
ゲームプレイ
ボット
ゲームプレイは10x15グリッドで行われます。ボットは下端から外れており、グリッドのスポット6、7、8に3つのスロットがあります。対戦相手はグリッドの一番上にあり、3つのスロットがあなたの真向かいにあります。
ロケット
これらのスロットのいずれかから、スロットが破壊されていないと仮定してロケットを発射できます。ロケットは、作成時に与えられる方向のリストで構成され、一度発射されると、これらの方向は変更できません。毎ターン、ロケットはリストの一番上を消費し、その方向に移動します。ロケットは同時に移動します。2つのロケットが同じタイルで終わる場合、両方とも爆発します。ロケットがコマンドを使い果たすと、爆発します。ロケットが燃料を使い果たすと、100回移動した後に爆発します。ロケットが爆発すると、5ターンの間そのタイルにとどまり、そこに移動する他のロケットも爆発します。
注: 同時移動のため、2つのロケットが同じタイルで両方のターンを終了しない限り、2つのロケットは爆発することなく互いに通過できます。
ゴール
各試合の目標は、対戦相手のスロットを破壊することです。ロケットは、お持ちのどのライブスロットからでも発射でき、発射前に指定されたパスが与えられます。1ターンごとにロケットを発射します。つまり、ロケットが2回移動してから、別のロケットを発射できます。決闘は200ターン、または1つのボットスロットがすべて破壊されるまで続きます。
得点
試合の終わりに、あなたはあなたが持っている各ライブスロットに対して1ポイントを獲得し、あなたが破壊した各対戦相手スロットに対して1ポイントを獲得します。つまり、ゼロサムゲームであり、各試合で6ポイントが与えられます。
ラウンドロビンが実行され、各ボットが1つずつ互いにボットに向かいます。ボットがRNGを使用する場合、各対戦は1000デュエルになります。
実装
コンテストのコードは、https://github.com/Cain93/RocketBotsにあります。
提出ごとにBot
クラスを拡張する必要があります。fireRocket
メソッドをオーバーライドする必要があります。このメソッドはRocket[][]
、ゲームボードを表すRocketsのグリッド配列を受け取ります。あなたは、常にスポットのスロットに、グリッドの下部に位置しています[-1][6]
、[-1][7]
、[-1][8]
。グリッドでは、空いているスポットはで表されnull
ます。タイル内にロケットが存在する場合、dis
フィールドにアクセスすることでロケットが誰であるかを特定できます。「^」はロケット、「v」は対戦相手です。
ロケットの指示を与える整数のLinkedListを返す必要があります。上に移動するには、0を使用します。上下に移動するには、1を使用し、右に2を使用します。ロケットは、整数を押した順に移動します。たとえば、次のコードはロケットを数回転上方向に移動させ、数回転ジグザグにしてから爆発させます。
LinkedList<Integer> moves = new LinkedList<Integer>();
moves.push(0);
moves.push(0);
moves.push(0);
moves.push(1);
moves.push(7);
moves.push(1);
moves.push(7);
ロケットを発射するスロットを変更するには、curSlot
フィールドを変更します。0は一番左のスロット、2は一番右のスロットです。スロットが破壊されているかどうかを確認するには、を使用しますgetSlot(int slotNumber)
。
ロケットがスロットのターンを終了すると、そのスロットは破壊されます。ロケットを手動で爆発させる必要はありません。
注:ロケットは発射されたスロットの位置に出現しますが、衝突が評価される前に一度移動します。したがって、スロット0からロケットを発射し、最初の動きが正しい場合(2)、自分の中央のスロットを破壊します。ただし、上下(1)は安全な動きです。
ボットに名前を付ける場合は、name()
メソッドをオーバーライドします。
ボットは決闘ごとに再構築されるため、静的変数はリセットされます。
幸運を!
あなたのロケットが真に飛んで、あなたの敵がくすぶっている金属片に過ぎないように。
ヒント:
意図的にロケットを爆発させて爆発を起こすことは、相手のロケットを撃ち落とそうとするよりも簡単に防御する方法です。
ボットの例
package bots;
import java.util.LinkedList;
import mechanics.*;
public class SimpleBot extends Bot {
public String name(){
return "Simple";
}
public LinkedList<Integer> fireRocket(Rocket[][] g){
LinkedList<Integer> l = new LinkedList<Integer>();
for(int i = 0; i < 12; i++){
l.push(0);
}
return l;
}
}
スコア
6-24のスコア
Simple: 900
Zigzagoon: 3654
Wall-E: 3606
Tortoise: 2248
3 Shot: 2334
HatTrickBot: 4287
Sniper: 2973
SideShooter: 2491
Terminator: 4835
StraightShot: 3378
Defender: 4570
MoreDakka: 4324