語句変化語句変化とは、不定な人物同士の会話メッセージを作成する際に、 後述のソース中の、第1人称武将番号, 第2人称武将番号 を、様々な武将で試し、 男性・女性、上司・部下、年寄と若君主、様々な職業など、考慮されたメッセージへと語句が変化します。 使いどころは「吹き出しのメッセージダイアログ」内でのメッセージ作成武将や姫の会話がある独自イベントの際のメッセージ構築に利用することがほとんどでしょう。 2人の関係性は固定ではメッセージでは、必ず「変格」が必要となるメッセージは、「相手との関係」「本人の性格」「性別」などによって変化するハズです。 同じメッセージ内容でも、2人の人物関係によって以下のような変化が要求されます。 ------------------------------ // 武田晴信 が 武田信繁に言った 信繁、商人に 米を売ろう ははは、信繁 一度の失敗では 懲りぬようじゃな おのれ、信繁 覚えておれ! ------------------------------ // 武田信繁 が 武田晴信に言った 兄上、商人に 米を売りましょう ははは、兄上 一度の失敗では 懲りぬようですな おのれ、信玄 覚えておれ! ------------------------------ // 柿崎景家 が 上杉謙信に言った 政虎様、商人に 米を売りましょう わはは、お館様 一度の失敗では 懲りぬようですな おのれ、くそ坊主 覚えておれ! ------------------------------ // 五徳姫 が 織田信長に言った 父上、商人に 米を売りましょう うふふ、父上 一度の失敗では 懲りぬようですね おのれ、信長 覚えておれ! ------------------------------ // 初姫 が 茶々姫 姉上、商人に 米を売りましょう うふふ、姉上 一度の失敗では 懲りぬようですね おのれ、茶々 覚えておれ! ------------------------------ これをif文でかき分けるのは非常に大変です。 %相手% や %ははは% など、自動的に変化するメタ語句メタ語句を上手く利用して、文章を作りましょう。 先程の例ですと、たった1通りのメタ文章で実現できます。 void 語句変化の実験(int 自分のBushouID, int 相手のBushouID) { if (0 <= 自分のBushouID && 自分のBushouID < 最大数::武将情報::配列数 && 0 <= 相手のBushouID && 相手のBushouID < 最大数::武将情報::配列数) { string message1 = %相手%(自分のBushouID, 相手のBushouID) + "、商人に\x0A" "米を売" + %りましょう%(自分のBushouID, 相手のBushouID); string message2 = %ははは%(自分のBushouID, 相手のBushouID) + "、" + %相手%(自分のBushouID, 相手のBushouID) + "\x0A" "一度の失敗では\x0A" "懲りぬよう" + %です%(自分のBushouID, 相手のBushouID) + %な(2)%(自分のBushouID, 相手のBushouID); string message3 = "おのれ、" + %罵倒相手%(自分のBushouID, 相手のBushouID) + "\x0A" "覚えておれ!"; デバッグ出力 << message1 << endl; デバッグ出力 << endl; デバッグ出力 << message2 << endl; デバッグ出力 << endl; デバッグ出力 << message3 << endl; デバッグ出力 << "------------------------------" << endl; } } void カスタム::On_プレイヤ担当ターン《メイン画面》() { int i1stBushouID = Get_武将番号【配列用】(顔番号::武田晴信); // 武田信玄 int i2ndBushouID = Get_武将番号【配列用】(顔番号::武田信繁); // 武田信繁 語句変化の実験(i1stBushouID, i2ndBushouID); i1stBushouID = Get_武将番号【配列用】(顔番号::武田信繁); // 武田信繁 i2ndBushouID = Get_武将番号【配列用】(顔番号::武田晴信); // 武田信玄 語句変化の実験(i1stBushouID, i2ndBushouID); i1stBushouID = Get_武将番号【配列用】(顔番号::柿崎景家); // 柿崎景家 i2ndBushouID = Get_武将番号【配列用】(顔番号::長尾景虎); // 上杉謙信 語句変化の実験(i1stBushouID, i2ndBushouID); i1stBushouID = Get_武将番号【配列用】(顔番号::織田五徳); // 五徳姫 i2ndBushouID = Get_武将番号【配列用】(顔番号::織田信長); // 織田信長 語句変化の実験(i1stBushouID, i2ndBushouID); i1stBushouID = Get_武将番号【配列用】(顔番号::浅井初); // 初姫 i2ndBushouID = Get_武将番号【配列用】(顔番号::浅井茶々); // 茶々姫 語句変化の実験(i1stBushouID, i2ndBushouID); } 吹き出しメッセージで利用してみよう。主体と客体の武将番号【配列用】を入れ替えながら会話していけば、 void カスタム::On_プレイヤ担当ターン《メイン画面》() { int 自分のBushouID = Get_武将番号【配列用】(顔番号::織田信長); int 相手のBushouID = Get_武将番号【配列用】(顔番号::織田五徳); if (0 <= 自分のBushouID && 自分のBushouID < 最大数::武将情報::配列数 && 0 <= 相手のBushouID && 相手のBushouID < 最大数::武将情報::配列数) { string message1 = %相手%(自分のBushouID, 相手のBushouID) + "、商人に\x0A" "米を売" + %りましょう%(自分のBushouID, 相手のBushouID); 噴出ダイアログ《通常・左上》開始(自分のBushouID, message1); // 主格と客体を入れ替え得る 自分のBushouID = Get_武将番号【配列用】(顔番号::織田五徳); 相手のBushouID = Get_武将番号【配列用】(顔番号::織田信長); string message2 = %ははは%(自分のBushouID, 相手のBushouID) + "、" + %相手%(自分のBushouID, 相手のBushouID) + "\x0A" "一度の失敗では\x0A" "懲りぬよう" + %です%(自分のBushouID, 相手のBushouID) + %な(2)%(自分のBushouID, 相手のBushouID); 噴出ダイアログ《通常・右下》開始(自分のBushouID, message2); 噴出ダイアログ《通常・右下》終了(); 噴出ダイアログ《通常・左上》終了(); } } 特定の相手が居ない独り言の場合は?独り言の場合は、第1引数と第2引数に両方に当人の「武将番号【配列用】」を入れる。 自分を相手に語りかければ、独り言に近い状態となります。 より詳細を知るには...「語句変化」に関する主な所は以上となります。 詳しくは「言葉遣い情報型.h」などを参照してください。 |