競技部門


1. 概要

U-16釧路プログラミングコンテスト競技部門では、
CHaser(チェイサー)という競技を行います。
CHaserは、競技サーバに接続し、2次元のタテ、ヨコに広がるフィールドで
4種類のメソッド(命令)を駆使しながら、相手プログラムと対戦する競技です。

  • フィールド上の (Cool)と(Hot)が対戦します。
  • フィールド上に置かれた(アイテム)を集めながら相手を追いかけます。
  • メソッド(命令)は、移動命令・ブロック配置命令・フィールド探索命令など計16個あります。
  • (ブロック)に当たると負けになります。

競技用プログラム

今回の競技の使用プログラム言語は、Ruby(ルビー)とします。

2. CHaserの詳細

CHaserは、2人で対戦する競技です。
競技サーバへ、2つのクライアントプログラムがそれぞれネットワークで接続し、
サーバプログラムとクライアントプログラムの間で通信を行なって、
1対1で対戦します。

先に接続するクライアントを Cool(クール)と呼び(以後 C)、先攻となります。
後から接続するクライアントを Hot(ホット)と呼び(以後 H)、後攻となります。

対戦マップには、CとHの他に、アイテムやブロックがあります。
クライアントはサーバから自分の周囲情報を取得し、
次の行動をクライアントプログラムの制御によって決定しサーバに返します。
サーバはクライアントから受けた行動命令を実行します。

クライアント側の行動命令には、

  • walk(上下左右どれかに1マス動く)
  • look(自分の前後左右1方向を9マス分何があるか情報を取得する)
  • search(自分の前後左右1方向を1列に9マス分何があるか情報を取得する)
  • put(自分の上下左右隣にブロックを置くことができる)

があります。

3. 勝敗条件

以下のような場合、競技の勝敗が決まります。

①相手を探し出し、相手にブロックを置いたとき。
置いた側を勝ちとします。
(この場合、アイテム数は勝敗には関係しない)

②①の条件を満たすことなく競技が終了したときは、
取得したアイテム数が多いほうを勝ちとします。
アイテム数が同数の場合は引き分けとします。


ただし、次の状態になった場合は、①②にかかわらず負けとなります。

③相手にブロックを置かれたことにより、
上下左右がブロックで囲まれたとき。

④自らブロックを置くことにより、
上下左右がブロックで囲まれたとき。

⑤自らブロックの位置へ移動したとき。


また、次の条件のとき、自動的にブロックが置かれます。

⑥アイテムを取ると、アイテムを取る直前の位置にブロックが自動的に置かれます。
このブロックが置かれたことにより、上記①〜⑤のどれかに当てはまる場合は、
それぞれの勝敗条件により勝敗が決定します。


以下のような状況に当てはまった場合、
その対戦結果をドロー(引き分け)とします。

①相手にput(ブロックを置く行動)した結果、
自分がブロックに囲まれた形になったとき。
たとえば、Cがputにより、Hにブロックを置くことができたが、
Cの四方がブロックで囲まれてしまったときが当てはまる。

②putによって相手へブロックを置くことが成功せず、
相手がブロックに囲まれたり、ブロックと重なったりせず、
すべてのターン終了後の取得したアイテム数が同数だった場合。

4. 使用するメソッド(命令)について

1. walk系

①walkUp:上に1マス動く
②walkDown:下に1マス動く
③walkLeft:左に1マス動く
④walkRight:右に1マス動く

2. look系

①lookUp:自分の上の9(3×3)マスに何があるか情報を取得する
②lookDown:自分の下の9(3×3)マスに何があるか情報を取得する
③lookLeft:自分の左の9(3×3)マスに何があるか情報を取得する
④lookRight:自分の右の9(3×3)マスに何があるか情報を取得する

3. search系

①searchUp:自分の上の9マス(1列)に何があるか情報を取得する
②searchDown:自分の下の9マス(1列)に何があるか情報を取得する
③searchLeft:自分の左の9マス(1列)に何があるか情報を取得する
④searchRight:自分の右の9マス(1列)に何があるか情報を取得する

4. put系

①putUp:自分の上にブロックを置く
②putDown:自分の下にブロックを置く
③putLeft:自分の左にブロックを置く
④putRight:自分の右にブロックを置く

5. 競技ルール

1. 対戦について

●対戦方法:参加人数により、トーナメント戦またはリーグ戦
●対戦数:三回戦。先攻後攻入れ替え。二回先取で勝ち。
※プログラムを何個か用意して、一戦ごとにプログラムを交代してもOKです。

2. マップについて

●マップサイズ:15×17
●アイテム数:不定
●ブロック数:不定
●プレイヤーの初期位置:不定
●ターン数:100〜150

3. 勝敗について

●「3. 勝敗条件」の通り。
●プログラムの不備で対戦が止まった場合は、以下のような状況になっている方を負けとする。
 ○プログラム実行時にエラーが発生した場合
  (valuesのような変数やgetReadyのような命令のスペルミスなど)
 ○命令の呼び出し順が間違っている場合
  (getReadyとそれ以外のコマンドを交互に呼んでいない)
 ○無限ループになってターンが進まない場合
  (getReadyもコマンドも呼ばないルートを繰り返している)

4. その他

●名前の長さ:4文字まで(英数字、日本語OK)

 

質問について

何か質問がありましたら、以下に入力して送信するか、faq@procon.kushi.ro までメールでお問い合わせください。

お名前 (必須)

メールアドレス (半角英数字)(必須)

質問等ございましたらご自由にお書きください

下記の画像の文字を入力後、送信してください。(大文字小文字は区別しません)
captcha