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

CHaserOnline 2024
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」から始まるボタンをクリックする。

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

4

★参考動画https://www.youtube.com/watch?v=f4oIGemdvIE※DHCP サーバが起動していない場合の説明を以下にまとめます。
（学校内の PC は、ほとんど固定 IP を利用しています。設定が必要です。
）「固定 IP」をクリックすると、設定画面が表示されます。

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

設定が正しければ「～を通してセットしました。
」とメッ
セージが表示されます。
※エラーが出ることがありますが、何回か入力していれば通るパターンもあります。

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

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

5

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

④「CHaserOnlineClient2024public001.zip を開く」のウィンドウが出たら、「ファイルを保存する」を選
び OK をクリックする。
「保存ファイル名を入力してください」と表示されたら、名前は変えずに「root/my-documents」に保存する。
⑤ 画面左上の「ファイル」から my-documents に移動する。

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

「my-documents」にプログラムファイルが解凍されます。サンプル 2024 のプログラムでは、「CHaserOnline2024.h」が必要になるので、同様の手順でダウンロードしてください。

6

３－３サンプルプログラムの確認
サンプルプログラムやサンプル対戦動画が多く提供されていますので色々試してみましょう。今回は、とあるサンプル①について説明します。
★参考動画「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」とすることでソースファイルを確認します。

7

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

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

8

３－４サーバに接続してプログラムを動かす⓪ リンク集を入手する
全プロ公式ページからリンク集を入手するとページ移動がとてもわかりやすくなる。
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 ファイル）9

① 公開ルームを調べる
CHaserOnline の待ち合わせページに入る。（リンク集を使うのが便利）
すると、ルーム番号・最大接続人数、マップ表示の可否、公開日、巡回ユーザ、備考の確認ができる。最大接続人数は、そのルームで対戦できるユーザの人数を表します。４と書いてあるのは４人用ルームということです。
★参考動画
待ち合わせ確認： https://youtu.be/525diL4GfYY※動画を最初から再生すると、プロキシ設定もやっています（学校内向け）② ログインする
上の画像のような認証画面が出るので、ユーザ名とパスワードを入力して Go ボタン。
認証が完了すると、今現在 CHaserOnline に接続中のユーザ名と利用ルーム番号が分かります。自分が参加予定のルームが既に満員になっていないかどうかを確認してください。
★ゾンビ状態
まだクライアントプログラムを動作させていないのに、自分のユーザ名が表示されている
場合、ユーザが正しく通信できていない「ゾンビ状態」です。クライアントプログラムが処理を何かしら失敗してしまい、通常の処理が完了できない時にゾンビ状態となってしまいます。３分程度経ったら自動で「ゾンビ状態」が解消されるはずなので、それ以降に再度「クライアントプログラムを実行」してください。
サーバでの「ゾンビ状態」の解除作業はクライアントのユーザ認証処理をきっかけに動作します。３分以上経っても「ゾンビ状態」が続いている場合は、クライアントプログラムを実行してみてください。
※サーバへ同時接続できる人数に制限をもうけています。サーバの負荷により人数制限をしますので、接続できなかった場合はしばらく待ってから試してみてください。
10

③ クライアントプログラムの実行
ターミナル（端末）を起動し、クライアントプログラムを起動するコマンドを実行する。
./CHaserOnlineClient2024public001.o ⊔http://www7019ug.sakura.ne.jp:80/
CHaserOnline003/user/⊔-u⊔ユーザ名⊔–p⊔パスワード⊔-r⊔ルーム番号※改行せずに１行で入力する。※「⊔」は半角の空白（スペース）を表している。
-u はユーザ名の指定、-p はパスワードの指定、-r はルーム番
号の指定をしている。
シェルスクリプトに登録しておけば、簡単なコマンドで実行することもできます。

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

サンプルユーザ「hot」でルーム 999 にプロキシサーバ経由で接続する場合のコマンド例./CHaserOnlineClient2024public001.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 同士で対戦させることはできません。
11

対戦ルームを利用して動作確認をしたい場合は手動クライアントと対戦しても良いでしょう。その場合は以下の公開（サンプル）ユーザを利用してください。

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

ユーザＩＤ
cool01 ~ cool99
hot01 ~ hot99
hand01 ~ hand99

パスワード
cool
hot
hand

★参考動画
オンラインクライアント実行_サーバ画面表示：
https://www.youtube.com/watch?v=ii7GOvnrnco④巡回ユーザ（ＣＰＵ）との対戦
巡回ユーザは常にどこかのルームを巡回し、対戦相手を待っています。ユーザが接続すると、ユーザ先攻、巡回ユーザ後攻で対戦が始まります。ルームによってＭＡＰも異なるので、色々なルームで対戦してみましょう。

12

⑤対戦中のＭＡＰ確認
リンク集のマップ→ユーザ認証と進む。
対戦中だけ、サーバのＭＡＰ画面を見ることが出来ます。クライアントプログラムが動作していない場合はエラー表示になってしまいます。対戦画面は自動的に更新されます。

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

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

⑦再度、競技を始めるには②から⑥の操作を繰り返します。

13

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

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

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

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

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

15

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

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

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

16

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

17

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

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

strcat(param, “wu”);

以上を踏まえたうえで…

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

18

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 の考え方）

19

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

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」という部分を目標のターゲットが持つ番号に変えてしまえばいいのです。 あれ、ジオードの番号は何番だった
かな．
．
．？
20

◆他のコマンドを使用する
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 が受け付けられるまでループ21

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

22

５今年度の仕様①
熱心にＨＰを覗いている方は気付いているかもしれませんが、新要素の追加や変更などがありました。それについて解説いたします。
【ストーリー】
やぁ、今回も引き続き遠隔・化石発掘マシーンを作ってもらいたい。
フィールドに散らばった化石やアイテムを探査・発掘して情報を集めていこうじゃないか。
昨年発見した「ジオ―メタル」の採掘を進めてもらったおかげで、一帯のジオ―メタルが回収できたようだ。今後はさらに深い層での探査をしてもらいたい。
センサーの反応から、ジオ―メタルはジオードの中にあることが分かっている。様々なコ
マンドを駆使して、ジオードを中心に探査を進めてくれ。
また、マシーンの不具合で今まで使っていたコマンドの一つに不具合が出てしまったようだ。だが安心してくれ、新しいコマンドを用意してある。今までより少し反動が大きくなってしまったみたいだから、注意して使ってくれ。
今年探査するエリアにも、化石やアイテムが幾重にも埋蔵されている「ジオレイヤー」が存在することが分かっている。
「ジオレイヤー」にはいくつかの法則があるようだ。調査してみてくれ。
このジオレイヤーを含む地層は地盤が脆くなっているので、ブラックスターで食い止める
ことによって探査を可能にしている。
（ブラックスターには微弱ではあるが特殊な磁力があり、お互いの位置関係を保つことができる。
）
しかし、このブラックスターの効果も長くは持たないらしい。地層が崩れて思うように探査ができなくなってしまうことがありそうだ。注意してくれ。
より深い層に辿り着いた結果、フィールドは大きな奈落によって囲まれているみたいだ。
化石採掘マシーンが落下しないように気をつけてくれ。また、簡易型ソナー装置は引き続き標準装備となっている。健闘を祈る。
C. C. 2024 白髭を蓄えた好奇心旺盛な考古学者

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

23

①マップ上のキャラクタ（アイテム）について得点(上に乗ったら)

一言

穴

－２０

既に通った道

１

ターゲット

５０

２

土

１０

３

アイテム

３０

４

ジオード

－１０００

５

化石１

１２５

６

化石２

１５０

７

化石３

１７５

８

化石４

２００

２０～２３

ワープ

５

９

アンモナイト１００

番号

キャラクタ名０

アイコン

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

硬い殻だ…

右・左・上・下へ
１０マスワープする

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

岩盤

－１０

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

１２

奈落

－３００

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

ブラックスター５

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

７０～７９

ジオ―メタル

２００～６００

一見、土のようにも見えるがとても貴重だぞ！

場外－５００

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

クライアント０

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

１０００~
８０００

※5 マスのワープ（３０～３３）については１０マスワープと同様です。
24

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

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

26

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

競技サーバ

クライアント２

競技サーバにユーザ認証

競技サーバにユーザ認証

ユーザ認証成功

ユーザ認証成功

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

ターン

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

ターン

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

27