このlessonでのポイント:
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番が,相手ゴールにシュートすると思います.
プログラムリスト:
プログラム参考: