2016年11月21日 星期一

製作日誌--009

上週因為準備期中考,便自行暫停更新一周
最近在考慮是否要放棄用偽春菜製作人格
改用pyQt重寫一份偽AI桌面助理程式
個人覺得重寫對最後的完成度會有很大的幫助
但目前有兩個問題:

1. 不確定pyQt的功能是否符合我的需求。
2. 在Windows上安裝pyQt非常困難

第2點是我今天試了3個小時後的結論
因此,如果要轉用pyQt開發程式的話
會轉到Linux上做開發,但這樣程式是否可以在Windows運行就又是問題了
總之,近期的更新依然會在偽春菜上
也有可能在把原本設定的目標在偽春菜上完成後
再轉向自行設計程式

因為花了些時間嘗試安裝pyQt
今天的更新內容較少
但有補上新的功能

###啟動對話###

有鑑於前陣子的萬聖節
突然想到啟動對話應該也要與節日有關
於是新增了對特定節日的對話
目前有:
新年
情人節
萬聖節
聖誕節
之後會再新增節日與使用者的生日

###溝通###

今天最大的更新就是做好與人格溝通的雛形
以下簡單說明我的做法:

**溝通對象**
我希望使用者可以對Sakura端與Kero端分別進行對話
因此新增了兩個變數:talktosakura與talktokero
其值只會為1或0
當其中一個為1時,另一個必為0
而使用者的溝通對象便是變數為1的對象
可以藉由輸入對象的名字來切換溝通對象
(ex."小鳥"、"啾啾")

**溝通**
這個人格的對話只限於使用者呼叫的被動對話
因此我們只需要用到"OnCommunicate"事件
請看以下範例碼:

OnCommunicate
{
    if reference0 == "user" || reference0 == "User"
    {
        ReplyToUser //與User對話
    }
}
OnCommunicate事件中,我們需要用到reference0來判定與人格溝通的對象
偽春菜中支持與使用者和與其他人格的溝通
如果要和其他人格溝通
則將"user"更改為"人格本體側名字"即可
另外,"||"代表邏輯運算中"or"意思,只要其中一個運算元為真,則為真
而"&&"則代表"and"的意思,除了兩個運算元皆為真時為真,其他條件皆為假
如果要處理多重條件,且不需要用到巢狀結構時會使用到
接著我們來看看如何處理使用者輸入的訊息:

ReplyToUser
{
    //預設與本體側對話
    talktosakura = 1
    talktokero = 0
    if "你好" _in_ reference1
    {
        if talktosakura == 1
        {
            "\0\s[0]你好。\e"
        }
        else
        {
            "\1\s[10]你好啊。\e"
        }
    }
    elseif "小鳥" _in_ reference1
    {
         talktosakura = 1
         talktokero = 0
}
在這裡處理使用者輸入訊息的方式十分簡單
由於偽春菜會將輸入訊息當作字串傳入程式
因此我們只要檢查特定單詞是否出現在字串中
便可以讓人格做出回應
"_in_"在文中代表檢查左側的字串是否包含在右側字串中
另外範例的最後也示範了如果更改溝通對象
對Kero端溝通的方法也一樣,這裡便不再贅述

================================================================

今天只把上次的線稿描邊上底色而已
原本想說把圖趕完
但想想還是幫程式加點東西好了
預計下周可以完成這張圖
最晚下下周就可以把這張圖的動畫做完

2016/11/21

沒有留言:

張貼留言