ソラマメブログ

2008年02月20日

【講座】誰でもできるLSL 変な数


LSL 講座 リンク

こんにちは。
風邪がなおりつつある jvnです。


はじめに



今日もサンプルソースを変更します。。。
予習している人、ごめんなさい。
でも、その予習は無駄じゃない!


string MESSAGE = "Jvn love"; // ①

default
{
touch_start(integer num)
{
llSay(0,MESSAGE); // ②
MESSAGE = MESSAGE + " more love"; // ③
}
}



復習



ソースの流れがわからない人は 前回の講習をもう一度読んでください。

まず、○○ というステートに入るんでしたね。
それから イベントが起きると イベントの中の関数が実行されるんですよね。

こんかいは touch_start というイベントをつかっています、

touch_start イベント と llSay関数 の意味は自分で調べましょう。
簡単です 上のサンプルソースをクリックすればわかりますね?


変数




変な数



前回学んだステートの前に、変な行があります。①
llSay関数の引数(ひきすう)に変な値を渡しています。②

これはいったいなんでしょう。

こいつは変な数だから 変数といいます。
嘘です。
変数という名前は本当ですが、変な数だから というのは嘘です。
数学ででてきた x とか y と同じものです。

変数とは プログラムの実行中に変わる値のことです。
変値にしたほうがわかりやすいのに、と思いますが
変数と呼ぶことになっているので、変数と呼びましょう。


変数の宣言



変数を使うときは、 変数をこの名前で使うよ という宣言を書きます。①
ここでは string という型の MESSAGE という変数を使うよ ということを宣言しています。
LSLでは default ステートの前に書くことになっています。

おや
型 また新しい言葉が出てきました。
型ってなんでしょう。

llSay 関数をクリックしてみてください。
llSay(integer channel, string text)
なんて出てきますね。

この太字の部分が型です。

integer は整数をここに入れる、という意味です。
string は文字をここに入れる、という意味です。

channel と text は引数の意味をわかりやすくするための名前です。
ここは別に (integer a, string b) でもいいんですが、こういう名前のほうがわかりやすいですよね?

冒頭の宣言では MESSAGE と名づけていますが、この名前も 自由です。
できるだけ役割がはっきりわかる名前をつけるようにしましょう。


プログラムに出てくる変数は 方程式に出てくる変数のように いろいろなものが入ります。
整数、少数、文字、ベクトル値、回転値。。。
なので、この変数には どういう 型の値が入るか、というのを明確にする仕組みになっています。

この仕組みのおかげで、整数がほしいところに ”今日はいい日だった” なんて文字をいれるとちゃんとエラーを教えてくれます。

しばりを多くすることで、予想外のエラーを防ぐのがプログラムの考え方です。
なんだか窮屈に感じられるかもしれませんが、
覚えてくると、作法が決まっているのはわりと心地よいものです。


今日、覚える言葉は次の2つです。

変数


セットで覚えましょう。

変数ってなに?
型ってなに?

この質問に答えられるようになるまで、
ここまでの文章を読み直してください。


if( 答えられない質問がある ){
jump First;
}


あ、↑このソースはまだ気にしないでいいですw


変数に値を入れる



変数を宣言しただけでは、実際の値として使えません。
変数の中に値を入れなければいけません。

今回のサンプルソースで値を入れているのは、
①と③ のところです。

① では
文字の MESSAGE という変数を宣言するのと同時に "Jvn love" をセットしています。
宣言するときに 値を入れなくても問題はありません。


string MESSAGE;


これでも十分です。


③ はちょっとわかりにくいです。
MESSAGE に MESSAGE + "love " をセットしています。
これは "Jvn love more love" になります。
つけたしてるんですね。

文字の付け足しは

MESSAGE += "love "

ともかけます。
覚えているとちょっとかっこいい使い方です。

タッチというイベントが起こるたびに

  • llSay が実行されて

  • MESSAGE に " more love" が付け足される


以上、それだけです。


変数の値を読む



変数の値を関数に渡すと
関数は実行されます。


llSay(0,MESSAGE);


1回目はこう書いたのと同じ結果になります。

llSay(0,"Jvn love");


2回目はこう書いたのと同じ結果になります。

llSay(0,"Jvn love more love");


このように、変化する値をプログラムに書くには
変数は便利ですね。
変数 変な数って言ってごめんよ。お前はいいやつだ。


実行結果はどうなる?



では、実行してみましょう。
スクリプトをプリムに入れて タッチしてください。
もう一度タッチしてください。
もう一度タッチしてください。

他の人がいないところでやるのがお勧めです。
日本中のサンドボックスでjvnへの愛がささやかれるわけですね。
にやにや

何が表示されましたか??
どうしてそのように表示されるか説明できますか??

愛をささやく相手の名前を、あなたのLover(もしくは想い人(もしくは自分))の名前にしてみましょう。
小さな声でささやくなら llSay を llWhisper にしてみましょう。
愛を叫ぶなら どうすればいいですか? IncSearch の出番です chat で検索してみましょう。


まとめ



今日は、変数と型を学びました。
integer、string 以外にも 型はありますが、おいおい説明しましょう。
functions や events を IncSearch して、引数の型に思いを馳せてみましょう。


次回予告



次回は IF と 型 integer を学びます。
前回、次回予告で出したサンプルを今度こそ使います。
タッチするたびに 回転のON/OFFが切り替わるスクリプトを勉強しましょう。


integer FG = TRUE;
default
{
touch_start(integer num){

if(FG)
{
llTargetOmega(<1,0,0>,PI,.5);
}else{
llTargetOmega(<1,0,0>,0,0);
}

FG = !FG;

}
}


毎回言ってますが、コードは
手を動かして、打つべし、打つべし、打つべし。
体で学びましょう^^

LSL 講座 リンク

タグ :LSL初級

この記事へのトラックバックURL

http://jvn.slmame.com/t147695