我正在尝试自己开发我的第一个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中的第一次。 :)
答案 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)
制作零和一。