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

CHaserOnline 2022
STEP UP HINT … [1]

１はじめにこんにちは。このヒントを見ているということは、CHaserOnline に興味を持ってもらえたということで、担当者一同嬉しく思います。底は深いです。ぜひチャレンジしてみてください。
このヒントのように、HP に掲載していくステップアップヒントや参考動画は、プログ
ラムの作り方やサンプルをわかりやすく紹介していきます。ぜひ参考にしてみてください。
ヒント①では、２「CHaserOnline とは」
３「初めての動作・対戦参加（トライアルマニュアルより詳しく！）」
４「初めてのプログラム改良」
５「今年度の仕様①」
６「対戦ボーナス」
について解説していきます。
※まったくの初心者、何もしたことがないよ。という人は、「トライアルマニュアル」
を読んだうえでこちらを読むとわかりやすいです。
ステップアップヒントは、①②③の３つを予定しています。

★ヒント動画や解説動画を youtube にて配信中です！
全プロちゃんねる：https://www.youtube.com/channel/UCk2sH6eYa-iPSlgKv22hX5Q

1

２CHaserOnline とは
古くは、プログラムとプログラムが追いかけっこ（チェイス）をして勝負していたので、チェイサーオンラインと名付けられたという過去があります。
現在の CHaserOnline はクライアントプログラムで競技サーバへアクセスすることから始まります。１〜８つのクライアントプログラムがネット経由で通信を行い対戦するという競技です。
（最大８人対戦ができます。
）

端末

サ
ー対
バ戦

端末

CHaserOnline に参加するには、クライアントプログラムを用意する必要があります。詳
しくはトライアルマニュアルや後述の３をご参照ください。
この競技の重要な部分は、「どうやって行動させるか？（行動アルゴリズムをどう作るか）」です。C 言語の if 文や while 文を組み合わせ、プログラムが自分でマップを解析し、高得点を取るにはどうすればよいかを考え、探索させていきましょう。
多くの得点を得たプログラムが勝者です。高得点を取るには、「周囲の分析」、
「移動する
方向」
、
「アイテムを拾う」、「他クライアントからアイテムを奪う」などの行動をどう組み合わせるかが大切です。

★ 参考動画 ★
ルールや行動コマンドについて：https://youtu.be/6CGbNTj8hkc

2

３－１C 言語開発環境の準備 （導入例として Live 起動の Linux を紹介します）

C 言語の実行環境があれば、省略可能です。 →４へ
簡単に C 言語の実行環境を整える方法として、LiveCD Linux を紹介します。
Linux という無料公開されている OS を DVD 等に書き込み、それを起動する方法です。
※VirtualBox を利用しても OK です。
（https://youtu.be/YssbZyBbS08）① Linux のイメージファイルのダウンロードリンクは全情研 HP に掲載してあります。
http://www.zenjouken.com/?page_id=588

バージョンが更新されることがあります。
現在：PuppLinux800② Linux の iso イメージファイルのダウンロード
Linux の種類の中でも、PuppyLinux での実行を説明します。
クリックするとファイルのダウンロードをすることができます。
デスクトップなどの任意の場所に保存をしてください。
※保存場所は自由ですが、容量が 730MB 程度あるので十分な空き容量がある場所に保存してください。
③イメージファイルの書き込み
ライティングソフト等でＤＶＤ－Ｒに書き込みをしてください。その時、イメージファイルの書き込みを行うように設定してください。普通のファイルとして書き込んでしまうと起動することができませんのでご注意ください。

3

④作成した DVD から Linux を起動作成した DVD を PC に予め入れた状態で PC を起動し、「F12」を押す等でブートメディアを選択して、起動する。
※UEFI や BIOS の設定で DVD からブートできるようにする必要があるかもしれません。
⑤ ネットワークの設定

右クリックし Setup networking を選ぶ「Puppy Network Wizard」が起動する。
「eth」から始まるのが有線ＬＡＮの設定なので、「eth」から始まるボ
タンをクリックする。

★参考動画
https://www.youtube.com/watch?v=f4oIGemdvIE

4

「ネットワークを設定」が開く。
ネットワーク内に DHCP サーバが稼動している場合は「自動 DHCP」
をクリックします。

※DHCP サーバが起動していない場合の説明を以下にまとめます。
（学校内の PC は、ほとんど固定 IP を利用しています。設定が必要です。
）「固定 IP」をクリックすると、設定画面が表示されます。
「IP アドレス」「ネットマスク」「ゲートウェイ」「DNS パラメータ(プライマリ)」「DNS パラメータ(セカンダリ)」を入力します。詳細な数値が不明な場合は適当な値を入れずに、まずはネット
ワーク管理者に確認をしてください。
IP 等は元々の OS の設定を参考にしてください。
また、プロキシサーバを利用している場合（学校内の場合）は、「ツール→インターネットオプシ
ョン→接続→LAN の設定→プロキシサーバー」のアドレスとポート番号も記録しておいてください。

設定が正しければ「～を通してセットしました。
」とメッ
セージが表示されます。

「eth○ネットワークの設定に成功!」と出ればネットワークの設定は成功です。
「Yes」を押します。

5

⑥ブラウザを起動する。
⑦プロキシの設定。
（学内 PC など、プロキシが必要な場合のみ設定してください）
編集→設定→ネットワーク→接続設定→詳細→手動でプロキシを設定する、と進み、予め記録しておいたプロキシのアドレスとポートを設定します。
※「すべてのプロトコルでこのプロキシを使用する」にチェックを入れてください。
⑧ブラウザで WEB ページを表示できたら、無事インターネット接続は完了です。

6

３－２サンプルプログラムのダウンロード★参考動画：https://youtu.be/bvzfpJNu3fg?t=11① 全情研のページを開く。
http://www.zenjouken.com/② プログラミングコンテスト→
CHaserOnline202X とアクセスする。
③ ページ左にある「サンプルプログラム」
をクリックし、ダウンロードする。

④ 「sample01.zip を開く」がウィンドウで「ファイルを保存」を選び OK をクリックする。
「保存ファイル名を入力してください」と表示されたら、そのまま保存をクリックします。
⑤ 画面左上の「ファイル」から my-documents とたどります。

⑥ 圧縮ファイルの解凍「sample01.zip」をクリックすると解凍ソフトが起動します。
解凍したいファイルをクリックし、「E 解凍」
をクリックする。
「展開先ディレクトリ名」が開きます。
ディレクトリはそのままで良いので「OK(O)」をクリックする。

「my-documents」にプログラムファイ
ルが解凍されます。

7

３－３サンプルプログラムの確認
サンプルプログラムやサンプル対戦動画が多く提供されていますので色々試してみましょう。今回は、とあるサンプル①について説明します。
★参考動画「zenprocon サンプル」で検索するといっぱい出てきます
https://www.youtube.com/results?search_query=%E3%82%B5%E3%83%B3%E3%83%9
7%E3%83%AB%E3%80%80zenprocon⓪ターミナル（端末）の起動
ここからの Linux はコマンドを実行して指示を出していくことになります。
まずは、ターミナル（端末）を起動します。

表示されたウィンドウにコマンドを入力し、Enter キーで実行していくことになります。

①サンプルプログラムがどこにあるかの確認「pwd」コマンドで保存先を確認します。ここでは/root となっていることを確認します。
「cd my-documents」で、今いるディレクトリを my-documents に変更します。
②ファイルの確認「ls *.c」とすることでソースファイルを確認します。

8

③プログラムのコンパイル「cc」コマンドでプログラムのコンパイルができます。
「-o」オプションを追加で指定することで出力される実行ファイルの名前を指定できます。
「cc CHaserOnlineClient○○○○public001.c -o CHaserOnlineClient○○○○public001.o」

出力する実行ファイルの拡張子は、「.o」としてください。.exe は windows のみです。
★参考動画
サンプルプログラムのコンパイル： https://youtu.be/sfG6iU5ZBf0

9

３－４サーバに接続してプログラムを動かす⓪ リンク集を入手する
全プロ公式ページからリンク集を入手するとページ移動がとてもわかりやすくなる。
http://www.zenjouken.com/?action=cabinet_action_main_download&block_id=1109&roo
m_id=1&cabinet_id=26&file_id=426&upload_id=1790

リンク集（html ファイル）10

① 公開ルームを調べる
CHaserOnline の待ち合わせページに入る。（リンク集を使うのが便利）
すると、ルーム番号・最大接続人数、マップ表示の可否、公開日、巡回ユーザ、備考の確認ができる。最大接続人数は、そのルームで対戦できるユーザの人数を表します。４と書いてあるのは４人用ルームということです。
★参考動画
待ち合わせ確認： https://youtu.be/525diL4GfYY?t=29※動画を最初から再生すると、プロキシ設定もやっています（学校内向け）

11

② ログインする
上の画像のような認証画面が出るので、ユーザ名とパスワードを入力して Go ボタン。
認証が完了すると、今現在 CHaserOnline に接続中のユーザ名と利用ルーム番号が分かります。自分が参加予定のルームが既に満員になっていないかどうかを確認してください。
★ゾンビ状態
まだクライアントプログラムを動作させていないのに、自分のユーザ名が表示されている
場合、ユーザが正しく通信できていない「ゾンビ状態」です。クライアントプログラムが処理を何かしら失敗してしまい、通常の処理完了していない時にゾンビ状態となってしまいます。３分程度経ったら自動で「ゾンビ状態」が解消されるはずなので、それ以降に再度「クライアントプログラムを実行」をしてください。
サーバでの「ゾンビ状態」の解除作業はクライアントのユーザ認証処理をきっかけに動作します。３分以上経っても「ゾンビ状態」が続いている場合は、クライアントプログラムを実行してみてください。
※サーバへ同時接続できる人数に制限をもうけています。サーバの負荷により人数制限をしますので、接続できなかった場合はしばらく待ってから試してみてください。
③ クライアントプログラムの実行
ターミナル（端末）を起動し、クライアントプログラムを起動するコマンドを実行する。
./CHaserOnlineClient○○○○public001.o ⊔http://www7019ug.sakura.ne.jp:80/
CHaserOnline003/user/⊔-u⊔ユーザ名⊔–p⊔パスワード⊔-r⊔ルーム番号※改行せずに１行で入力する。※「⊔」は半角の空白（スペース）を表している。
-u はユーザ名の指定、-p はパスワードの指定、-r はルーム番
号の指定をしている。
シェルスクリプトに登録しておけば、簡単なコマンドで実行することもできます。

★参考動画
シェルの調整（プロキシなし）：https://www.youtube.com/watch?v=aRDCYW5iFCE

12サンプルユーザ「hot」でルーム 999 にプロキシサーバ経由で接続する場合のコマンド例./CHaserOnlineClient○○○○public001.o ⊔http://www7019ug.sakura.ne.jp:80/
CHaserOnline003/user/⊔-u⊔hot⊔–p⊔hot⊔-r⊔999⊔-x⊔192.168.30.251:8080※プロキシ指定は-x オプションを使います。アドレスとポートは「：」でつないで記入します。
※プロキシサーバのアドレスとポート番号は利用環境によって違いますので、PC のブラウ
ザ設定を参考にすると良いでしょう。
★参考動画
シェルの調整（プロキシ有りの場合）： https://www.youtube.com/watch?v=oeieo6t3SP4※確認事項
クライアントプログラムが正常動作すると「端末」内に「param=command1=～」というメッセージが現れます。
ひとつのユーザ ID で複数のルームに同時にログインすることはできません。
ひとつのユーザ ID 同士で対戦させることはできません。
対戦ルームを利用して動作確認をしたい場合は手動クライアントと対戦しても良いでしょう。その場合は以下の公開（サンプル）ユーザを利用してください。

公開ユーザ cool
公開ユーザ hot
公開ユーザ hand

ユーザＩＤ
cool01 ~ cool99
hot01 ~ hot99
hand01 ~ hand99★参考動画
オンラインクライアント実行_サーバ画面表示：
https://www.youtube.com/watch?v=ii7GOvnrnco

13

パスワード
cool
hot
hand

④巡回ユーザ（ＣＰＵ）との対戦
巡回ユーザは常にどこかのルームを巡回し、対戦相手を待っています。ユーザが接続すると、ユーザ先攻、巡回ユーザ後攻で対戦が始まります。ルームによってＭＡＰも異なるので、色々なルームで対戦してみましょう。
⑤対戦中のＭＡＰ確認
リンク集のマップ→ユーザ認証と進む。
対戦中だけ、サーバのＭＡＰ画面を見ることが出来ます。クライアントプログラムが動作していない場合はエラー表示になってしまいます。対戦画面は自動的に更新されます。

※自分が対戦中の画面のみ表示
可能です。
※対戦中の動作ログ表示は自分のログだけが表示されます。対戦相手のログは表示されません。
※ルーム毎にサーバ画面表示の可否に違いがあります。表示されないルームは予戦の練習に利用
してください。
※予戦や本戦になるとサーバ画面は表示されなくなります。

⑥競技が終了すると「GameSet」と表示されます。
また、場外に完全に出てしまうと「Outside」と表示され、クライアントは停止しゾンビ化します。
その他にもクライアントプログラムの誤動作などによって「GameSet」と表示されることがありますので、⑧の対戦結果表示で確認をしてください。

14

⑦再度、競技を始めるには②から⑥の操作を繰り返します。
MAP の例は全情研のＨＰで公開されています。
ルーム情報の Excel ファイル使ってマップの様子を確認し、具体的な配置にどう対応していくか、考えながらプログラムを作っていくと良いでしょう。

「初心者、初級～上級対応ルーム情報.xlsx」
http://www.zenjouken.com/?page_id=583#_1083
参考動画
054_初心者、初級～上級対応ルーム情報 001

https://www.youtube.com/watch?v=xFFOt6TwhI8

15

⑧対戦結果の表示
リンク集から「結果」をクリックし、ログインします。
標準ではその日の対戦結果が表示されるようになっています。過去の対戦を見たい場合は、日付やルーム番号などを変更してください。
得点のマイナスが多い場合、表示されないことがありますが、得点の最小値をさらに小さくすることで表示できます。
★参考動画
結果の表示： https://www.youtube.com/watch?v=qQvrpMtUrzE⑨合計得点ランキング
リンク集から、「合計得点ランキング」をクリックし、ログインします。
最近の結果の中からルームに関係なく合計点でのランキングが表示されます。クライアン
ト作成の目標にすると良いでしょう。
★参考動画
合計得点ランキング： https://www.youtube.com/watch?v=jz68Rw3Eq_I

16

⑩Puppy の終了（個人ファイル保存用の USB メモリを準備してください)・シャットダウンを選びます。

初回だけ「PupSaveConfig」が表示されます。一度設定すれば次回からは表示されなくなります。
個人ファイルを保存する USB メモ
リを接続し、「ＯＫ」を選びます。

「sd○○」のような USB メ
モリアイコンが画面左下に表示されます。この「sd○○」が USB メモリの名前になります。

・先ほどの USB メモリの名前を選び「OK」を押します。

17

保存ファイル
サイズやスワップファイルの設定をして、「ＯＫ」を押します。

・「SFS ファイルをコピーする」かどうかを尋ねられるので「OK」を選びます。

「OK」を押します。
しばらくしてファイルの保存が終わるとコンピュータがシャットダウンします。
これ以降、起動する場合は USB メモリをさした
まま DVD から起動してください。

18

３－５プログラムの編集と内容の説明①エディタの設定※PuppyLinux 標準エディタを使う初回は設定が必要です。
★参考動画
PuppyLinux_Geeny エディタの調整、ファイルの開き方：
https://youtu.be/eZNcga62Ous②プログラムファイルの編集プログラムファイルを右クリックし、「テキストの編集」を選択する。
「Action を発行する」部分をどのように編集するかが勝負の分かれ目です。
それ以外の部分は特に編集しなくて大丈夫です。

19

③「Action を発行する」部分の説明
do-while 文で、設定されたコマンドが正常に実行されるまで繰り返すことになっている。
（通信待ち時間などの調整も兼ねている）
do{ ～}while(○○○!=0);

strcpy 文と strcat 文で、サーバに送るデータを生成している。
strcpy(param, "command2=");～略～

strcat(param, “wu”);

以上を踏まえたうえで…

４初めてのプログラム改良★メインディッシュ
「//Action の作戦を記入する」の部分に、どのように行動をさせたいかを記述する。
下の図だと、mode 変数に 5 が入っているので、case 5 のみを繰り返すようになっている。
（右に動き続けるだけ）

20

if 文や switch 文などを活用すると、効率的に動けるようになるぞ！
例）mode に何の数字を代入するかを考えさせる…
if( returnNumber[5] == 2){ mode = 5; }else{ mode = 7; }
0
3
6

1
4
7

2
5
8

サーバからの戻り値の６番目(returnNumber[5](自機の右側))が２（土）だったら右（mode = 5）に進むようにし、そうでなければ下（mode = 7）へ進む
プログラム。
この例だと、自機の下の状況を判断することなく動いてしまう。どうすればよいか？

◆リターンナンバーの配列（サーバからの戻り値）の見方
例）◆行動パターンの決定（変数 mode の考え方）

21◆基本的な判断文の書き方と解説

i◆プログラム改良の第一歩「大きな減点を減らすべし」

大きな減点になってしまうパターンは２つです。
・場外に出てしまう。
・奈落に踏み込んでしまう。
ではどのようにプログラムを変えればいいのか。変える方法はたくさんあります。勝つためにはどのようにすればいいのか自分だけの作戦を考えてみましょう！
ここでは、減点を回避するために「岩盤や奈落を見たら方向転換する」という方法を紹介します。例えば、Action 部分にこう記述してみましょう。
if(returnNumber[mode] == 12){if(mode == 5){ mode = 1;}
else if(mode == 1){ mode = 3;}
else if(mode == 3){ mode = 7;}
else if(mode == 7){ mode = 5;}else { mode = 5;}}
こうすると、クライアントは進行方向に奈落を見つけたら方向転換することができる
ようになります。しかし、曲がった先にも奈落が存在するとこのままではハマってしまいます。さらに回避をするためには、同じ記述をもう一回分追加してみましょう。すると、
１８０℃方向転換して自分が来た方向に戻ることができます。このようにして、奈落を踏
むことがないクライアントを作ることができます。

同様の手順で、岩盤内にも侵入しないようにするためにはどうすればいいでしょうか。
答えは簡単です。上記で追加した記述の１行目にある「12」という部分を目標のターゲッ
トが持つ番号に変えてしまえばいいのです。 あれ、岩盤の番号は何番だったかな．．
．？

22

◆他のコマンドを使用する
switch(mode){ case 1:
case 3:case 5:case 7:

strcat(param, "wu");
strcat(param, "wl");
strcat(param, "wr");
strcat(param, "wd");
・・・

break;
break;
break;
break;

strcat(param, ”〇〇”)
この部分でコマンドを指定しています。他の動作をさせる場合はここに記述してください。
◆おまけ
send_cmd("CommandCheck", param, ReturnCode);
この文でコマンドを CHaserOnline サーバへ送信しています。 消さないでね…。
/*----------------------Action を発行する-------------------------*/
do{strcpy(param, "command2=");//Action の作戦を記入する
mode = 5;
switch(mode){case 1:
strcat(param, "wu");break;
case 3:
strcat(param, "wl");
break;
case 5:strcat(param, "wr");
break;
case 7:
strcat(param, "wd");
break;
・・}
send_cmd("CommandCheck", param, ReturnCode);}while(strchr(ReturnCode, ',')==NULL&&strcmp(ReturnCode, "user=")!=0);//Action が受け付けられるまでループ23

★参考動画
サンプルプログラム 1 の動作例： https://youtu.be/UarWs1cFcrg★参考動画
サンプルプログラム 1 の編集方法： https://youtu.be/_VY2jKdVDSI

24

５今年度の仕様①
熱心にＨＰを覗いている方は気付いているかもしれませんが、新要素の追加や変更などがありました。それについて解説いたします。

【ストーリー】
やぁ、今回も引き続き遠隔・化石採掘マシーンを作ってもらいたい。フィールドに散らばった化石やアイテムを探査・発掘して情報を集めていこうじゃないか。
今回はジオードが集中するエリアを発掘することになったから、ジオードの殻を砕くためにマシーンの直線掘削力を強化するチューニングしておいた。その一方、他の作業の効率が下がったような…… まぁ、良しとしよう！
地盤の乱れによってバラバラになった地層はブラックスターで食い止めることに成功している。
（ブラックスターには微弱ではあるが特殊な磁力があり、お互いの位置関係を保つことができる。
）しかし、このブラックスターの効果も長くは持たないらしい。地層が崩れて思うように探査ができなくなってしまうことがありそうだ。注意してくれ。
フィールドは深い穴によって囲まれている場合もあるので、化石採掘マシーンが落下しないように気を付けてくれ。また、簡易型ソナー装置は引き続き標準装備となっている。検討を祈る。
C.C. 2022 白髭を蓄えた好奇心旺盛な考古学者

さて、この文から何が読み取れるでしょうか…？

25

①マップ上のキャラクタ（アイテム）について
番号

キャラクタ名アイコン

得点(上に乗ったら)一言
既に通った道

０

穴

－２０

１

ターゲット

５０

２

土

１０

３

アイテム

３０

４

ジオード

－６００

５

化石１

１２５

６

化石２

１５０

７

化石３

１７５

８

化石４

２００

２０～２３

ワープ

５

９

アンモナイト

１００

6 マス
４０〜４３
15 マス
５０〜５３

岩盤

－１０

初心者用マス目
通れません
ガードレール役

１２

奈落

－３００

落ちると危ない６０～６３

ブラックスター５

ブラックスター間で
ワープする

場外

－５００

場外には何があるのだろうか

クライアント０

ルームの接続順で指定される
1000,2000 のように順番です

１０００~
８０００

掘り進めることに意味がある

硬い殻だ…

右・左・上・下へ
１０マスワープする※5 マスのワープ（３０～３３）については１０マスワープと同様です。
26

②新要素
「ジオード」についてジオードとは．
．
．？
→一見すると岩のようにごつごつした見た目をした普通の石ですが、割ってみると中に空洞ができており、そこに水晶がびっしり張り付いているというものです。
今年度の CHaserOnline では、マップ上にこのジオードが散らばった状態になっています。ジオードの中には高得点を獲得できるアイテムたちが眠っています。中身をうまくとれるように工夫してプログラムを作成しましょう。

…ジオードに触れてしまうと、－６００点と大きくポイントが減ってしまいます。ですが、ポイントを獲得できる化石はジオードの中に囲まれていて、普通に入ったのではあまりポイントを得ることができません。中の化石を取るのにも工夫がいるのです。
このほかにも、画像やキャラクタが持っているポイントが変更されているのでよく確認しておこう！！

【予告】2000 番台は旧ルールのため、まもなく接続制限回数が１回に変更されます。
また、ステップアップヒント公開後は順次閉鎖されます。

27

６対戦ボーナスについて
練習用ルームの結果によって以下のボーナス点を第一次予戦得点に加算します。
※全国プロコンのＩＤ毎に集計します。(該当年度の zenpro で始まるユーザ)
接続ボーナス
練習用ルームに最大ターン数まで取り組むことが出来た回数をカウントします。
接続回数×１０点を接続ボーナスとし、２００回（２０００点）を上限とします。
練習得点ボーナス
練習用ルーム毎の最大得点を合計します。５０００点を上限とします。
初参加ボーナス
CHaserOnline に初参加または、CHaserOnline の第一次予戦を突破したことがない高校には初参加ボーナス７０００点をＩＤごとに加算します。
接続ボーナス及び 練習得点ボーナスについては初参加ボーナスとは別に計算し最大１４０００点が加算されます。
集計期間ＨＰに公開される予定です。確認してください。
対象ルーム
４３６２～４７０５28

７通信の仕様（上級者向け）
C 言語以外のプログラミング言語で取り組む場合、次の手順で通信します。すべてのクライ
アントのソケット番号は 80 番です。
① サーバの URL にユーザ名、パスワードを送信します。ユーザ名、パスワードは登録済
みのものを送信してください。cool と hot については、練習用 ID として公開します。
パスワードはユーザ名と同じです。得点は登録されたユーザ名で集計されます。練習用
ID の得点は引き継がれませんのでできるだけ早くユーザ登録をしましょう。同じユー
ザ ID で複数のクライアントを認証させることはできません。
② ユーザ認証が成功すると、「roomNumber=」とメッセージが返ってくるので、ルーム番号を送信します。
③ ユーザ認証に失敗したらクライアントプログラムを停止させます。
④ ルーム指定が成功すると、「command1=」とメッセージが返ってくるので、サーバに文字列”gr”等を送信します（ゲットレディムーブ）。
⑤ ルーム指定に失敗したらクライアントプログラムを停止させます。
⑥ 各ルームで指定されているクライアント数が接続済みで、なおかつ自分のターンであれ
ば、サーバからリターンコード（周囲９個のキャラクタ番号）が返ってきます。
そうではない場合は④に戻ります。
⑦ ゲットレディが成功すると、サーバからリターンコード（周囲９個のキャラクタ番号）が返ってきます。また「command2=」とメッセージが返ってくるので、サーバにコマ
ンド文字列（コマンド表参照）を送信します。
⑧ コマンドが成功すると、サーバからリターンコード（周囲９個のキャラクタ番号）が返ってきます。また「command3=」とメッセージが返ってくるので、サーバにターン終了コマンド”#”を送信します。
⑨ ターン終了コマンドが成功すると次のクライアントの手番となります。
※クライアントが場外に近い場合は、返ってくるリターンコードの個数が減少します。
※ユーザ認証及びルーム番号送信に失敗した場合は、サーバ接続人数制限に達している可能性があります。クライアントを停止させてください。

29

２クライアントの場合
クライアント１

競技サーバ

クライアント２

競技サーバにユーザ認証

競技サーバにユーザ認証

ユーザ認証成功

ユーザ認証成功

ルーム番号送信
ルーム番号成功ｇｒコマンド等の送信
ルーム番号送信ｇｒコマンド等の送信
ルーム番号成功
周囲情報（９個）

ターン

ｇｒコマンド等の送信コマンドの送信ｇｒコマンド等の送信
周囲情報（９個）
ｇｒコマンド等の送信＃の送信
ｇｒコマンド等の送信
ｇｒコマンド等の送信
周囲情報（９個）
ｇｒコマンド等の送信コマンドの送信ｇｒコマンド等の送信

ターン

周囲情報（９個）
ｇｒコマンド等の送信＃の送信
ｇｒコマンド等の送信
周囲情報（９個）
ｇｒコマンド等の送信コマンドの送信ｇｒコマンド等の送信
周囲情報（９個）
・・・
ステップアップヒント１は以上です。

30