使用2个图片框列表,索引超出范围

时间:2016-01-18 00:49:27

标签: arrays list indexing range picturebox

我正在做一个涉及2个图片框列表和碰撞检测的小游戏。 我所拥有的是:

List<PictureBox> spells = new List<PictureBox>();
    List<PictureBox> enemy = new List<PictureBox>();

然后,我使用函数为每个列表动态创建新的图片框及其相应的图像。

然后使用计时器进行碰撞检测:

private void timer1_Tick(object sender, EventArgs e)
    {for (int i = 0; i <= spells.Count-1 ; i++)
        {
            for (int j = 0; j <= enemy.Count-1 ; j++)
            {
                if (spells[i].Top == enemy[j].Top &&
                    spells[i].Right > enemy[j].Left &&
                    spells[i].Tag.ToString()=="Fire" && enemy[j].Tag.ToString()=="Frostenemy")
                {

                    Controls.Remove(enemy[j]);
                    enemy[j].Dispose();
                    enemy.Remove(enemy[j]);
                    Controls.Remove(spells[i]);
                    spells[i].Dispose();
                    spells.Remove(spells[i]);

                }

重复其他类型的picutrebox。如果“敌人”列表中少于3个图片框由另一个计时器生成,则此工作正常,但是一旦屏幕上有超过3个,我尝试从“法术”列表中创建一个图片框,我收到以下错误:

“索引超出范围。必须是非负数且小于集合的大小。”

我已经找到了解决这个问题的其他方法,但到目前为止我还没有真正的运气。

1 个答案:

答案 0 :(得分:0)

作为一项实验,尝试让您的计时器更长(更慢,每分钟更少的刻度),看看问题是否有所改善,但是不会消失。

计时器可能会启动同时运行您的功能 - 这可能会导致各种逻辑问题。