Dear!くろうどぃあ!

このブログでは、私、くろうどの趣味に関する事を記述します。
当面は、「RPGツクールMV」をメインにします。

ツクるためのプログラミング概論【4】オブジェクト指向

2016-05-03 20:17:10 | RPGツクールMV
さてみなさん。

今回は、ツクるのに役立ちそうな、プログラミングの基礎知識を語る会の第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」は「親子関係」が分かりやすいので、興味のある方は見てください)


今回のポイントとしては……、

●「親子関係」にあるモノは、同じデータを持っている。
●「子」は「親」のデータを上書き出来る。

……っていうのが、ツクラー的には、ポイントです。


それでは~。

最新の画像もっと見る