最終更新日 2024-09-25

HD.version.SDK ~国~

国の概念

国とは、日本国の意味ではなく、「大和、丹波、北信濃、備中」などといった、地域のことです。
天翔記上では、「国」という言葉で統一されているため、SDK上でも国としています。

国と一言で言っても3つの概念で構成されます。

ここでは、よく利用するパターンをピックアップして解説します。

使用例①

国オブジェクトの使い方は主に2つしかありません。
ひとつは、国に含まれている城のリストを求める方法です。
国→城を求めるものとなります。

国に所属する城を求める
void 天翔記クラス::On_シナリオ大名選択直前(String^ シナリオファイル名) {

  // 全ての国の名前や、その国に所属している城名を出す
  for each (auto k in 国->配列) {
    デバッグ出力 << "---------------------------------" << endl;
    デバッグ出力 << k->国名 << endl;
    auto clist = k->所属城番号リスト;
    for each (int iCastleID in clist) {
      デバッグ出力 << 城->配列[iCastleID]->城名称 << endl;
    }
  }

}

使用例②

SDKでは、全ての国番号が列挙として定義済みです。

指定の国に所属する城を求める
void 天翔記クラス::On_シナリオ大名選択直前(String^ シナリオファイル名) {

  int iKuniID = 列挙::国::国番号::越後;
  デバッグ出力 << "---------------------------------" << endl;
  デバッグ出力 << 国->配列[iKuniID]->国名 << endl;
  auto clist = 国->配列[iKuniID]->所属城番号リスト;
  for each (int iCastleID in clist) {
    デバッグ出力 << 城->配列[iCastleID]->城名称 << endl;
  }

}

使用例③

もう一つは、逆の流れで城→国を求めるものです。

城が所属する国を求める
void 天翔記クラス::On_シナリオ大名選択直前(String^ シナリオファイル名) {
  // 今天翔記に信長がいるか、居るなら武将番号を得る
  int iBushouID = 武将->Find_武将番号(列挙::武将::列伝番号::織田信長);

  if (0 <= iBushouID && iBushouID < (武将->配列->Count)) {
    // 信長が居る城の番号
    int iCastleID = 武将->配列[iBushouID]->所属城番号;

    if (0 <= iCastleID && iCastleID < (城->配列->Count)) {
      int iKuniID = 城->配列[iCastleID]->所属国番号;
      デバッグ出力 << "信長は" << 国->配列[iKuniID]->国名 << "に居る" << endl;
    }
  }
}

その他

国について、主な解説は以上となります。
国関連には他にもプロパティがあります。
「国.h」や「国列挙.h」を参照してみてください。