无法选择精灵随机绘制

时间:2012-03-28 02:45:47

标签: c# random xna generator sprite

我正在尝试自己开发我的第一个XNA游戏,只是查看教程的来源并思考我自己的实现和解决方案。目前,我正在制作一个泡泡射击游戏,我正在各自的位置画出气泡。

事实是,我已经实现了两种类型的气泡。程序选择通过随机生成器绘制的类型(0或1表示蓝色或红色),并根据结果将所选类型绘制到屏幕中。这种方法不起作用,我耗费了我的搜索资源。代码如下

for (int colBubCounter = 0; colBubCounter < maxVerticalBubNumber / 2; colBubCounter++)
        {
            for (int rowBubCounter = 0; rowBubCounter < maxHorizontBubNumber; rowBubCounter++)
            {

                Rectangle bubbleDrawRectangle = new Rectangle(initDrawCoordX, initDrawCoordY, bubbleWidth, bubbleHeight);
                //Randomizamos el tipo de burbujar a dibujar ( 0 = blue, 1 = red)
                bubbleType = randomGenerator.Next(0, 1);
                if (bubbleType == 0) spriteBatch.Draw(blueBubbleSprite, bubbleDrawRectangle, Color.White);
                else if (bubbleType == 1) spriteBatch.Draw(redBubbleSprite, bubbleDrawRectangle, Color.White);

                //Cada vez que dibujamos uno, corremos la coordenada a dibujar en el otro ciclo en 10 pixeles
                initDrawCoordX += bubbleWidth;
            }

            initDrawCoordX = 0;
            initDrawCoordY += bubbleHeight;
        }

System.Random randomGenerator = new System.Random();

我没有使用类或其他任何东西而不是原始代码,因为我正在进行增量步骤开发,一旦准备就绪,我将对类和其他奇特的东西做同样的事情。

感谢您的帮助,如果我在这个问题上做错了,请告诉我,这是我在StackOverflow中的第一次。 :)

2 个答案:

答案 0 :(得分:1)

你正在使用带有2个重载的随机方法Next()告诉它范围介于0和1之间,这意味着它总是return 0

这是因为上限(在这种情况下为1)是异常的,因为它从0到1但不包括1 ......所以它从0到0。

尝试bubbleType = randomGenerator.Next(2);

bubbleType = randomGenerator.Next(0, 2);

和随机类的提示,尝试使其成为类级别,并且仅使用1个对象来获得更随机的数字生成(创建新对象通常倾向于提供与其伪随机数相同的数字)

答案 1 :(得分:1)

randomGenerator.Next(0, 1);将始终返回0,因为maxValue(upper)bound是独占的。您需要使用randomGenerator.Next(0, 2)制作零和一。