Lingoを極める |
このページでは以下のことを解説しています
[Lingoの道]
random
put
go to 〜
では基本的なコマンドからマスターしていくことにしましょう |
さぁ、ここからはLingoについての解説をばりばりしてみようと思います。
でも、なぜLingoを使わないといけないの。めんどくさいし、難しそうだし、何も無理してやらなくてもいいんじゃないの?。私なんか簡単なスクリプトだけで十分満足しているのに……
うん、ムリにとは言わないけれど、勉強しておいて損はないと思うよ。それにshockwaveの世界をもっともっと広げてくれるマホウの呪文みたいなものだよ。Lingoってのはね。
じゃ、いったいLingoとやらを使って何ができるのかなぁ?それにLingoっていっぱい種類があるでしょ。何から覚えていったらいいのかを教えて下さい。
じゃぁまずはrandomを覚えてみましょうか。
randomっていわゆる「ランダム」って奴ですよね。これが一体なにになるんですか?
たとえば……あるムービーを考えて下さい。それはいつも同じ動きばかりしているんですよ。稟さんだったら、このムービーをどう思いますか?
それはつまらないと思いますね。やっぱり毎回変化があったほうが……あ、これって誘導尋問ですね。なるほど、何か変化をつけたりするときに使うのがこのコマンドrandomなんですね。
そうです。正解です!たとえばこのムービーを見て下さい。
へぇ、なかなかおもしろいですね(絵は下手だけど……)。で、これがrandomとどういう関係があるのですか?
これはですね、ボタンを押したときに乱数を発生させて、それによってフレームをジャンプさせているのですよ。
乱数?なんですかそれは?
あ、ごめん、でたらめの数といったほうがいいのかな。randomコマンドを使ってでたらめの数を発生させているのです。このムービーは全部で17種類のメッセージを用意しているんですけど、毎回どこに飛ぶのかわからないようになっています。randomっていうコマンドは以下のように使います。
random
[書式]
random(数字)……指定された数字の範囲で乱数を発生
つまり……簡単に言うと、サイコロの親戚みたいなやつなのかな?
そうですね。サイコロの場合はrandom(6)になりますね。今回は17個のメッセージを用意して、そのページにジャンプするように設定しますから、random(17)になりますね。
randomは(なんとか)理解しました。……けれども、それからどういう風に書いたらいいのかな?
それはマーカーを使っています。マーカーとは本の栞(しおり)みたいなもので、go to "マーカー名"と記述することで、その部分にジャンプすることができます。今回は1end,2end,3end.....17endと17個のマーカーをつけています。おかげでスコアが長々してしまいましたけどね。
じゃ、考えを整理してみると、まずボタンが押されると、どうなるの?
先ほど説明した「ずらすボタン」とpuppetsoundを利用して音を出す効果を実行します。で、その次にはrandomを実行します。
そうそう、そこ!そこんとこがよくわからないのよ……具体的にはどんな風に記述するのかがわからないの……
はいはい、わかりました。実際のスクリプトを見てみましょう。ハンドラyukueがそうです。
on yukue
put random(17) into n
go to n & "end"
end
はい、これだけです。
あれ?これだけなんですか?私はもっと長〜いものを予想していたんですけどね。わたしだったらこんな風に書いてしまいますね。
on yukue
if random(17)=1 then go to frame "1end"
if random(17)=2 then go to frame "2end"
if random(17)=3 then go to frame "3end"
中略……
if random(17)=17 then go to frame "17end"
end
ううむ、これでも確かに動きますけど、面倒くさいですね。それに処理に時間がかかりますね。たとえばrandom(17)が16とかだったら、if文の判定を16回も行わないといけませんよね。それは処理速度が低下します。それにif文をたくさん書くとつかれますよね。
じゃ、さっきの豪さんのスクリプトなんだけど、putっていうのが出てきましたよね。そこがわからないんですが……
putは非常に重要なコマンドですね。
put
[書式]
put A into B……AをBに代入
そうか、今回の場合はrandomで作った数を変数nに入れているんですね。なるほど、なるほど……。で、その次は?
ちょっとエレガントに書いてみましたけど、変数nの後に「&」を使ってフレーム名を設定しています。このように書くと便利ですよ。
おお、エレガント!私が書いたら20行以上かかるところを、わずか2行でまとめることができるんですね。ううむ、Lingoの奥は深い……