Lesson4:聴覚情報を解析する。

このlessonでのポイント:

サッカーサーバから受け取るhear情報は, の2種類があります.
今回は, について説明します.

hear情報の解析とkickコマンド(v4のソースプログラム):

Player1クラスをもとにPlayer2クラスを作成します.
Client.javaの行41で新たに作成するPlayerクラスのオブジェクトは,Player2.
(Player, Player1クラスを継承します.前回のlessonと同様にオーバライドしたメソッド,新規に作成したメソッドが今回説明するメソッドです.)

Player2プログラムの説明:

行9:
Player2クラスはPlayer1クラスを継承するクラス(subclass)を宣言します.

行13-25:
サッカーサーバはconfiguration file(デフォルトのファイル名=server.conf)にパラメータ情報をもっています.今回は,キックできる範囲(kick_able_area)を計算するために,version5.25のパラメータ値を設定しています.

行57-82:
hear情報のフォーマットとレフリーからのメッセージの一覧を表に示します.

レフリーからのメッセージは固定フォーマットで送られるから,StringTokenizerを使用しています.
一方,敵チームを含めたプレィヤからのメッセージは,何が区切り記号になっているかわかりません.
messgaeの部分をsubstringとして表示します.

行83-102:
視覚情報に含まれているオブジェクトを取り出します.
ObjectInfoクラスとGoalInfoクラスは親子関係です(ObjectInfo.java).
ObjectInfoクラスのインスタンスをGoalInfoクラスのインスタンスのキャストでは,subclassで追加されたフィールド情報をとることができません(narrowing).

行103-144:
レフリーからのhear情報を解析します.

行145-151:
自チームのボールか相手チームのボールかを判断します.その後の行動は,変数modeの値に従いますが,まだ,この例ではプログラムされていません.

行152-:
シュート可能ならシュート,その他の時はボールを探します.
 

プログラムの実行:

player番号1番が,相手ゴールにシュートすると思います.
 

プログラムリスト:

Client.java

Player.java

ObjectInfo.java

Player1.java

Player2.java

プログラム参考: