releaseで生成したexeファイルでは場合によって成功したり失敗したりします。
原因としては敵クラス(IndividualEnemyクラス)のメンバが多すぎてクラスのサイズが大きくなり、メモリ確保に失敗していることが考えられるのですが、色々試してもうまくいきません。
初心者ゆえ読みにくいコードですが、解決方法をご教授お願いします。
IndividualEnemyクラス
class GameObj
{
public:
float x, y, z; //基準点
short int Range1x, Range1y, Range2x, Range2y;
bool Display;
};
class IndividualEnemy : public GameObj
{
public:
short int Range1x, Range1y, Range2x, Range2y; // 範囲の座標
short int Direction; // 向き << 上:0 下:1 右:2 左:3 >>
float rad; // 向きの角度
short int DrawImageNumber; // 描画する画像の番号
short int HP; // 残り体力
short int Damage; //攻撃力
short int Moving; // 移動しているかどうか << 移動中:1以上 停止中:0 >>
short int InvincibleTime; // 無敵時間
bool Invincible; // 攻撃を受けるかどうか << 受けない:true 受ける:false >>
short int AttackDelay; // 攻撃タイミングのズレ
short int TimingCount; // 各種タイミング計り変数
bool HitAttack; // 接触でプレイヤーがダメージを受けるかどうか << true:受ける false:受けない >>
bool Display; // 表示するかどうか
bool Armor; // 被ダメージ時に仰け反るかどうか << 仰け反る:true 仰け反らない:false>>
IndividualEnemy *prev;
IndividualEnemy *next;
};
void Enemy_Create(int EnemyType, int x, int y, int Direction, int AttackDelay){
IndividualEnemy *n, *e = &ET[EnemyType].head;
for(IndividualEnemy *p = ET[EnemyType].head.next; p != NULL; p = p->next){ //最後尾のアドレスを検索
e = p;
}
n = new IndividualEnemy;
n->x = x;
n->y = y;
n->Direction = Direction;
n->AttackDelay = AttackDelay;
n->Display = true;
n->HP = ET[EnemyType].HP; // 体力の設定
n->HitAttack = ET[EnemyType].HitAttack; // 接触ダメージの設定
n->InvincibleTime = 0; // 無敵時間の設定
n->Invincible = ET[EnemyType].Invincible; // 無敵の種族を無敵化
n->Moving = 0; // 移動時間の初期化
n->DrawImageNumber = n->Direction; // 描画画像の初期化
n->TimingCount = 0; // タイミングの初期化
n->Damage = ET[EnemyType].Damage;
n->next = NULL;
n->prev = e;
e->next = n;
ET[EnemyType].Population++;
}