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

CHaser2010
ステップアップヒント１
１

はじめに
ステップアップヒントは、CHaser2010 をチャレンジする人のためにプログラムの作り方やサンプルを掲載したテキストです。ぜひ参考にしてください！
CHaser2010 のサーバプログラムや競技部品はすべて Java で作られています。ステップアップヒ
ントでは、Java を使用してプログラムを作っていきます。
２

Java 開発環境のインストール
Java でプログラミングを行うには開発キット（JDK：Java Development Kit）をインストールしなければなりません。以下の手順でインストールします。
①JDK のダウンロード先JDK は Java の開発元である Sun Microsystems 社のホームページから無償でダウンロードできます。最新バージョンは JDK 6 Update20 です（2009 年 6 月 16 日現在）。バージョンが新しくなると Update20 の数字部分が増えていきます。
ブラウザを開き、下記のアドレスにアクセスします。

http://java.sun.com/javase/ja/6/download.html②JDK のダウンロード
赤い四角で囲まれた「JDK ダウンロード」をクリックします。

JDK ダウンロードをクリック。

【画面 1】ダウンロードページ- 1 -CHaser2010step1.pdf③プラットフォームの選択
Platform（プラットフォーム）は開発するコンピュータの環境（Windows など）に合わせて選択します。次に「Download」をクリックします。

「Windows」を選択「Download」をクリック【画面 2】プラットフォーム選択④登録画面
登録しなくてもダウンロードできるので、「Skip this Step」をクリックします。

「Skip this Step」をクリック【画面 3】登録画面のポップアップ- 2 -CHaser2010step1.pdf⑤ダウンロード画面
ダウンロードするファイル「jdk-6u20-windows-i586.exe」をクリックします（ファイル名の中にある 20 はバージョン番号です）。

「jdk-6u20-windows-i586.exe」
をクリック【画面 4】ダウンロード画面⑥ファイルの保存「保存」をクリックし、保存場所（デスクトップなど）を選択します（画面 6）。保存せず直接インストールする場合は「実行」をクリックします。

【画面 5】実行か保存を選択【画面 6】保存フォルダを指定（例：デスクトップ）- 3 -CHaser2010step1.pdf⑦使用許諾契約（画面 7）
ダウンロードしたファイル（jdk-6u20-windows-i586.exe）をダブルクリックすると使用許諾契約が表示されるので、「同意する」をクリックします。
⑧インストールする機能とインストール先（画面 8）
インストールする機能とインストール先を設定することができます。今回は何も変更しないで「次へ」をクリックします。
標準のインストール先は「C:¥Program Files¥Java¥jdk1.6.0_20¥」です。

【画面 7】使用許諾契約【画面 8】インストール先⑨インストール（画面 9）
コンピュータの性能にもよりますが、インストールには数分かかります。
⑩インストール完了（画面 10）
インストールが完了したら「完了」をクリックして終了します。

【画面 9】インストール画面【画面 10】インストール終了- 4 -CHaser2010step1.pdf
３

バッチファイルの作成
Java の開発環境は次の場所にインストールされます（標準でインストールした場合）。

C:¥Program Files¥Java¥jdk1.6.0_20①プログラム保存フォルダの作成
Java がインストールされたフォルダに「program」という名前のフォルダを作ります。今後はこのフォルダにプログラムを保存します。

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

【画面 12】バッチファイル- 5 -CHaser2010step1.pdf③確認
インストールした Java とバッチファイルが動作するか確認します。
CHaser2010.bat をダブルクリックして、画面 13 のように表示されたら OK です。もし、「指定されたパスが見つかりません。」などのメッセージが表示されたら CHaser2010.bat が間違っている可能性があるので、見直してください。

【画面 13】バッチファイルの実行④Java バージョンの確認「java -version」と入力し、Java のバージョン確認をします。画面 14 のようにバージョンが表示されれば OK です。もし、NG ならば CHaser2010.bat を見直してください。

「java –version」と入力するバージョンが表示されればＯＫ【画面 14】java バージョンの確認- 6 -CHaser2010step1.pdf
４

競技部品のダウンロード①競技部品のダウンロード先
全国情報技術教育研究会のホームページから、競技部品（edu2010.jar と sample01.map）をダウンロードします。

http://zenjouken.com/contest/2010/右クリックして、「対象をファイルに保存」を選択【画面 15】全情研ホームページ②競技部品の保存先
ダウンロードした「edu2010.jar」と「sample01.map」は program フォルダに保存します。

【画面 16】ファイルの保存先- 7 -CHaser2010step1.pdf
５

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

【画面 17】sample2010_01.java の保存先
②サンプルプログラム１（sample2010_01.java）
・次の 4 つの動作を繰り返すプログラムです。
・searchUp( ) → searchRight( ) → searchDown( ) → searchLeft ( ) → ・・・
・4 方向をサーチするだけなので制限ターンになるまで動き続けます。
12345678910111213141516171819202122/****************************************************
sample2010_01.java******************************************************/
public class sample2010_01 {public static void main(String[] args) {int[] value;
value = new int[10];/********** 競技サーバに接続する **********/
edu.procon.Connect2010 target;
target = new edu.procon.Connect2010("全プロ", Integer.parseInt(args[0]));while (true) {// STEP1
value = target.getReady( );if (value[0] == 0) break;value = target.searchUp( );if (value[0] == 0) break;// STEP2value = target.getReady( );if (value[0] == 0) break;- 8 -CHaser2010step1.pdf
2324252627282930313233
3435363738
3940
41

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

①sample2010_01
フォルダに移動する②フォルダ内のファイル一覧を表示させる③sample2010_01.javaがあることを確認する④コンパイルする⑤フォルダ内のファイル一覧を表示させる⑥sample2010_01.classがあることを確認する【画面 18】コンパイル- 9 -CHaser2010step1.pdf
６

プログラムの実行
CHaser2010 はクライアント／サーバ型の競技なので、画面 18 のように CHaser2010.bat で起動したコマンドプロンプトを 3 つ用意します。このとき、左上の競技画面はまだ現れません。
①サーバ画面で次のコマンドを入力し、Enter キーを押します。
java edu.procon.Server2010 –Fsample01.map
マップファイル（sample01.map）が読み込まれ「*** SERVER START ***」と表示し、クライアントからの接続を待ちます。
②クライアント（クール）画面で次のコマンドを入力し、Enter キーを押します。
cd sample2010_01
続いて次のコマンドを入力し、Enter キーを押します。
java sample2010_01 2009
③クライアント（ホット）画面で次のコマンドを入力します。
cd sample2010_01
続いて次のコマンドを入力し、Enter キーを押します。
java sample2010_01 2010
④サーバ画面に「ゲームを開始します。」と表示されたら「Enter キー」を押し競技をスタートさせます。

④競技画面①サーバ画面

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

- 10 -

CHaser2010step1.pdf
７

通信の仕様（上級者向け）
Java 以外のプログラム言語や edu.procon.Connect2010 クラスを使わずに取り組む場合、次の手順で通信します。クールのサーバソケットの番号は、"2009"で、ホットは”2010”です。

①サーバと接続後、サーバへチーム名（文字列）を送信します。チーム名の文字列は先頭 4 文字が有効です。5 文字目以降は無視されます。また、""を送信した場合、チーム名は自動的に決定され、先攻の場合"Cool"、後攻の場合"Hot"となります。
②サーバが"@"を送信するので、これを受信します。
③サーバに文字列"gr"を送信します（getReady）。文字列の末尾は"¥r¥n"です。
④サーバが送信する制御情報と周囲情報 10 文字分（例："1000000000"）を受信します。
⑤サーバにメソッドをあらわす以下の文字列 2 文字を送信します。
RightLeftUp

Down

walk 系

wr

wl

wu

wd

look 系

lrllluld

search 系

srslsusd

put 系

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

競技サーバ

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

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

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

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

ターン