さてみなさん。
今回は、ツクるのに役立ちそうな、プログラミングの基礎知識を語る会の第4回です。
■目次(予定)
【1】コンピュータの構成
【2】プログラムの構造
【3】変数と関数
【4】オブジェクト指向 (←今回)
【5】ブラウザの仕組み
■本編
【4】オブジェクト指向
今回解説するのは、RPGツクールMVの中では、出てこないモノです。
ですが、Javaスクリプトは、オブジェクト指向のプログラミング言語……っていう事なので、プラグインを作る際には、その恩恵を受けている……はずです。
プラグインを作ろうと思った人が、人真似で作って、動いた、ヤッター!……ってなっているけど、なんで動くのか分からない……みたいな状況の人向け……の記事になります。
さて、「オブジェクト指向」って何?……っていう話を少しします。
「関数」は処理を中心にプログラミングします。
「オブジェクト指向」では、「モノ」を中心にプログラミングする……という説明がされます。
例えば、よくある説明だと、「自動車」っていう「モノ」があります。
「自動車」には、「エンジン」や「ブレーキ」や「燃料」や「座席」や「ドア」のような「変数」があります。
さらに、「走る」「止まる」「人が乗る」「人が降りる」のような「処理」があります。
この「自動車」には、「トラック」「軽自動車」「タクシー」のような種類がありますが、「自動車」という点では、前述した「変数」や「処理」は、共通しています。
というわけで、「自動車」っていう共通のデータを「親」として、さらに細かい種類を「子」のデータとして作る事が出来ます。
「親」には無いデータを「子」に追加したり、データを上書きしたり出来ます。
例えば、「トラック」は「燃料」の種類が「ディーゼル」であったりしますし、「軽自動車」では「燃料」の量が少ない値になってたりします。
他にも、「タクシー」では「料金」っていうデータを追加するといった事が出来ます。
という事を踏まえて、RPGツクールMVのJavaスクリプト(プラグイン)を見てみましょう。
------------------------------
(function() {
var parameters = PluginManager.parameters('Krd_FloorDamage');
var floorDamage = Number(parameters['FloorDamage']);
Game_Actor.prototype.basicFloorDamage = function() {
if (isNaN(floorDamage)) {
return 10;
}
return floorDamage;
};
})();
------------------------------
↑これは、私が作成した、床ダメージの値を変更するプラグインです。
●最初の「function()」
これは、プラグインを作る時のお約束です。
「{ }」が、他にも出てきますが、範囲を指定する記述です。
●var
変数を宣言しています。
どちらも、このプラグインの中だけで使える変数です。
●Game_Actor
これが、「モノ」です。
オブジェクト指向では、「クラス」って呼ばれます。
●basicFloorDamage
これは、「処理(関数)」です。
オブジェクト指向では、「メソッド」って呼ばれます。
●Game_Actor.prototype.basicFloorDamage
同じ記述が、「rpg_objects.js」にもあります。
そこには、以下のように書かれています。
------------------------------
Game_Actor.prototype.basicFloorDamage = function() {
return 10;
};
------------------------------
というわけで、このプラグインは、「rpg_objects.js」のこの部分を上書きするというプラグインです。
※「10」を「50」とかに変えるだけでも良かったのですが、RPGツクールMVのプラグイン画面から変更出来るようにしているために、「parameters」っていうのを使っています。
RPGツクールMVの本体のJavaスクリプトに対して、値を変更するだけのプラグインは、こんな感じで、コピー&ペーストして、値を変えれば、プラグインの完成です。
※ちなみに、上の例では、同じものを上書きしてますが、「親子関係」にある「クラス」の場合、「クラス」の部分(上の例では「Game_Actor」の部分)を「子」に変える事で、「親」のデータを変えずに、「子」だけを変える事が出来ます。
(「子」に記述が無い場合、「親」と同じデータを持っています)
(「rpg_windows.js」は「親子関係」が分かりやすいので、興味のある方は見てください)
今回のポイントとしては……、
●「親子関係」にあるモノは、同じデータを持っている。
●「子」は「親」のデータを上書き出来る。
……っていうのが、ツクラー的には、ポイントです。
それでは~。
今回は、ツクるのに役立ちそうな、プログラミングの基礎知識を語る会の第4回です。
■目次(予定)
【1】コンピュータの構成
【2】プログラムの構造
【3】変数と関数
【4】オブジェクト指向 (←今回)
【5】ブラウザの仕組み
■本編
【4】オブジェクト指向
今回解説するのは、RPGツクールMVの中では、出てこないモノです。
ですが、Javaスクリプトは、オブジェクト指向のプログラミング言語……っていう事なので、プラグインを作る際には、その恩恵を受けている……はずです。
プラグインを作ろうと思った人が、人真似で作って、動いた、ヤッター!……ってなっているけど、なんで動くのか分からない……みたいな状況の人向け……の記事になります。
さて、「オブジェクト指向」って何?……っていう話を少しします。
「関数」は処理を中心にプログラミングします。
「オブジェクト指向」では、「モノ」を中心にプログラミングする……という説明がされます。
例えば、よくある説明だと、「自動車」っていう「モノ」があります。
「自動車」には、「エンジン」や「ブレーキ」や「燃料」や「座席」や「ドア」のような「変数」があります。
さらに、「走る」「止まる」「人が乗る」「人が降りる」のような「処理」があります。
この「自動車」には、「トラック」「軽自動車」「タクシー」のような種類がありますが、「自動車」という点では、前述した「変数」や「処理」は、共通しています。
というわけで、「自動車」っていう共通のデータを「親」として、さらに細かい種類を「子」のデータとして作る事が出来ます。
「親」には無いデータを「子」に追加したり、データを上書きしたり出来ます。
例えば、「トラック」は「燃料」の種類が「ディーゼル」であったりしますし、「軽自動車」では「燃料」の量が少ない値になってたりします。
他にも、「タクシー」では「料金」っていうデータを追加するといった事が出来ます。
という事を踏まえて、RPGツクールMVのJavaスクリプト(プラグイン)を見てみましょう。
------------------------------
(function() {
var parameters = PluginManager.parameters('Krd_FloorDamage');
var floorDamage = Number(parameters['FloorDamage']);
Game_Actor.prototype.basicFloorDamage = function() {
if (isNaN(floorDamage)) {
return 10;
}
return floorDamage;
};
})();
------------------------------
↑これは、私が作成した、床ダメージの値を変更するプラグインです。
●最初の「function()」
これは、プラグインを作る時のお約束です。
「{ }」が、他にも出てきますが、範囲を指定する記述です。
●var
変数を宣言しています。
どちらも、このプラグインの中だけで使える変数です。
●Game_Actor
これが、「モノ」です。
オブジェクト指向では、「クラス」って呼ばれます。
●basicFloorDamage
これは、「処理(関数)」です。
オブジェクト指向では、「メソッド」って呼ばれます。
●Game_Actor.prototype.basicFloorDamage
同じ記述が、「rpg_objects.js」にもあります。
そこには、以下のように書かれています。
------------------------------
Game_Actor.prototype.basicFloorDamage = function() {
return 10;
};
------------------------------
というわけで、このプラグインは、「rpg_objects.js」のこの部分を上書きするというプラグインです。
※「10」を「50」とかに変えるだけでも良かったのですが、RPGツクールMVのプラグイン画面から変更出来るようにしているために、「parameters」っていうのを使っています。
RPGツクールMVの本体のJavaスクリプトに対して、値を変更するだけのプラグインは、こんな感じで、コピー&ペーストして、値を変えれば、プラグインの完成です。
※ちなみに、上の例では、同じものを上書きしてますが、「親子関係」にある「クラス」の場合、「クラス」の部分(上の例では「Game_Actor」の部分)を「子」に変える事で、「親」のデータを変えずに、「子」だけを変える事が出来ます。
(「子」に記述が無い場合、「親」と同じデータを持っています)
(「rpg_windows.js」は「親子関係」が分かりやすいので、興味のある方は見てください)
今回のポイントとしては……、
●「親子関係」にあるモノは、同じデータを持っている。
●「子」は「親」のデータを上書き出来る。
……っていうのが、ツクラー的には、ポイントです。
それでは~。