- 追加された行はこの色です。
- 削除された行はこの色です。
#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パターンに増えてるわけです。
いかがなもんでしょ。
以下補足。
-単語の記憶はちゃんと保存されます。オリジナルの辞書を書き換えるのではなく、セーブデータの方に書き加わってます。
-「単語の追加」は何回も実行しても重複登録はされません。よって確率が偏ることもないです。