#author("2023-11-11T07:29:08+09:00","default:post","post") ---- #contents ---- ~ *「単語の追加」を使った例。解説つき [#q4857a41] 「特定のトークを聞いた後は、自己紹介トークが増える」というケースを例にとった解説です。 //[[引用元:https://yagi.hateblo.jp/entries/2003/09/23#p2]] ※記事消失 [[引用元:http://d.hatena.ne.jp/kusigahama/20030923#p2]] まず、自己紹介トークのそれぞれに名前を付けます。 *自己紹介A :15才です。 *自己紹介B :バナナが好きです。 *自己紹介C :実は河童を見たことがあります。 AとBは最初から喋る自己紹介で、Cは特定のトークを見たあとに追加される、ということにします。 次に単語群を定義します。 @自己紹介バリエーション 自己紹介A 自己紹介B とりあえずAとBだけを記述しておきます。 これをどう使うかというと、 *自己紹介 ((自己紹介バリエーション)) こんな感じ。 カッコが二重になってます。 まず、内側のカッコ(自己紹介バリエーション)が実行されます。 さっき書いた単語群@自己紹介バリエーションから、自己紹介Aまたは自己紹介Bのどちらかが選ばれます。 内側のカッコは置き換えられ、外側のカッコが残るので(自己紹介A)または(自己紹介B)のいずれかの状態になります。 今度は外側カッコが実行されます。(自己紹介A)であれば、*自己紹介Aの内容に置き換えられるわけです。 で、結果として*自己紹介は「15才です。」または「バナナが好きです。」のいずれかになります。 つまり、単語群@自己紹介バリエーションにトークの名前を設定しておき、トークを間接的に選ぶ形にしてあるわけです。 ここまではOK? さて、今度はここに自己紹介Cを増やします。 下のトークが、自己紹介Cを喋るようになるきっかけであるとします。 * :かっぱっぱ。 下のように書き加えます。 * :かっぱっぱ。 (単語の追加、自己紹介バリエーション、自己紹介C) 単語の追加は、単語群に新しい単語を追加する命令です。 この例だと、単語群@自己紹介バリエーションに、新しい単語自己紹介Cが追加されます。 つまり、このトークを読んだあとは、 @自己紹介バリエーション 自己紹介A 自己紹介B 自己紹介C こういう状態になってるわけです(イメージ的に)。 この状態で、さきほどの*自己紹介を実行すると、自己紹介トークが3パターンに増えてるわけです。 いかがなもんでしょ。 以下補足。 -単語の記憶はちゃんと保存されます。オリジナルの辞書を書き換えるのではなく、セーブデータの方に書き加わってます。 -「単語の追加」は何回も実行しても重複登録はされません。よって確率が偏ることもないです。