要件の一部として、元のコードと同じように動作するようにコードを変更しようとしていますが、理解できないようです。
私はすでにいくつかの変更を行っており、正常にコンパイルされていますが、スタッククラスをリストのように機能させることはできません:
リスト (オリジナル):
private List<Gem> gems = new List<Gem>();
private List<Enemy> enemies = new List<Enemy>();
private void UpdateGems(GameTime gameTime)
{
for (int i = 0; i < gems.Count; ++i)
{
Gem gem = gems[i];
gem.Update(gameTime);
if (gem.BoundingCircle.Intersects(Player.BoundingRectangle))
{
gems.RemoveAt(i--);
OnGemCollected(gem, Player);
}
}
}
スタック(私の修正版):
private Stack<Gem> gems = new Stack<Gem>();
private Stack<Enemy> enemies = new Stack<Enemy>();
/// <summary>
/// Animates each gem and checks to allows the player to collect them.
/// </summary>
private void UpdateGems(GameTime gameTime)
{
Gem[] array = gems.ToArray();
for (int i = 0; i < gems.Count; ++i)
{
Gem gem = array[i];
gem.Update(gameTime);
if (gem.BoundingCircle.Intersects(Player.BoundingRectangle))
{
gems.Pop();
OnGemCollected(gem, Player);
}
}
}