最終更新日 2024-09-25

HD.version.SDK ~語句変化~

語句変化の概念

語句変化とは、不定な人物同士の会話メッセージを作成する際に、
「自分・相手」の呼称や、語尾変化等をサポートするAPIです。

後述のソース中の、第1人称武将番号, 第2人称武将番号 を、様々な武将で試し、
一体どのような概念なのか理解して使いましょう。

男性・女性、上司・部下、年寄と若君主、様々な職業など、考慮されたメッセージへと語句が変化します。

使用例①

ほとんどの使用シーンは、「On_噴出メッセージ直前
にて、すりかえるメッセージを作る際に利用されます。

デフォルトの会見のメッセージを、語句変化を伴ってすり替える
String^ 天翔記クラス::On_噴出メッセージ直前(String^ 元メッセージ, 噴出メッセージパラメタ型^ パラメタ) {

  using namespace System::Text::RegularExpressions;

  int 第1人称_武将番号 = パラメタ->第1人称_武将番号;
  int 第2人称_武将番号 = パラメタ->第2人称_武将番号;

  if (0 <= 第1人称_武将番号 && 第1人称_武将番号 < 武将->配列->Count &&
    0 <= 第2人称_武将番号 && 第2人称_武将番号 < 武将->配列->Count) {

    // 会見のメッセージのひとつ
    if (Regex::Match(元メッセージ, "^何をするか|^はて…\xAこれから")->Success) {
      int rnd = rand() % 3;
      if (rnd == 0) {
        String^ mes = %相手%(第1人称_武将番号, 第2人称_武将番号) + "、商人に\x0A"
          "米を売" + %りましょう%(第1人称_武将番号, 第2人称_武将番号);

        return mes;
      }
      else if (rnd == 1) {
        String^ mes = %ははは%(第1人称_武将番号, 第2人称_武将番号) + "、" + %相手%(第1人称_武将番号, 第2人称_武将番号) + "\x0A"
          "一度の失敗では\x0A"
          "懲りぬよう" + %です%(第1人称_武将番号, 第2人称_武将番号) + %な(2)%(第1人称_武将番号, 第2人称_武将番号);

        return mes;
      }
      else if (rnd == 2) {

        String^ mes = "おのれ、" + %罵倒相手%(第1人称_武将番号, 第2人称_武将番号) +"\x0A"
          "覚えておれ!";

        return mes;
      }
    }

  }

  return "";
}

第1人称と第2人称の「性格」「口調」「人間関係」などを全て含んで、
言葉遣いが変化していることが確認できるかと思います。
相手が居ないような独り言に近いメッセージをしゃべらせたい場合は、
第2人称として、第1人称と同じ値を渡すと、
概ねは妥当な語句変化になるハズです。

その他

語句変化関連には非常に多数のメソッドがあります。
「語句変化.h」を参照してみてください。

また、語句変化については、「どういった関係性」で「どういう変化なのか?」の
具体的な実装の確認をしたい場合などもあるかと思います。
そういった裏方事情を知りたい場合は、「語句変化.cpp」を見て確認してください。

語句変化について、主な解説は以上となります。