CHaser2009step1

全国高校生プログラミングコンテスト

CHaser2009
ステップアップヒント１【概要】
ステップアップヒントは、CHaser2009 をチャレンジする人のためにプログラムの作り方やサンプルを掲載したテキストです。ぜひ参考にしてください！
CHaser2009 のサーバプログラムや競技部品はすべて Java で作られています。ステップアップヒントでは、Java を使用してプログラムを作っていきます。
【準備１】Java 開発環境のインストール
Java でプログラム開発を行うためのキット（JDK）をダウンロードします。
①JDK6 のダウンロード
JDK は Java を開発した Sun Microsystems 社のホームページからダウンロードします。最新バージョンは JDK 6 Update14 です（2009 年 6 月 10 日現在）。バージョンが新しくなると Update14 の数字部分が変わります。
http://java.sun.com/javase/ja/6/download.html②赤い四角で囲まれた「ダウンロード」をクリックします。

クリック【画面 1】ダウンロードページ- 1 -CHaser2009step1③Platform（プラットフォーム）は、使っている環境（Windows など）を選択します。
次にライセンスに同意してから「I agree to the ...」にチェックを入れ、「Continue」をクリックします。

①クリック

②チェック

③クリック

【画面 2】プラットフォーム選択とライセンス同意④ダウンロードするファイル「jdk-6u14-windows-i586.exe」をクリックし、任意の場所に保存します（ファイル名の 14 はバージョンによって変わります）。

クリック【画面 3】ダウンロードファイル- 2 -CHaser2009step1⑤ダウンロードしたファイルをダブルクリックし、インストールします。
画面 4 は使用許諾契約の確認です。「同意する」ボタンをクリックします。
画面 5 でインストールするモジュールとインストール先を設定します。今回は何も変更しないで「次へ」をクリックします。インストール中は画面 6 のようになります。
画面 7 で JRE（Java の実行環境）のインストール先を設定します。同じく何も変更しないで「次へ」をクリックします。インストール中は画面 8 のようになります。
画面 9 になったら「完了」をクリックしインストール終了です。

【画面 4】使用許諾契約【画面 5】インストール先【画面 6】インストール画面【画面 7】JRE のインストール先【画面 8】インストール画面【画面 9】インストール終了- 3 -CHaser2009step1【準備２】バッチファイルの作成
Java のインストールが終わると次の場所に環境がインストールされます（標準でインストールした場合）。
C:¥Program Files¥Java¥jdk1.6.0_14①画面 10 の場所に「program」という名前のフォルダを作ります。今後はこのフォルダにプログラムを保存します。

【画面 10】JDK がインストールされたフォルダ②Java を使うためにパスを設定します。システム環境変数を直接設定することもできますが、今回はバッチファイルを使います。これにより、管理者権限を持たない場合や複数の Java バージョンを使い分けることができます。
program フォルダの中に、CHaser2009.bat というファイルを作りメモ帳などで以下のプログラムを入力します（保存先はデスクトップでも構いません）。

【画面 11】バッチファイル- 4 -CHaser2009step1③インストールした Java とバッチファイルが動作するか確認します。
CHaser2009.bat をダブルクリックして、画面 12 が表示されたら OK です。もし、NG ならば CHaser2009.bat などを見直してください。

【画面 12】バッチファイルの実行
次に「javac」と入力し、Java コンパイラが起動するかチェックします。画面 13 のようなメッセージが出れば OK です。もし、NG ならば CHaser2009.bat などを見直してください。

【画面 13】javac コマンドの実行- 5 -CHaser2009step1【準備３】競技部品のダウンロード
全国情報技術教育研究会のホームページから、競技部品（edu2009.jar）をダウンロードします。
http://zenjouken.com/contest/クリック【画面 14】全情研ホームページ
ダウンロードした「edu2009.jar」は program フォルダに保存します。

【画面 15】edu2009.jar の保存先

- 6 -

CHaser2009step1【サンプルプログラム１】
program フォルダの下に「sample2009_01」という名前のフォルダを作り、次のプログラムをエディタで入力します。プログラム名は「sample2009_01.java」です。

【画面 16】sample2009_01.java の保存先
【sample2009_01.java】
・次の 4 つの動作を繰り返すプログラムです。
・searchRight( ) → walkRight( ) → lookDown( ) → putDown( ) → ・・・・周囲の情報を無視して右に進むので、右にブロックがあるとぶつかります。
1
public class sample2009_01 {2
public static void main(String[] args) {3int[] value;
4value = new int[10];56/********** 競技サーバに接続する **********/
7edu.procon.Connect2009 target;
8target = new edu.procon.Connect2009( );910while (true) {11/* STEP1 */12value = target.getReady( );13if (value[0] == 0) break;14
value = target.searchRight( );15
if (value[0] == 0) break;16
17/* STEP2 */18
value = target.getReady( );19
if (value[0] == 0) break;20
value = target.walkRight( );21
if (value[0] == 0) break;22
23/* STEP3 */24
value = target.getReady( );- 7 -CHaser2009step1

25
26
27
28
29
30
31
32
33
34
35
36
37
38

if (value[0] == 0) break;value = target.lookDown( );if (value[0] == 0) break;/* STEP4 */value = target.getReady( );if (value[0] == 0) break;value = target.putDown( );if (value[0] == 0) break;}/********** 競技サーバから切断する **********/
target.exit( );}}【プログラムのコンパイル】
・CHaser2009.bat をダブルクリックします。
・次の①から⑥にしたがってコマンドを入力し、コンパイルします。
・コンパイルでエラーが出たら、プログラムをチェックし上書き保存してから再度コンパイルします。

①sample2009_01
フォルダに移動する②フォルダ内のファイル一覧を表示させる③sample2009_01.javaがあることを確認する④コンパイルする⑤フォルダ内のファイル一覧を表示させる⑥sample2009_01.classがあることを確認する【画面 17】コンパイル- 8 -CHaser2009step1【プログラムの実行】
・ CHaser2009 は ク ラ イ ア ン ト ／ サ ー バ 型 の 競 技 な の で 、 画 面 18 の よ う に
CHaser2009.bat で起動したコマンドプロンプトを 3 つ並べます（左上の競技画面はまだ現れません）。
①サーバ画面で次のコマンドを入力し、Enter キーを押します。
java edu.procon.Server2009「*** SERVER START ***」と表示され、クライアントからの接続を待ちます。
②クライアント（クール）画面で次のコマンドを入力し、Enter キーを押します。
cd sample2009_01
続いて次のコマンドを入力し、Enter キーを押します。
java sample2009_01③クライアント（ホット）画面はクールと同じコマンドを入力します。
④競技画面が現れ、競技がスタートします。

①サーバ画面

④競技画面②クライアント画面（クール）③クライアント画面（ホット）【画面 18】CHaser2009 実行の様子⑤競技が終了したら、競技画面の右上にある×ボタンで画面を閉じます。
⑥再度、競技を始めるには①から③の操作を繰り返します。

- 9 -CHaser2009step1【通信の仕様】（上級者向け）
Java 以外のプログラム言語や edu.procon.Connect2009 クラスを使わずに取り組む
場合、次の手順で通信します。サーバソケットの番号は、"2009"です。
①サーバと接続後、サーバへチーム名（文字列）を送信します。チーム名の文字列は先頭 4 文字が有効です。5 文字目以降は無視されます。また、""を送信した場合、チーム名は自動的に決定され、先攻の場合"Cool"、後攻の場合"Hot"となります。
②サーバが"@"を送信するので、これを受信します。
③サーバに文字列"gr"を送信します（getReady）。文字列の末尾は"¥r¥n"です。
④サーバが送信する制御情報と周囲情報 10 文字分（例："1000000000"）を受信します。
⑤サーバにメソッドをあらわす以下の文字列 2 文字を送信します。
RightLeftUpDownwalk 系

wrwlwuwd

look 系lrlllu

ldsearch 系

srsl

su

sd

put 系

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

競技サーバ

競技サーバに接続（ソケット番号：2009）
チーム名

競技サーバに接続（ソケット番号：2009）
チーム名

@
gr
周囲情報（10 文字）
ターン

メソッド（wl、wr など）
周囲情報（10 文字）#@
gr
周囲情報（10 文字）
メソッド（wl、wr など）
周囲情報（10 文字）
・・・#【図 1】通信手順- 10 -

ターン