2008年11月25日火曜日

スクリプトの話(18)〜3つ以上の状態判定

いやぁ、この連載も随分間が空いてしまいました。
今回含めて残りあと3回なんですけどね、
一気に行けそうなのに、なかなか時間がとれないでいます。
まぁ、のんびり最後までお付き合い下さい。

     *   *   *

さて、前回は状態の判定をするのに
「1」と「0」を使う話をしました。
人間が物事を判断する基準は
大抵が「OK」か「NG」
「Yes」か「No」
「いい」か「悪い」
つまりは「真」か「偽」かに還元できるもので、
それだからこそ、コンピュータはその人間の真似をして
「1」と「0」との組み合わせだけで複雑な処理をするわけですね。
「1」と「0」の間で旗を上げ下げして処理を分岐するのは
いかにもコンピュータ・プログラムらしいとも言えますし、
同時に人間的と言えるのかもしれません。

ところで、物事の判断というのは
必ずしも二者択一であるとは限りません。
楽しいお昼休み、今日の昼食はどこにするか
ラーメンか牛丼かカレーか
はたまたイタリアンかフレンチか……?
結局は毎日のように行っていると飽きてしまうので、
これらの店に順繰りに行くかもしれません。w

今年のバーニングライフの
僕のキャンプにあった巨大なメッセージボードは、
実は20秒おきに色が変わる設定ができます。
確か7色くらいを設定して
順番に変わるようにしてあったのですが、
そこでどんな処理をしているかと言うと。。。



話を簡単にするために
色を青、赤、黄の3色に限定します。
そして、タッチするとタイマーがスタートするとしましょうか。

integer i = 0;

default {
  state_entry(){
  }

  touch_start(integer total_number){
    llSetTimerEvent(20);
  }

  timer(){
    if (i=0){
      llSetColor(<0.0, 0.0, 1.0>, ALL_SIDES);
    } else if (i = 1){
      llSetColor(<1.0, 0.0, 0.0>, ALL_SIDES);
    } else if (i = 2){
      llSetColor(<1.0, 1.0, 0.0>, ALL_SIDES);
    }
    i++;
    if (i = 3) {
      i = 0;
    }
  }
}

実際にはもっと複雑ですが、
大体こんなイメージです。
大事なのは、変えて行きたい色の順番に数字をふっておいて、
変更するごとに1を足しているところです。
(そう。i++ は i = i + 1 のことですね。
こういう略した書き方をするとプログラムも
シンプルにすっきりとするので
じゃんじゃん使いましょう。w)
そして、順番の最後のところで
数字を振り出しの「0」に戻してあげてるところですね。
これでまた1...2...と数え上げて行き、
またまた最後の所で0に戻り、、、と繰り返していくわけです。

先に書いたお昼に何を食べるか、という件も、
これをカレンダーに仕込んでおけば、
昨日はカレーを食べたから今日はイタリアン、
なんて教えてくれるかもしれません。w

あ、実際にはこれの応用で、
僕の Lifebound Records 本店のメッセージボードが稼働しています。
仲間のブログの最新記事を順繰りに表示していますが、
記事と合わせてその方のアイコンに変わるようになっているのも
この仕掛けが使ってあるのです。



それでは今日はこの辺で。

No response to “スクリプトの話(18)〜3つ以上の状態判定”

Leave a Reply