「ゲームプログラミング/RPG」の版間の差分

削除された内容 追加された内容
→‎戦闘中のアルゴリズム: 実際には、戦闘に参加している自陣営パーティのキャラが、必ずしもID順に並んでいるとは限りませんので、そのために復号する処理が必要です。
編集の要約なし
1,123 行
:1→13,
:2 → 7 
のような、並び替え番号から登録ID番号への、復号の処理がさらに必要ですので、そのための処理結果を入れる配列も必要です(下記コードでは「PorE_ID」配列です。なお party or enemy の ID という意味 )
 
しかもその復号処理の際、並び替え処理の配列には敵と味方が混在していますので、できれば味方の番号だけを復号処理中に扱ってい対象必要敵か味方かを記録しておくフラグ記憶用あるので、そのための配列もアルと便利追加しょう(下記コードでは PorEflag 配列)必要になりす
 
そのため、復号処理中に扱っている対象が敵か味方かを記録しておくフラグ記憶用の配列が必要になります(下記コードでは PorEflag 配列。Party or Enemy のフラグ(flag)という意味)。あらかじめ、その配列もグローバル変数などとして用意しておく必要があります。
 
あらかじめよって、上記の「// 行動順配列もグローバル変数の入れ替え」などの一連のプログラムの後に、さらに、たしてえば次のような敵味方の判別意しておくフラグのための配列作成が必要があになります。
 
よって、上記の「// 行動順配列の入れ替え」などの一連のプログラムの後に、さらに、たとえば次のような復号処理が必要になります。
 
<syntaxhighlight lang="C">
1,138 ⟶ 1,137行目:
if (junjoHairetu[temp] <= partyNinzu - 1) {
PorEflag[temp] = 1; // 味方ならフラグ1にセット
PorE_ID[temp] = junjoHairetu[temp];
}
 
1,144 ⟶ 1,142行目:
if (junjoHairetu[temp] > partyNinzu - 1) {
PorEflag[temp] = 2; // 敵ならフラグ2にセット
PorE_ID[temp] = -9; // 敵用の仮ID. 味方と重複しないよう、マイナスを使用した。
}
}
</syntaxhighlight>
 
 
なお、復号は、並び替え処理側の関数でなくとも、その関数(並び替え処理関数)の呼び出し側関数(「並び替え処理関数」とは別の関数)でも可能です。呼び出し側の関数の都合によって復号のコードは違うので、復号のコードの具体例の詳細については省略します。