<English>
記述例
defcue defactionキューとアクションの定義を行う. エージェントに対してシナリオでパラメータの値を与えたい場合はin,エージェントが値を返す場合はoutを指定する. (defcue ?receive_selection (:selection in)) (defcue ?receive_text (:text out)) (defaction gesture (:animation in)) |
defagentエージェントの定義を行う.
(defagent Merlin
:scenario scenario_merlin
:location '(20 40)
:shape '("Merlin.acs"))
|
defscenario エージェントに与えるシナリオの記述を行う.シナリオ内の局所変数はletで定義できる. (defscenario scenario_merlin (&pattern ($x #f) &aux (time #f))
(introduction
(#t
(!fly :to_coordinate '(50 300))
(!speak :sentence "私はマーリンです.")
(!speak :sentence "読売新聞に行きます.")
(!display :url "http://www.yomiuri.co.jp")
(!speak :sentence "あなたは今何に興味,関心がありますか.")
(!request_selection :selection_list '("アメリカ同時多発テロ"
"World Cup2002"
"その他"))
(go asking_question)) |
guard付きコマンド複数のキューを平行観測するためのコマンドとして, guard付きコマンドがある. guard節により並べられた複数のキューは,エージェントにより平行観測される.そして,エージェントは成立するキューを1つ選び,その後に続くアクションを実行する。 (asking_question
((?receive_selection :selection 0)
(!display :url "http://www.yomiuri.co.jp/attack/index.htm")
(!speak :sentence "アメリカのアフガニスタンへの攻撃について賛成ですか
|
パターン変数キューでの観測結果を変数に代入する際はパターン変数を用いる.パターン変数は$ で始まる変数である. (About_WorldCup
((?receive_text :text $x)
(cond
((all-keywords? '("フランス") $x)
(!speak :sentence "やはり強いですよね.私もフランスだと思います."))
((all-keywords? '("ブラジル") $x)
(!speak :sentence "予戦は苦戦していたみたいですよ."))
((all-keywords? '("イタリア") $x)
(!speak :sentence "誰が好きですか.")
(!request_text :sentence "ここに入力してください.")
(go About_Italian_Player))
((all-keywords? '("イギリス") $x)
(!speak :sentence "今オーウェンが絶好調ですよね."))
(else
(!speak :sentence (string-append "なぜ" $x "が優勝すると思いますか"))
(!request_text :sentence "ここに入力して下さい.")
(go About_another_country))))) |




