std::string monsterNames[2] {"Weezer", "Leppin"};
for (int vecID = 1; vecID < 5; ++vecID)
{
if(newmonster.monsterData[vecID-1].posX != newmonster.monsterData[vecID].posX && newmonster.monsterData[vecID-1].posY != newmonster.monsterData[vecID].posY)
{
int randIndex = rand()% 2;
int randPosX = rand()% 3;
int randPosY = rand()% 3;
newmonster.CreateMonster(monsterNames[randIndex], randPosX, randPosY);
newmonster.monsterData.push_back(newmonster);
}
else
{
continue;
}
}
はい、このコードはif文のために実行されません。ステートメントの後まではモンスターは作成されないので、配列インデックスは範囲外です。 基本的に、プログラムはモンスターの名前と座標をランダム化し、if文を使わずにすべて正常に動作します。しかし、私はその場所にモンスターがすでに存在するかどうかを確認し、そうでなければループを再実行する必要があります。もっと賢明な方法でこれを行うには? xD forループがない場合、乱数は常に同じになります。ランダムな場所にモンスターを召喚する
同じ位置に別のものが存在するかどうかをチェックすることから、 "モンスター"の作成をはっきりと分離する必要があります(例えば、同じposXとposYを持つ要素があればベクトルの各要素をチェックする機能があります。値) – UnholySheep
また、elseは冗長です。 – Banex