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 講座 リンク
この記事へのトラックバックURL
http://jvn.slmame.com/t147695