敵が画面外に出た瞬間に、エラーで止まってしまいます。
調べてみると、どうやらOut処理時に敵のデータを消去した後 nullptrが入っていないみたいなのです。
Outの処理を飛ばすと正常に動作するのでおそらくここに原因があるとおもうのですが・・・。
どなたかアドバイスや対処法をご教授お願いします。
void Gamemanager::Cmove()
{
Player *player = new Player();
for(int i = 0; i < static_cast<int>(enemy.size()); ++i)
{
if(enemy[i] != nullptr)
{
enemy[i]->Cmove(); //敵を動かす
if( HitEnemy(player,enemy[i]) == 1) //敵を上から踏んだら
{ delete enemy[i]; enemy[i] = nullptr; } //敵を消す
Out(enemy[i]); //画面外に出たら消す
}
}
delete player;
}
void Gamemanager::Out(Enemy *enemy) //画面外に出たらその敵を消す
{
if( ( (enemy->getLeftX() > 800) && (enemy->getRightX() >800+Gsize) ) ||
( (enemy->getRightX() < 0) && (enemy->getLeftX() < (0-Gsize) ) ) ||
( (enemy->getLeftY() < (0 -Gsize)) && (enemy->getRightY() < 0)) ||
( (enemy->getRightY() > 600+Gsize) && (enemy->getLeftY() > 600) )
)
{ delete enemy; enemy = nullptr; }
}
void Gamemanager::Draw()
{
for(int i = 0; i < static_cast<int>(enemy.size()); ++i)
{
if(enemy[i] != nullptr)
{ enemy[i]->draw(); }
}