for循环逐步向List()添加更多对象

时间:2016-03-06 19:20:58

标签: c# list for-loop monogame

我无法找到在for循环中创建方程式的方法,该方法将在List collectibleList中生成许多对象,具体取决于角色所在的级别。就像现在一样,我的列表每个级别只创建一个collectible。我猜测,这是因为i < currentLevel的约束。但我不知道我应该使用什么样的约束或如何在等式中实现i,以便可以将更多collectibles添加到我的列表中,具体取决于currentLevel

    // Set up each level the player encounters
    public void NextLevel()
    {
        collectibleList.Clear();
        currentLevel++;
        timer = 10;
        player.LevelScore = 0;
        player.Position = new Rectangle(GraphicsDevice.Viewport.Width/2, GraphicsDevice.Viewport.Height/2, player.Position.Width, player.Position.Height);

        // Random number generator that will help generate a random position of the collectible sprite
        Random rng = new Random();
        for (int i = 0; i < currentLevel; i++)
        {
            Collectible collectible = new Collectible(rng.Next(0, GraphicsDevice.Viewport.Width), rng.Next(0, GraphicsDevice.Viewport.Height), 70, 91, true);
            collectible.ObjectSprite = collectibleSprite;
            collectibleList.Add(collectible);
        }
    }

2 个答案:

答案 0 :(得分:0)

由于您基于currentLevel(一次一个)进行迭代,因此您将在列表中的每个级别获得单个可收集条目。

您需要的是确定每次迭代添加多少收藏品的另一个因素 - 然后您可以将内循环置于主循环内,以生成每个级别所需的任意数量的收藏品。

即第1级的2个收藏品,第2级的5个收藏品等。

答案 1 :(得分:0)

你正在寻找一个好的增加整数函数,对吧?有很多选择可供选择。

f(n) = nf(n) = 2*n + 1f(n) = n +log(n)⌋等

较大的 n 是较大的 f(n)

获取给定 n 的数字的另一种方法是将随机数添加到 f(n - 1)