Code Bots 2へようこそ!
前回のコードボット以来、あなたはレッスンを学びました。より多くのアクションをより少ない行に収めるためのより多くの方法を見つけようとしましたが、ついにそれを手に入れました。イベント駆動型のコードボットを作成します。
ボットは24行で構成する必要があります。各行は、次の2つの形式のいずれかに従います。
Condition:Action
または
Action
あなたのボットはまた、名前の5つの整数格納するのに十分な記憶域持っA
てしますE
。整数には、0〜23の値を格納できます。
各ターンで、条件の1つが真C
でない限り、lineを実行します。その場合、C
trueの条件の行番号が含まれ、その行が実行されます。各ターンの終わりに、C
増加します。
利用可能な条件があります:
Start
最初のターンのみに当てはまります。これを1回だけコードに含める必要がありますBotAt(N)
Nで定義された場所にボットがある場合はtrueEquals(A,B)
AがBに等しい場合はtrueです。異なるタイプにできますが、そうであれば、等しくなりません。Modified(A)
A
最後のターン中にコピーされた場合はtrueです。A
変数名、行、または条件でなければなりませんAny(C1,C2,...)
条件のいずれかが真の場合に真None(C1,C2,...)
どの条件も真でない場合は真All(C1,C2,...)
すべての条件が真の場合は真Not(C)
Cがfalseの場合、trueです。C
条件でなければなりません。
変数は、次の形式のいずれかになります。最初の9つは数値であり、このページでNを使用する場合は常に使用できます。
A
、B
、C
、D
、E
- 0から23までの数
This
現在の行番号を返しますAdd(N1,N2,...)
すべての値の合計を返しますSub(N1,N2)
N1-N2を返しますMult(N1,N2,...)
すべての値の積を返しますDiv(N1,N2)
N1をN2で割った値を返しますMod(N1,N2)
N1 mod N2を返しますOVar(N)
変数名を受け入れ、相手の変数を返しますLine(N)
コードのN行目を返しますType(N)
コードのN番目の行タイプを返します(タイプはアクションの名前です)Cond(N)
N行目に条件を返しますCondType(N)
N行目に条件タイプを返します(タイプは条件の名前です)OLine(N)
相手のコードのN行目を返しますOType(N)
相手のコードのN番目の行タイプを返しますOCond(N)
N行目に条件を返しますOCondType(N)
N行目に条件タイプを返します
A
そしてB
、あなたの個人的な使用のためでC
あり、あなたのコードで実行する行を決定するためにD
使用され、方向として使用されます。の各値はD
、異なる正方形と方向のペアを参照します。E
毎回ランダムな値を生成します。 D
そしてE
、それ以外の場合はランダムな値に初期化されます0
。
使用される方向はになります[North,East,South,West][D%4]
。あなたの対戦相手は、その方向の直近の正方形のボットです。
次の4つのアクションを使用できます。
Move
D
th方向に1マス前方に移動します。そこにボットがある場合、移動しません。Copy(A,B)
変数A
をにコピーしますB
。B
変数名を除き、数値にすることはできません。A
そしてB
異なったタイプにすることはできません。行をコピーしても条件はコピーされません。Flag
何もしません。 コード内のフラグが最も多いボットがポイントを獲得します。最も多くのポイントを持つボットが勝ちます。If(C,L1,L2)
trueのL1
場合に行を実行しC
、そうでない場合に実行しL2
ます。C
は条件でありL1
、L2
行でなければなりません。
大きな絵
すべてのボットの50コピーが世界に配置されます。あなたの目標は、フラグをできるだけ多くのボットに入れることです。他のフラグタイプよりもフラグタイプが多いボットごとに、ポイントを獲得します。
ボットは次のように配置されます。
B...B...B...B...
..B...B...B...B.
B...B...B...B...
10回のゲームが実行され、すべてのゲームでポイントが平均化され、勝者が決定されます。
サイドノート
複数の条件が適用される場合、最もすぐに続く条件Start
が実行されます
ボットは密集しますが、隣のボットを開始しません。(技術的には最後のCodeBotsと同じ形式になります)
この課題はサンドボックスに掲載されていないため(誰にもメリットがないため)、公平性や追加機能のために細部を変更する権利を留保します。また、CodeBotsランナーにバグがある場合は、ボットがそのバグに依存して成功したとしても、それを変更します。私はできるだけ公平になろうとしています。
再帰If
ステートメントは実行されません
ボットが24行より短い場合、残りの行は Flag
あなた自身にコピーするときに覚えているC
こと、C
あなたのターンの終了時にインクリメントされます。
CodeBotsインタープリターはこちらにあります。簡単に実行できるように.jarファイルが含まれています。ボットをボットフォルダーに追加するだけです
スコア
- 893.9ボルグ
- 1.3 LazyLioness
- 0.9ディフェンダー
- 0.5フラッガー
- 0.4 CliqueBot
- 0.4潜行性
- 0.3攻撃者
- 0.3ガード
- 0.3シングルターゲット
- 0.2 FreezeBot
- 0.2センチネル
- 0.2ドライブバイ
- 0.0反潜行性
- 0.0 MoveBot
- 0.0クリークボルグ
- 0.0電卓
- 0.0 TestBot
- 0.0模倣者
更新
敵のコードを表示すると、コードの行が回転するようになりました。つまり、相手のライン1はライン14(またはどのライン)でもかまいません。ボットのオフセットは固定されており、相手から見た時にX
量だけラインをオフセットします。相手の変数も同じ量だけ相殺されます。 同じゲーム内では変化しませんが、ゲームごとに変化します。C
X
X