【制作実習】Node.jsでゲームサーバーを構築する。その3【訂正あり】

今日も引き続き、コールアンドマジックに通信対戦を実装するための、テストプログラムを作成中。

画像は対戦バトル中のレイアウトです。

画像リソースがあると、ゲームエンジンならすぐにこうやってモックアップを作れるのは助かるね。

もし、グラフィッカーが1人でもいれば、ずいぶん作業効率が上がるだろうなあということを実感する。

サーバー側の実装も少しずつ進めている。

Nodejsのモジュールシステムを活用すれば、結構すっきりクラス分けが出来ることがわかって安心した。

javascriptにはクラスの概念は無いけれども、下記のようにすれば、モジュールというクラスに似た単位でコードを分離できる。

クラスほどの機能はないものの、一応オブジェクト指向でプログラミングすることが出来そうだ。

たとえば、こんなモジュールのJSファイルを定義する。

【訂正】
以下のコードはオブジェクト指向でいうインスタンス化とは根本的に異なります。
node.jsのrequire()では、読込んだモジュールはキャッシュされており、その都度 new される訳ではありません。
どちらかというと、シングルトンのイメージに近い。
オブジェクト指向のためのクラス定義とインスタンス化については、次の記事を参照してください。
【訂正】Node.jsでオブジェクト指向のプログラミングについて訂正

// formManager モジュール
// POSTで送られたフォームデータを抜き出す。
// @param request HTTPリクエスト
// @param querystring クエリ操作モジュールのインスタンス
// @param callback コールバック
function readInput(request, querystring, callback)
{
	var data = "";
	
	request.on("data", function(chunk) {
		data += chunk;
	});
	
	request.on("end", function() {
		callback(querystring.parse(data));
	});
}
//【重要】この一行を入れることで外部から
// readInputをメンバメソッドのように呼び出せる。
exports.readInput = readInput;

これは下記のように使用することで、formManagerをオブジェクトのインスタンスのように扱っている。

// formManager モジュールの呼び出し
//【訂正】(同じモジュールが呼び出された場合、キャッシュされた同一モジュールの参照が返る)
var formManager = require("./formManager.js");

// formManager モジュールのメンバメソッド呼出
// 最後のパラメータはメソッドの参照
formManager.readInput(request, querystring, checkStatus);

…中略…

//コールバック用のメソッド
function checkStatus(query)
{
…中略…
}
4年前

コメントを残す

メールアドレスが公開されることはありません。