読者です 読者をやめる 読者になる 読者になる

ガレージ暮らしのトライタム

プログラムやツールの解説や技術を公開する場所

apricotモデル作成(その7)

Apricot

前回
traitam.hatenablog.com


今回は特定の時間や特定の日時にセリフを言わせるように加筆していきます。

ここでは主に、正規表現を取り扱うので理解されている場合はやっていることは前回より前と変わることはありません。では、始めていきましょう。

記述としては以下のようになります

    <!--サービス開始日ボイス-->
    <sequence name="Tick" state="\d{2,4}-04-23[\w\s]00:00:00">
      <sequence name="Samidare.ArmSwing" />
      <message>提督、今日は記念日ですね!<break/>素敵ですね!<break/>五月雨、いつもよりがんばっちゃいます!♪</message>
      <sequence name="Samidare.Say" />
    </sequence>

艦これのサービス開始時が4月23日だったので正規表現を用い、state内を書いていきます。

そもそも、正規表現とは。です。
だいたい「この文字があったら拾って処理にかける」とか「この文字はいらないから捨てる」みたいなかなり抽象的なシステムを書く時に使います。
今回、上記の記述だと「(何年でもよい)4月23日の(何時でもよい)タイミングで呼び出す」という形です。

正規表現は、書いてる私も現在勉強中なので多くの事が言えないですが、そんな感じだと思います。

また、シーケンスがTickですので、「今日は何日です」というタイミングで呼ばれます。

別の例を見てみます。

    <!--梅雨ボイス-->
    <sequence name="Tick" state="\d{2,4}-(05|06)-([0-2][1-9]|30|31)[\w\s]00:00:00">
      <message>梅雨の季節、五月雨、結構好きなんです。<break/>なんかこう…雨って良くないですか?ね♪</message>
      <sequence name="Samidare.Say" />
    </sequence>

state内が一気にごちゃっとしました。
これは「5,6月の01~29、もしくは、30日、もしくは31日のタイミングで呼び出す」という形です。
縦棒で、もしくは、orの表現ができます。日にちは2桁あるので[2桁目][1桁目]という記述になっています。これは時間でも同じような表現で記述ができます。
結構複雑なのですが、正規表現は結構大事な分野なので覚えておきたいですね。

無事に実装が終わると、Startシーケンスの後に期間内であれば以下のように喋ってくれます。
f:id:traitam:20170208105732p:plain

本日はこれでおしまいです。

それではみなさん、楽しい創作ライフを!

あ、そうだ。現段階から五月雨ちゃんモデルをGithubの方に上げました。
興味のある方はどうぞー。
github.com