RPGツクール技術部門

RPGツクールで学ぶjavascript その4〜関数編〜

2019/02/05

こんにちは!yatsureです。



関数とは

早速ですが、早い話がコモンイベントです♨︎
どういうことか、というとですね。
ツクールでもそうですが、何度も使う処理、というものがシステムを組んでいると出てきます。
その何度も使う処理を使う所全部に処理全部を書くんじゃなくて、一箇所に処理内容を書いて、使う所でそれを呼び出す、という仕組みです。
わかりづらい♨︎
コモンイベントの公式説明で、よく宿屋が出てきますね。
僕はあの説明を読んで、
「いや宿屋によって宿代が違うんだから同じに出来ねーだろ意味わかんねーわカス」
と思った記憶がありますが、それは当時の僕がカスであったと言わざるを得ません。
あれに関しては、今思えば宿代をレベルとかで条件分岐で変更する様な宿屋にすれば良かっただけなんですよね。

脱線しましたが、関数について意味不明な方は先にコモンイベントについての記事を読んで頂いた方が早いかもしれません。
過去の私が素晴らしい記事を書いていたので、ぜひ参考にして下さい(°∀°){自画自賛が止まらねーぜ!

関数の書き方

function kansu() {
  処理内容記述;
}

kansuという関数を作りましたが、変数と同じで関数名も好きな名前がつけられます。
ただし、変数の名前と被らない様にして下さい。
この関数を呼び出す時は、

kansu();

と書けば、その処理内容が実行されます。
これの何が便利なのか、何ですが、その前に、こんな書き方もできます

function kansu(hensu) {
  hensu *= 2;
  return hensu;
}

引数という存在について短めに説明を。

上記で書いたhensuは、その関数の中だけで使われる、即席変数だと思って下さい。
つまり、上記の関数は、使うときは

kansu(2);

って感じで書いただけでは何も起こりません♨︎
正しくは

var nibai = kansu(2);

こうですね。勘の良い方は想像つくと思いますが、問題です。

console.log(nibai);

としたら、なにが出力されると思いますか?

はい、4ですね。
内容としては、hensuとなっている所に2を入れました。すなわちhensu = 2 ということです。
そうすると、中で掛け算が2で行われてhensuが2倍になります。
そしてこのreturnという記述ですが、これは値を返す、という聞きなれない処理になります。
おもに関数内に使われるんですが、まぁこのまんまで、例えば

function kansu(hensu){
  hensu *= 2;
}

としても、

var nibai = kansu(2);

で、nibaiに4が入ることはありません。多分エラーになります。
もっと言えば、

funciton kansu(hensu){
  hensu *= 2;
  return 10;
}

という処理内容であれば、hensuの部分に何を入れても10が返っているので

var nibai = kansu(2);

とすると、nibaiは10になります。

関数をスクリプトで活用する

と言っても、イベントのスクリプトって文字数限られてるじゃないですか。
関数使う様な処理書けないんですよね♨︎

なので、私は自分で作った処理プラグインとして読み込ませて、イベントのスクリプトでその関数を呼び出す、と言った事を平然とやっていますw
yatsurePlugin.jsみたいなファイルを作成して、その中に合成システムの関数を作って、合成イベント内で、例えば
変数1のactor_idと変数2のactor_idを組み合わせると何が生まれてくるのかを判定する処理の関数
などを呼び出して使っています。
例としては

function gousei(act_id1, act_id2) {
  合成後のactor_id判定処理
  return gouseigo_id;
}

みたいな感じのイメージです。
これ、めっちゃ未来を感じませんか?w
これを駆使して出来上がったのが現在作成中(デモプレイ版完成)のオンラインゲームです!

最後に宣伝を混ぜてみました。

さて、いかがでしょうか。プログラミングの事が、すこーしだけご理解頂けましたか?
この辺りさえわかっていれば、大体の処理は作れますよ。大体ですけどね。
まぁ、私は能力が低いのでちゃんとしたものが作れないのですが、そう言えばスロットも作りたいですね。
いや、前に目押しスロットは作ったんですが、そうじゃなくてポケモンみたいな、なんかスロット回した瞬間に当たり判定が決まってて、子役フィーバー突入とか、そういうのも表現したいですね。

と、いう事で、プログラミング講座でした!是非色々とツクールで遊んでみて下さい!

20190205追記

RPGツクールの変数やコモンイベントを使えるようになるため〜javascript入門として、問題集&模範解答集を作りました!

RPGツクールMV中級〜上級問題&解答集(ツクールMVプロジェクトデータ)

DLsite様 商品ページ

FANZA(旧DMM)様 商品ページ

模範解答は、イベントとしてがっつり組んでありますので、【シンボルエンカウント】とか【畑】は、そのままコピペで使えると思います!

是非ご活用ください!

では、また明日とか!!

-RPGツクール技術部門