サーバ側のプログラムserver.rbの各クラスついて説明する。
各クラスとメソッドの詳細な説明はプログラム中にコメントで書いてある。
なお、このプログラムでは、ゲームを1回行う度にサーバを起動する必要がある。また、1つのサーバで2人の対戦までしか扱えない。
Shipクラスは、艦を表すクラスである。各プレイヤーが持つ艦の状態(種類、位置、HP)を管理する。1つの艦につき1つのオブジェクトを作成する。
Clientクラスは、プレイヤーを表すクラスである。各プレイヤーを表し、Shipオブジェクトを連想配列で持つことで艦隊の情報を持つ。
艦の移動や攻撃された際の処理、攻撃可能範囲の計算など、複数の艦の情報が必要となる処理はここに書かれている。
Serverクラスは、Clientオブジェクト2つを配列で持つ。攻撃や行動後の状態の通知など両プレイヤーの情報が必要な処理がここに書かれている。
プレイヤーの行動が不正だった場合はそのプレイヤーを負けにする。
Reporterモジュールは、勝負の進行をログに吐き出すために必要なメソッドの集まりである。
その他、クラスを定義せずに直接書かれているメソッドは、ソケット通信の処理である。