SamurAI Jockey のルール

今年の SamurAI Coding で戦うのは、”SamurAI Jockey” というオリジナルのゲームです。

参加された方はよくご存知ですが、このゲームを「見る」人のために、ゲームのルールについて簡単にまとめておきます。

プログラムの核心に触れる話は対戦が終わるまで書けませんので、今しばらくお待ちください。

基本ルール

SamurAI Jockey は、自分の馬を、相手の馬よりも一手でも先にゴールさせることを目指すゲームです。

ゲームの初期状態のイメージ図を示します。ここでの馬の配置やゴールの位置は、あくまで一例です。


馬を走らせるコースは、整数のみで構成される座標平面です。両プレイヤーはともに y = 0 から出発し、ゴールとなる y 座標を目指します。

馬は速度を持っており、速度には x 成分と y 成分があります。速度の初期値は 0 です。

指し手

SamurAI Jockey は、二人が交互に手を指すのではなく、ステップごとに二人が「同時に」手を指すゲームです。

各ステップで、両プレイヤーには常に9つの選択肢があります。それは、今の自分の馬の速度に、次のいずれかの値を上乗せすることです。

(-1, +1) ( 0, +1) (+1, +1)
(-1,  0) ( 0,  0) (+1,  0)
(-1, -1) ( 0, -1) (+1, -1)


プレイヤーが選んだ値に応じて、まず馬の「速度」が確定します。そして、現在の位置にその速度を加えたものが、「目標位置」になります。馬は、それが後述する「到達不能」なものでない限り、目標位置に移動します。

到達不能

目標位置が次のいずれかの条件を満たしてしまった場合、その目標は無効となり、馬は現在の位置に留まります。ただし速度だけは、これらの条件に関係なく更新される点に注意が必要です。

a) 障害物に触れる

コースにはあらかじめ障害物となる点および線が設置されています。現在位置と目標位置を結ぶ線がこれらに接するような移動はできません。

b) コースアウトする

コースには幅が設定されています。その幅を越える移動、または x と y のいずれかが負となる移動はできません。

c) 相手をまたぐ

移動前の相手の馬をまたぐような移動はできません。

d) 妨害を受ける

ここが肝心なところです。相対的に前方にいる馬は、後方の馬の移動ラインに接するような移動ができません。ただし、後方の馬の目標が条件a、b、c のどれにも該当しない場合に限ります。


両者の y 座標が同一の場合は、左側にいる馬がここでいう「後方」、つまり優位に相当します。

視界

コースには、「視界」と呼ばれる整数の値が存在します。プレイヤーからは、自身の位置から見て y 方向に関してだけは、この視界の範囲内の障害物しか見えていません。


なお、相手の馬の位置と速度に関しては、視界の内外にかかわらず把握できるものとします(2018/04/05: 誤りでしたので、訂正します)。

勝利条件

以上を踏まえて、両プレイヤーが手の選択を繰り返した結果として、一手でも早く自分の馬の y 座標をゴールライン以上に到達させたプレイヤーが勝ちです。

公平を期すため、ゲームは同じコースで馬の初期位置の左右を入れ替えて2度行ったものを1セットとします。

制限時間

プログラムが思考に使える時間は、一手あたり200ミリ秒+αがおおよその目安です。持ち時間を失うと無条件で敗北となります。

まとめ

ルールについては、以上となります。細かいところをかなり省略して書いていますが、ゲームを眺めたり、アルゴリズムについて想像を巡らす分には、この内容で十分ではないかと思います。

決勝ラウンドが終わったら、私が戦わせたプログラムのアルゴリズムについて記録していく予定です。

ソフトウェアの設計・実装がうまく行かなくてお困りではありませんか? 組込屋にお任せください。リモート案件は、常駐の半額でお受けしています。

コメントを残す

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)