Letsブラスク! ブラシスクリプトの意味を覚えよう!

おすすめ記事

おすすめ記事
 

みなさんこんにちは! Let’sブラスク!の第七弾。

今回のテーマは、

これまで扱ってきたプログラムの詳細な内容を理解しよう!

です。

さあ、初級編の仕上げです! 今回はちょっと長いかも(;´・ω・)。

関数とはなにか

皆さんは‘関数’(英:function)とは何か知っていますか? 中学生以上なら聞いたことがあるでしょう。

例えば、以下のような式思い出すのではないでしょうか。

a = f(x, y, p)
※ f(x, y, p) = 2(x + y) + p

この例だと、f(x, y, p)が関数ですね。「x、y、p」の値に応じて計算結果をaに代入するという、とてもシンプルなものです。

数学の中で関数と聞くと、計算しかできないようなイメージを持ってしまいがちです。しかし、プログラミングの中では、関数はもっとすごいものです。

数学でいう関数とは違い、ブラシスクリプト界の関数はすごい!

Let’sブラスク!の第一弾で、以下のように解説したことを覚えていますか?

ポイント
ブラシスクリプトの中身のイメージ

  1. ペイントソフトが、私(ブラシスクリプト)に描画しろと命令してきました。
  2. しょうがないので、私はパラメータの値を取得しました。
  3. めんどうくさいけど、私はその値をつかって、円を描きました。

ここでいう、「私」と解説しているものの正体が、実は「main」関数です

そう、ブラシスクリプト界でいう「関数」は、かなりすごいものです。

ポイント
ブラシスクリプトにおける関数がすごい理由!

  1. 数値の計算ができる
  2. それだけじゃなく、点を描いたり、丸を描いたりいろいろできる!
  3. それだけじゃなく、関数の中から別の関数を呼び出せる!
  4. しかもいろいろなことを一気に続けて行える!

まず、数値の計算もできます。

前回の経験で「x + 1」などと書きましたよね? このような計算ももちろんできます。

それに、前回つくったブラシを使えば、ペンで触れたところに点や罰印(×)が描かれましたよね。

要するに計算以外の、絵を描くことも可能だと理解できるはずです。むしろ、ブラシスクリプトはそれ――計算結果をもとに絵を描くこと――が目的ですよね!

関数のすごさこそが、ブラシスクリプトをつくる理由である

ブラシスクリプトの関数のすごさは、それだけではありません。

「計算」や「画面に絵を描くようなこと」を、「連続して、一気におこなえる」という素晴らしい特徴があります。

そう。

それこそが

自分でブラシスクリプトをつくる理由

です。

mdiappファミリーでは、「画像を簡単にブラシにすること」ができますよね。

しかし、画像によるブラシは「計算」を間に挟むことができません。それに、いろいろなことを一気におこなうこともできません。

だからこそ、「画像をつかったブラシと異なり、自由自在なブラシをつくれる」わけです。

ブラシスクリプトには必ず一つのmain関数が必要

さて、関数についての前提知識を得たあなたなら、あとは実際に中身を見ていくだけで理解できるはずです。駆け足で解説していきます!

まず、ブラシスクリプトには

必ず一つのmain関数が必要

だということを覚えてください。

ブラシスクリプトはLuaスクリプトだと解説したことを覚えていますか? 実は、このLuaスクリプトは、一部で英語の単語をつかいます。

例えば、

関数は英語で「function(ファンクション)」といいますよね。そして、「終了」という言葉は、英語で「end(エンド)」といいます。さらに中心という意味の「メイン」という言葉も英語の「main」がもとになっています。

これらの情報を踏まえて、以下の内容をみてください。


function main(x, y, p)
  :
end

これを次のように日本語に置き換えれば分かりやすいですよね?

ブラシスクリプトの中身を理解する第一歩としては、

英語の単語を日本語に置き換えて考えること

です。

関数 メイン(x, y, p)

関数定義の終了

ブラシスクリプト専用の関数は「bs_」から始まる

さて、先頭の1行と最終行の1行が、関数メインを定義していることを理解できたことでしょう。あとは、残りの2行を理解すれば終わりです。

その一行がbs_pixel_set(~)という関数です。

このような

先頭が「bs_」で始まるものは、ブラシスクリプトにおいて重要

な意味を持っています。

そもそもみなさんはこれまでの経験を通して、「bs_pixel_set(~)」の、「開きカッコから閉じカッコ」の間にある「~」の部分を変更することで、点を描く色が変わったり、位置をずらすことができることを理解しているはずです。

では、なぜそんなことができたのでしょうか。それは「bs_pixel_set(~)」が点を描くための関数だからであり、カッコの中身が、「x, y, r, g, b, a」という並びで決まっているからなのです。

例えば、「xとy」は点を描く位置を指定します。ですのでこれを変更すると点の描かれる位置がかわります。同様に、そのほかの意味は以下の通りです。

ポイント
bs_pixel_set(x, y, r, g, b, a)関数の意味

  • x = 点を描くX座標
  • y = 点を描くY座標
  • r = 点を描く際の、赤色成分の強さ(0~255で指定)
  • g = 点を描く際の、緑色成分の強さ(0~255で指定)
  • b = 点を描く際の、青色成分の強さ(0~255で指定)
  • b = 点を描く際の、不透明度の高さ(0~255で指定)

要するに、「bs_pixel_set(x, y, 0, 0, 0, 255)」と書くことで、画面にブラシで描いている位置(x, y)に、「赤色成分が0、緑色成分が0、青色成分が0、不透明度が255」で、「要するに黒色」で点を描くわけです。

main関数の最後のreturn 1

では最後に、残りの一行をみてください。return 1という行が残っていますよね。

しかし、これはとくに難しいことはなく、

main関数の終わりにあるendの直前には「return 1」と書くことが決まっているから

という理由でしかありません。

「return」とは日本語の直訳で「戻る」という意味で、関数について更なる理解をすすめる上では、とても重要な意味があります。

しかし、まずは「ルールとして決まっている」という認識で止めておくことが、大切です。詳しい理由は中級編で触れていきます。

最後に

初級編の「Let’sブラスク!」は、次で最後になりました。

今回は若干説明が長くなりましたが、それでも難しいことはなかったはずです。

次回でこれまでのポイントをおさらいしましょう! ぜひとも連載の続きは、以下のリンクからご覧ください!

↓ 次回の内容はこちらから ↓

Letsブラスク! ブラシスクリプトの基礎のおさらいをしよう!
みなさんこんにちは! Let'sブラスク!の第八弾。初級編の総まとめです! わからないことがあれば、それぞれの記事を再度読み直してくださいね!

↓ Let’sブラスク! の目次はこちらから ↓

Letsブラスク! オリジナルのブラシをつくろう!
みなさんこんにちは! 今回から連載を始める「Let's try Brush Script!」。‘mdiappファミリー’(解説)でつかえるオリジナルブラシの作り方をていねいに解説する講座です!堅苦しい挨拶はやめて、あなたもさぁ! Let'sブラスク!コンテンツトップ ※ 現状は未定の内容を含みます。Let'sブラスク! 初級編 - 基礎を経験を通して学ぶブラシスクリプトって何? ブラシスクリプトをつかってみよう! ブラシスクリ...