|
<< Topに戻る |
< いろんな対応を考えよう リンク > |
|
では、ボットにさいころを振らせてみましょう。「シャンさいころ」
といわれたらさいころを振るようにしてみました。
「 rand 」関数を使った初歩的なものですが、
新しいことが出てくるので説明します。それではサンプルを見てみましょう。 |
/Function
{
;メイン ==================================================
/main
{
/if ( $ismatch( "$msg" , "*おはよ*" ) ==1 ) /morning
/if ( $ismatch( "$msg" , "*こんにち*" ) ==1 ) /afternoon
/if ( $ismatch( "$msg" , "*こんばん*" ) ==1 ) /evening
/if ( $ismatch( "$msg" , "*さいころ*" ) ==1 ) /xi
/if ( $ismatch( "$msg" , "*サイコロ*" ) ==1 ) /xi
/if ( $rand( 1, 100 ) <= 10 ) {
/notice $chan "$nick $+ さん、呼びましたかぁ? |
|
今までと同じように、変更、または参考になる部分だけ抽出してあるので、 書いていないからといって、今まで書いた関数を消す必要はありません。 (むしろ、消してはいけません。) 「 main 」に追加変更を加えました。「 さいころ 」か「 サイコロ 」という言葉が メッセージの中に含まれていたら「 xi 」関数に飛ぶように記述しました。 では、「 xi 」関数について説明していきましょう。 はじめに 「 rand 」関数で発生した値を「 ransu_xi 」という変数に入れています。 ここで初めて変数という言葉が出てきました。 変数とは、文字列(数値)を保存しておける入れ物です。 「 % 」をつけることにより変数とみなされます。つまりここでは、 「 ransu_xi 」という名前の変数に、「 rand 」で発生させた値を、 一時保存させているのです。 次の行は表示です。実際に実行させてみてどのようになるか確認して見て下さい。 「 rand 」関数の中に書く値を変更させることにより、 色々な数を出させることが出来ます。 |
|
さて、ここらで面白いものを作ってみましょう。「〜さんの〜は〜%です!」
と表示するものです。たとえば、「シャン% イケイケ度 スィン」と
入力すると、「スィンさんのイケイケ度は64%ですね。」と返してきます。
ややこしい部分が出てくるので、ひとつずつ順を追って説明していきます。
まず、サンプルを見てください。 |
/Function
{
;メイン ==================================================
/main
{
/if ( $ismatch( "$msg" , "*おはよ*" ) ==1 ) /morning
/if ( $ismatch( "$msg" , "*こんにち*" ) ==1 ) /afternoon
/if ( $ismatch( "$msg" , "*こんばん*" ) ==1 ) /evening
/if ( $ismatch( "$msg" , "*さいころ*" ) ==1 ) /xi
/if ( $ismatch( "$msg" , "*サイコロ*" ) ==1 ) /xi
/if ( $ismatch( "$msg" , "*%*" ) ==1 ) /percent
/if ( $ismatch( "$msg" , "*%*" ) ==1 ) /percent
/if ( $rand( 1, 100 ) <= 10 ) {
/notice $chan "$nick $+ さん、呼びましたかぁ? |
|
「 main 」に追加変更を加えました。「 % 」か「 % 」が メッセージの中に含まれていたら「 percent 」関数に飛ぶように記述しました。 では、「 percent 」関数について詳しく説明していきましょう。 はじめの二行は、変数の初期化です。これは後から説明します。 次に、はじめて見る「 divide 」関数が出てきます。リファレンスを見てみると、 $divide( <var> , <delimiter> , <str> )varに設定された文字列をdelimiterで分割し て、%str1,%str2,,,に設定します。 %str0には個 数が入ります。""(NULL)は無視する。 と書かれてあります。つまり今回のサンプルでは、 メッセージを半角スペース(「 " " 」は半角スペースを表している)で区切って、 区切ったものを「 word 」といった変数に入れています。例をあげてみます。 シャン% イケイケ度 スィンこう発言すると、それぞれの値はこうなっています。 $msg = "シャン% イケイケ度 スィン" word1 = "シャン%" word2 = "イケイケ度" word3 = "スィン" word0 = "3"「 $msg 」は、そのまま発言が入りますね。そのメッセージを半角スペースで 区切るように指定したので、分割されたものがそれぞれ「 %word1, %word2, %word3 」 という変数に左から順番に入ります。数字は変数を分類するものとして 1から順番につけられていきます。そして、分割した数が「 %word0 」 に入るのです。「 $divide 」はよく使用することになると思うので、 ここでしっかりと押さえておいてください。 これで、表示のための準備がそろいました。 しかしここでチェックを一つ設けて有ります。「 %word0 」の値が2以下なら、 つまり、「シャン%」と発言されたが、「〜〜度」という表現がない場合や、 半角スペースで区切っていない場合などに、エラーメッセージを表示させています。 このチェックに合格したなら、次の 「 %ransu_do = $rand( -100, 100 ) 」 が実行されます。これはもう分かりますね?-100〜100までの乱数を発生させ、 「 %ransu_do 」にいれています。 次が表示です。これでおしまいですが、ちゃんと表示するか確認してくださいね。 ところで、初期化の部分を説明していなかったので説明します。 このサンプルのチェックは「 %word2 」が2以上なら実行するようになっています。 つまり「シャン% イケイケ度」と、第三項目を入れなくても実行するように してあるのです。その場合のために、初期化の部分で対応しています。 %word0 = 0 %word3 = $nick「 $divide 」を使うときは注意してください。初期化を怠ると、 思いもよらない誤作動を起こしたりします。 念の為に「 %word0 」に0を入れています。 「 %word3 = $nick 」によって、まずニックを取得しています。 これが、第三項目が入力されなかった時の対策になっているのです。 理解できたでしょうか?ちょっと自分の文章が心配です。 |
|
<< Topに戻る |
< いろんな対応を考えよう リンク > |