Как я могу нарисовать 50 одинаковых спрайтов в случайных местах в XNA? - PullRequest
1 голос
/ 15 марта 2012

Я сейчас работаю над школьным проектом и пропустил урок, где преподаватель объяснил, как это сделать без большого количества кода.

Вот назначение:

Создание приложения XNA показывает 50 анимированных спрайтов, ускоряющихся вниз.Когда спрайт попадает в нижнюю часть окна, заставьте его отскочить.Создайте каждый спрайт в случайном месте, чтобы спрайт всегда был полностью в окне.Ограничьте компонент Y случайного местоположения от 0 до 300. Наконец, сделайте так, чтобы спрайты возвращались в исходное местоположение после нажатия клавиши пробела.

Это ссылка например изображения, репутация недостаточно высока для вставки изображений

http://hypergrade.com/grader/file_download.php?id=132

У меня нарисован и анимирован один спрайт, мне просто нужно некоторое руководство по случайной генерации локаций для того же Texture2D.

1 Ответ

0 голосов
/ 15 марта 2012

Вы должны использовать Случайный класс.

 // 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);
      }
 }

Конечно, класс де Спрайт зависит от вас ..:)

...