カプセル化と隠ぺい

まず、始めにひとつ。

皆様の中ではてなブログを使うのが始めてでいらっしゃる方などは操作自体にも多少ご苦労されてることと思います。タグなどによる装飾テクなどは随時覚えていっていただければいいと思いますが、こういう共同で使うケースで便利な使い方を。

今日の記事のように一日に2つ以上見出しができる場合があり得るので、記事タイトルを日記のタイトルにせず、*[お名前] "記事タイトル"とするのが良さそうですね。過去の分はもう記事が増えることがないので直す必要はないですが、これからはなるべくそういう仕様でよろしくお願いします^^

あ、長くなってしまったのでカプセル化と隠ぺいについては次回!www


というのは嘘でここで語らせていただきます。

SRCイベントファイルの中身の大半の行はTalkコマンドに費やされると思いますが、ちょっと小洒落たことをやろうとするとTalk行の合間に処理の行を設けなければいけなくなり、見た目もこんがらかってきます。

Waitコマンドなど、Talkコマンドの流れの中にあったほうがわかりやすいものはそこに記述すべきかと思いますが、Info関数などを使ったりして、数行に渡ってデータをこねくりまわすようなものは極力どこか別の場所でやってもらうに越したことはないでしょう。

もし、その処理をする場所につけた名前が「GetArrayLength」「配列長」というようなものであれば「ああ、配列のの長さが返ってくるんだな」ということが推測でき、処理の中身をイチイチ気にする必要がなくなり、メインの処理を考えることに集中できます。

このまとめて隔離することを「カプセル化」といい、そのカプセル化したサブルーチンに渡す引数と戻り値さえわかれば中身の処理を気にしないでいいような作りにして複雑な部分を覆い隠すことを「隠ぺい」という…で間違いではないかな?

まあ自分の勉強のためにもここで自分が正しいと思う考えを書いて、間違いがあればどなたか識者の方に突っ込んでもらって成長できればいいかな、くらいの気負いで投下しときますね^^;

一個、例。

同じ組み合わせのパイロット同士の戦闘前イベントから、少し強引に一個カプセル化&隠ぺいされたサブルーチンを作ってみます。(SRCはソースを完全には隠せないので厳密には隠ぺいはできてないけど^^;)

攻撃 ショウ トッド:
攻撃 トッド ショウ:

Talk ショウ
トッド! 憎しみだけがパワーアップしてるぞ!!
Talk トッド
ショウ! パワーの違いを見せてやるぜ!!
End
ClearEvent "攻撃 ショウ トッド"
ClearEvent "攻撃 トッド ショウ"
Exit

ここで、ClearEventが同じパイロット同士の順序が変わっただけの違いで2度行われていることに着目すると、ClearEachEventsというような名前のサブルーチンを作って、

ClearEachEvents:
ClearEvent "$(Args(1)) $(Args(2)) $(Args(3))"
ClearEvent "$(Args(1)) $(Args(3)) $(Args(2))"
return

というような感じにして、今後同じ動作をさせたいときはClearEventを使わずさっき作ったサブルーチンを呼ぶようにすればその後同じ類の処理は永久に1行の記述で済むようになります。(動作未確認)

ClearEachEvents 攻撃 ショウ トッド

とさえ書けばOKに!しかも1番目の"攻撃"の部分を変えれば攻撃後イベントにでも何にでも使えるという。

引数を

ClearEachEvents "攻撃 ショウ トッド"

のように一つの文字列にまとめた場合にも動作するようにするにはClearEachEvents内で「引数が一つだったらLIndex()で分割」というような処理を設置しとけばOK!
こんな感じで^^