Ｖｅｒ．１.1

ＣＨａｓｅｒ２０１２

ルールブック

全国情報技術教育研究会
プログラミングコンテスト実行委員会

0

目次

１

Ｃ Ｈ ａ ｓ ｅ ｒ ２ ０ １ ２ の 概 要 ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ Ｐ ２

２

勝 敗 に つ い て ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ Ｐ ３

３

マ ッ プ に つ い て ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・４

ク ラ イ ア ン ト に つ い て ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ Ｐ ７

５

サ ー バ に つ い て ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ Ｐ ９６

作 品 提 出 に つ い て ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ ・ Ｐ １ ０

７

予 選 に つ い て ・・ ・ ・ ・・ ・ ・・ ・ ・ ・ ・ ・・ ・ ・ ・Ｐ １ １

８

決勝について・・・・・・・・・・・・・・・・・・・・Ｐ１１

９

その他・・・・・・・・・・・・・・・・・・・・・・・・・Ｐ１３

ＣＨａｓｅｒ２０１２

1

Ｐ ６

１ ＣＨａｓｅｒ２０１２の概要
CHaser2012は2人で対戦する競技である。競技サーバへ２つのクライアントプログラムがそれぞれネットワークで接続し、サーバプログラムとクライアントプログラムの間で通信を行って１対１で対戦する。先に接続するクライアントをCoolと呼び（以後C）、先攻となる。後から接続するクライアントをHotと呼び（以後H）、後攻となる。対戦マップには、ＣとＨの他に、アイテム、ブロックがある。クライアントはサーバから自分の周囲情報を取得し、次の行動をクライアントプログラムの制御によって決定しサーバに返す。サーバ
はクライアントから受けた行動命令を実行する。クライアント側の行動命令は、「ｗａｌｋ（上下左右どれかに１マス動く）」「ｌｏｏｋ（自分の前後左右１方向を９マス分何があるか情報を取得する）」「ｓｅｒｃｈ（自分の前後左右１方向を縦に９マス分何があるか情報を取得する）」「ｐｕｔ（自分の上下左右隣にブロックを置くことができる）」がある。
勝敗は①相手の上にブロックを置く②ハート型のアイテムを拾った数②相手の周囲4方向をブロックで囲むなどで決まる（詳細は「２ 勝敗について」を参照）。
C、Hは２次元に広がったマス目を自分のプログラムに従って移動する。また、Cが動くと１ターン進み、Hが動くとさらに１ターン進む。ターンとは野球で言う「１回の表・裏」に相当し、ターンには制限数（マップにより異なる）がある。

ｗａｌｋの例（右移動） ｌｏｏｋの例（右方向）
図１ｓｅｒｃｈの例（右方向）ｐｕｔの例（右側）クライアントの行動命令の実行例
ＣＨａｓｅｒで使われる用語

クライアント・・競技者が作成する自律行動を制御するプログラム。
ターン ・・・・・クライアントがお互いに動く最小単位。
ラウンド・・・・・ターンを重ね勝負を決めること。
試合・・・・・決勝の１試合は３ラウンド中２試合先取するまで行う。

フィールド・・・競技に使用されるマップ。配置や大きさは実行委員会により設定される。
ｐｕｔ・・・・・・・・自らブロックを置く行為。敵の上に置けると、勝ちとなる。
2

２ 勝敗について２－１ 勝敗決定の基本
以下の何れかを満たしたときに競技の勝敗を決する事を基本とする。
①

相手を探し出し相手の上にブロックを置いたとき。置いた側を勝ちとする （このときアイテム数は勝敗に影響を持たない）。

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

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

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

④

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

⑤

自らブロックの上へ移動したとき 。（自分の行動でブロック上へ移動）

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

図２

勝敗パターン及びアイテム取得後のブロック
3

２－２ 勝敗決定の補足「２－１勝敗決定の基本」での規定以外で以下の項目に該当した場合、そのクライアントはそのﾗｳﾝﾄﾞを負けとする。
①クライアントがサーバに接続後、クライアントを操作する行為。操作をクライアントプログラムが求める、又はサーバ接続後に操作者の入力で行動が変わるクライアントも同様とする。
②対戦の途中（サーバ接続後から、対戦が終了するまで）に、クライアントからサーバへの接続が切れてしまった場合。
③対戦の途中（サーバ接続後から、対戦が終了するまで）に、コマンドの送受信の手順が規定と違う場合（Ｐ７ 通信の仕様を参照）。
※ただし、瞬時にコマンド手順が復活した場合審判長の判断により勝敗を決定する。
④対戦の途中（サーバ接続後から、対戦が終了するまで）に、サーバプログラムの動作が停止した場合、ﾗｳﾝﾄﾞを中断しクライアントからの通信ログを確認する。クライアント側にその原因があった場合、審判長の判断によりそのクライアントを負けとする。
⑤対戦の途中（サーバ接続後から、対戦が終了するまで）に、接続ポートと別のポートに接続した場合。接続要求も同様とする。
⑥Ｃの接続時間内に、Ｈが接続した場合（詳細は８－２を参照）。
⑦クライアントを制限時間内にサーバへ接続できなかった場合（詳細は８－２を参照）。
⑧クライアントが動作不良で実行できない場合（詳細は４クライアントについてを参照）。

4

以下の項目に該当した場合、その対戦結果をドロー（引き分け）とする。
①相手にｐｕｔ（ブロックを置く行為）した結果、自分がブロックに囲まれた（２－１勝敗決定の基本③の形）形になった時。
例えばＣがｐｕｔにより、Ｈの上にブロックを置くことができたが、Ｃの四方がブロックで囲まれてしまったときが該当する。

ｐｕｔは成功したがＣがブロックに周囲を囲まれている
図３

ｐｕｔの結果ブロックに囲まれる場合②ｐｕｔによる相手へブロックを置くことが成功せず、ターン終了後アイテムが同数だった場合。
「２－１勝敗決定の基本」及び「２－２勝敗決定の補足」以外の事例については、そのつど審判長の判断または実行委員会の協議で決定する。

5

３ マップについて
３－１ マップの構成パーツ
マップは以下のパーツより構成される。
パーツ
or名称

床（何もない）

敵

ブロック

アイテム

ｷｬﾗｸﾀ番号

0

1

23

図４

マップ構成パーツ

３－２ マップについて・各年度で使用される、マップのテーマ・詳細については全国情報技術教育研究会（以下全情研と表記する）ホームページ掲載のサンプルマップを参照すること。
・クライアント両方が接続を完了するまではマップ情報はわからないものとする。
・予選のマップなど、使用予定マップの公開・非公開は実行委員会にて決定され全情研ホームページで発表する。
・ターン数はマップごとに異なり、マップは実行委員会が作成する。

図５

マップ表示の例

6４ クライアントについて
クライアントプログラムはC又はHをいくつかのメソッド（命令）と制御文であるif文やwhile文を組み合わせて自律的に制御していくものである。また、クライアントプログラムはサーバプログラムと通信することにより、サーバから周囲情報を受信し、メソッドをサーバへ送るものである。メソッドはＪａｖａについては競技部品として提供されているので、新しく開発する必要はない。ただし、他の言語で開発する場合は、サーバとの通信を仕様（Ｐ７参照）に沿った形で行える必要がある。
クライアントの作成においては、以下について留意すること。
①サーバに接続できるもの（接続、通信等ＣＨａｓｅｒを実行する上で問題がなければ開発言語は問わない）であること。接続できないクライアントは失格とする。
②作品はバッチなどで自動的に切り替わるようにしてあれば、Ｃｏｏｌ用・Ｈｏｔ用を分けて１作品とすることができる。
③サーバＩＰアドレスやポート番号をサーバ接続時に指定できるようにしてあること。（予戦においても同様に必要である。）※サーバＩＰアドレスは、決勝前の接続テスト時に発表される。
※ポート番号は、Ｃｏｏｌが40000、Ｈｏｔが50000である。

7

～通信の仕様～
Java以外のプログラム言語やedu.procon.Connect2010クラスを使わずに取り組む場合、次の手順で通信する。クールのサーバソケットの番号は、"40000"で、ホットは”50000”である。
①サーバと接続後、サーバへチーム名（文字列）を送信する。チーム名の文字列は先頭4文字（全角）が有効である。5文字目以降（全角）は無視される。半角の場合は、先頭８文字が有効になる。また、""を送信した場合、チーム名は自動的に決定され、先攻の場合"Cool"、後攻の場合"Hot"となる。
②サーバが"@"を送信するので、これを受信する。
③サーバに文字列"gr"を送信する（getReady）。文字列の末尾は"¥r¥n"である。
④サーバが送信する制御情報と周囲情報10文字分（例："1000000000"）を受信する。
⑤サーバにメソッドをあらわす以下の文字列2文字を送信する。なおその際のデータは「メソッド＋￥ｎ」の4バイトになる。4バイトの文字列が送られない場合は、送られるまでサーバは受信待ち状態となる。
なお、有効でない文字を送った場合負けとなる。

Right

Left

Up

Down

walk 系

wrwl

wu

wd

look 系

lr

ll

lu

ld

search 系

sr

sl

su

sd

put 系

prplpupd⑥再度、サーバが送信する情報 10 文字分（例："1000000000"）を受信する。
⑦サーバに文字列"#"を送信する。
⑧以降は、制御情報が 0 になるまで、②から⑦を繰り返す。

クライアント(クール)

競技サーバに接続（ソケット番号：40000）

競技サーバ

クライアント(ホット)競技サーバに接続（ソケット番号：50000）

チーム名

チーム名
＠
gr
周囲情報(10 文字)
ターン

メソッド(wl,wr など)
周囲情報(10 文字)＠#gr
周囲情報(10 文字)
メソッド(wl,wr など)
周囲情報(10 文字)
#

図６

通信手順
8

ターン

５ サーバについて
CHaser2012は競技サーバへ２つのクライアントプログラムが、それぞれネットワークで接続し、サーバプログラムとクライアントプログラムの間で通信を行って、クライアント同士が１対１で対戦する競技である。なお、開発段階では１つのコンピュータ上にサーバプログラムとクライアントプログラムを動作させ対戦させることができる。

図７

競技におけるサーバ・クライアントイメージ

サーバでは、マップの表示、ＣとＨの表示、ターン数の管理、アイテム取得数の管理、勝敗の表示などを行う。クライアントからの行動命令を実行し、キャラクター周囲情報や結果をクライアントに返す事も行う。
サーバプログラムは実行委員会より提供され、新たに開発する必要はない。

決勝ではサーバコンピュータを置き、クライアントがネットワーク接続することで対戦を行う。サーバのＩＰアドレスは、決勝当日に発表される。Coolのソケットの番号は、"40000"で、Hotは”50000”である。これらをクライアントは入力できる形を作っている必要がある。

9

６ 作品提出について作品の提出について、提出期限・提出書類等は全情研から出される募集要項を遵守し行うこと（全情研ホームページ参照）。
なお、おおまかな作品提出に関する注意事項は以下のとおりである。
～注意事項～
・サーバに接続できれば開発言語は問わない。
・１校から３作品まで応募可能とする。内訳は、３チームがそれぞれ１作品でも１チームが３作品でもよい。
・予選は期限を越えて作品の訂正をすることができない。期限内であれば、１度提出後であっても、訂正版を提出することができる。この場合、最終提出作品のみが有効となる。
・参加申し込みは、全情研指定の申込用紙（全情研ホームページより）を使い申し込む。
申込書は、1 作品に 1 通が必要となる。
・１チームを構成する人数は 5 名までとする。また、申し込み後のメンバ変更は認めない。
申し込みにあたっては、複数のチームにまたがって同一の選手がいてもよい。
・予選作品はバッチなどで自動的に切り替わるようにしてあれば、Ｃｏｏｌ用・Ｈｏｔ用を分けて１作品とすることができる。
・接続先（サーバ）ＩＰアドレス及び、ポート番号をサーバ接続時に指定できること。
・作品名は、「全情研会員番号（http://www.zenjouken.com/?page_id=24を参照）」＋０１～０３の半角数字６桁とすること。
例

埼玉県立進修館高等学校（3407）の１つ目の作品ならば、作品名は「340701」

図８ チーム名イメージ（図は埼玉県立進修館高等学校０１と埼玉県立熊谷工業高等学校０１の対戦）

10

７ 予選について
・勝敗については「２勝敗について」による。

・予選は応募された作品を、プログラミングコンテスト実行委員会が対戦させる。

８ 決勝について
８－１ 決勝における競技方法
・勝敗は、「２勝敗について」による。

・トーナメント表にて、第１試合から第１２試合まで行う。第１試合から第４試合が１回戦に相当し、第５試合以降は順位決定戦となる。
・サーバのＩＰアドレスは、決勝前の接続テスト時に発表される。
・決勝に出場するチームは予選上位８チームである。尚、この８チームは１つの学校で重複しない。したがって、予選で例えば７位と８位のクライアントが同じ学校の場合７位のクライアントが決勝に進出し、残る１枠は次に最上位にくる別の学校のクライアントになる。
・決勝は、エントリーした競技者自身が対戦を行う。
～対戦方法～
・１試合につき３ﾗｳﾝﾄﾞおこなう。２ﾗｳﾝﾄﾞ先に勝った方が「勝ち」となる。
・先攻・後攻の有利不利をなくすために２ﾗｳﾝﾄﾞ目は、先攻・後攻を入れ替えて行う。
例えば、１ﾗｳﾝﾄﾞ目でA高校がCool、B高校がHotであったとすると、２ﾗｳﾝﾄﾞ目はCool、Hotが入れ替わり、B高校がCool、A高校がHotとなる。したがって、Coolが２回連続で勝っても「勝ち」とはならないので注意すること。
・１勝１敗のときは、３ﾗｳﾝﾄﾞ目の先攻・後攻は「じゃんけん」で決める。

11

８－２ サーバへの接続について・１ﾗｳﾝﾄﾞごとに接続を行う。接続時間はＣ、Ｈ共に持ち時間を３分とする。時間内に接続完了するものとし、計時係が計測する。持ち時間を超え、接続できなかったクライアン
トはそのﾗｳﾝﾄﾞを負けとする。
※注意点※①サーバへの接続は、Ｃから先に接続し完了後Ｈが接続する。
②Ｃが接続完了後、Ｈが接続に失敗した場合Ｃの接続は有効とする。この際サーバを再起動するが、再起動にかかる時間及びＣが接続している間の時間はＨの接続時間の計時を一時停止する。Ｈに接続を促すアナウンスがあった時に計時を再開する。なお、この場
合のＨの接続失敗とは、サーバから警告を返された場合などでサーバの再起動を要する時である。
③クライアントが接続完了後、間違ってもう一度接続する事等でサーバから警告を返された場合、接続は成功したとみなしサーバ再起動後再び接続するものとする。再び接続する際の計時は行わない。ただし、２－２－⑤のようなケースで起きた警告の場合は別途審議し判断する。
④Ｃの接続時間内に、Ｈが接続した場合は理由を問わずＨの負けとする。

図９８－２②の例12

９ その他
その他詳細及び、この内容に変更があった場合は全情研のホームページ内、プログラミングコンテストのページに掲載する。

全国情報技術教育研究会（全情研）
http://www.zenjouken.com/

13

ＣＨａｓｅｒ２０１２

ルールブックVer.1.0

２０１２．７．１７
Ver.1.1
２０１２．８．２１
全国情報技術教育研究会
全国高校生プログラミングコンテスト実行委員会 編14