Random 如何在XNA中随机抽取50个相同的精灵?

Random 如何在XNA中随机抽取50个相同的精灵?,random,xna,sprite,texture2d,Random,Xna,Sprite,Texture2d,我目前正在做一个学校项目,错过了一节课,老师在课上解释了如何在没有大量代码的情况下做到这一点 以下是作业: 创建一个XNA应用程序显示50个动画精灵向下加速。当精灵撞击窗口底部时,使其反弹。在随机位置生成每个精灵,使精灵始终完全位于窗口中。将随机位置的Y分量限制在0到300之间。最后,使精灵在按下空格键时重置到其原始位置 这是指向示例图像的链接,rep不够高,无法插入图像 我画了一个精灵并设置了动画,我只需要一些关于为相同纹理2D随机生成位置的指导。您应该使用随机类 // Make one

我目前正在做一个学校项目,错过了一节课,老师在课上解释了如何在没有大量代码的情况下做到这一点

以下是作业:

创建一个XNA应用程序显示50个动画精灵向下加速。当精灵撞击窗口底部时,使其反弹。在随机位置生成每个精灵,使精灵始终完全位于窗口中。将随机位置的Y分量限制在0到300之间。最后,使精灵在按下空格键时重置到其原始位置

这是指向示例图像的链接,rep不够高,无法插入图像


我画了一个精灵并设置了动画,我只需要一些关于为相同纹理2D随机生成位置的指导。

您应该使用随机类

 // Make one instance of random, the seed is the milliseconds, other way random always returns the same sequence of random numbers.
 static readonly Random rnd = new Random(DateTime.Nom.Milliseconds);

 List<Sprite> Sprites = new List<Sprite>(50); 
 public void Update()
 {
      //Add new sprites with a 90% or probability 
      if (Sprites.Count<50 && rnd.Next(100) > 90)
      {
          Sprite sprite = new Sprite();

          // This X calculation makes the sprite not to get out of the screen at both sides
          sprite.Pos.X = (float) ( (0.1f + 0.8f * rnd.NextDouble()) * GraphicsDevice.Viewport.Width);
          sprite.Pos.Y = (float) ( rnd.NextDouble() * 300 );

          Sprites.Add(Sprite);
      }
 }
//创建一个random实例,种子是毫秒,否则random总是返回相同的随机数序列。
静态只读随机rnd=新的随机数(DateTime.Nom.millides);
列表精灵=新列表(50);
公共无效更新()
{
//以90%或90%的概率添加新精灵
如果(精灵计数90)
{
精灵精灵=新精灵();
//此X计算使精灵不会从屏幕两侧退出
sprite.Pos.X=(float)((0.1f+0.8f*rnd.NextDouble())*GraphicsDevice.Viewport.Width);
sprite.Pos.Y=(float)(rnd.NextDouble()*300);
雪碧。添加(雪碧);
}
}
当然,德斯皮特的课程取决于你:)