最終更新日 2024-09-25

メイン画面 - 戦略ターン

戦略.ターンの概念

戦略.ターンとは、戦略画面の大名ターンもしくは軍団ターンのことです。
城ターンもあります。

「現在ターンが回っている大名」「ターンが回っている軍団」
あるいは「ターンが回ってきている城」を簡単に得ることが出来るよう、「pターン情報」が提供されています。

現在ターンが来ている大名番号や軍団番号を得る

pターン情報.現在のターン【大名番号】
pターン情報.現在のターン【軍団番号】
void カスタム::On_プレイヤ担当ターン《メイン画面》() {
	int iDaimyoID = pターン情報.現在のターン【大名番号】 - 1;
	int iGundanID = pターン情報.現在のターン【軍団番号】 - 1;

	if (0 <= iDaimyoID && iDaimyoID < 最大数::大名情報::配列数) {
		int iBushouID = p大名情報[iDaimyoID].大名【武将番号】-1;

		if (0 <= iBushouID && iBushouID < 最大数::武将情報::配列数) {
			デバッグ出力 << "大名:" << Get_名字(iBushouID) << Get_名前(iBushouID) << endl;
		}
	}

	if (0 <= iGundanID && iGundanID < 最大数::軍団情報::配列数) {
		int iBushouID = p軍団情報[iGundanID].軍団長【武将番号】 - 1;

		if (0 <= iGundanID && iGundanID < 最大数::武将情報::配列数) {
			デバッグ出力 << "第" << (int)p軍団情報[iGundanID].軍団割当番号 << "軍団" << "の軍団長:" << Get_名字(iBushouID) << Get_名前(iBushouID) << endl;

			int iCastleID = p軍団情報[iGundanID].所属居城【城番号】-1;
			デバッグ出力 << "城:" << Get_城名(iCastleID) << Get_城称(iCastleID) << endl;
		}
	}

	/* On_プレイヤ担当ターン《メイン画面》 では切り替わり目なので、以下のような城ターンは機能しない
	int iGundanID = pターン情報.現在のターン【城番号】 - 1;
	if (0 <= iCastleID && iCastleID < 最大数::城情報::配列数) {

		デバッグ出力 << Get_城名(iCastleID) << Get_城称(iCastleID) << endl;
	}
	*/
}

On_プレイヤ担当ターン《メイン画面》()とOn_軍団ターン変更《メイン画面》() は城ターンに有効な値が入ってない

「On_プレイヤ担当ターン《メイン画面》()」と「On_軍団ターン変更《メイン画面》()」は、切り替わりい直後のメソッドとなるため、城ターンの情報がまだ更新されていません。
しかし、軍団番号や大名番号から、簡単に所属している居城の番号が得られますので、そちらの手段で取得してください。

void カスタム::On_軍団ターン変更《メイン画面》(int 軍団番号) {
	int iGundanID = 軍団番号 - 1;
	if (0 <= iGundanID && iGundanID < 最大数::軍団情報::配列数) {
		int iBushouID = p軍団情報[iGundanID].軍団長【武将番号】 - 1;

		if (0 <= iGundanID && iGundanID < 最大数::武将情報::配列数) {
			デバッグ出力 << "第" << (int)p軍団情報[iGundanID].軍団割当番号 << "軍団" << "の軍団長:" << Get_名字(iBushouID) << Get_名前(iBushouID) << endl;

			int iCastleID = p軍団情報[iGundanID].所属居城【城番号】 - 1;
			デバッグ出力 << "城:" << Get_城名(iCastleID) << Get_城称(iCastleID) << endl;
		}
	}

	/* On_軍団ターン変更《メイン画面》 では切り替わり目なので、以下のような城ターンは機能しない
	int iGundanID = pターン情報.現在のターン【城番号】 - 1;
	if (0 <= iCastleID && iCastleID < 最大数::城情報::配列数) {

		デバッグ出力 << Get_城名(iCastleID) << Get_城称(iCastleID) << endl;
	}
	*/
}

注意点

「大名ターン」と「大名ターン」の「間」など、「どの軍団のターンでもない」といった状態は頻繁に発生します。
そういった場合、ターン軍団番号やターン大名番号には「0xFFFF」が入った状態となります。

なお、戦争をしている間は「戦争を仕掛けた軍団の行動」ですから、
戦争をしかけた軍団の「戦略ターン」に含まれます。

より詳細を知るには...

「メイン画面 - 戦略ターン」に関する主な所は以上となります。 詳しくは「ターン情報型.h」などを参照してください。