В настоящее время я создаю простую игру на C #, и мой объект появляется в середине экрана, теперь я составил список для этого объекта, но мне было интересно, как мне сделать так, чтобы объект появлялся на экране 10 раз случайным образом? Я предполагаю для каждой петли какой-то?

object1 = new List<Gem>();
object2 = new List<Gem>();

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

0
RonTheOld 27 Мар 2014 в 02:36
Является ли Gem объектом, который вы пытаетесь отобразить? И вы хотите отобразить 10 из них?
 – 
MikeH
27 Мар 2014 в 02:38
Да, это правильно, но я хочу установить позицию без разбора. так что эти 10 драгоценных камней появляются только в случайных местах
 – 
RonTheOld
27 Мар 2014 в 02:40
1
Как вы определяете их местоположение? Я пока ничего не вижу в вашем коде, чтобы указать им местоположение.
 – 
Kevin
27 Мар 2014 в 02:41
На данный момент это просто ручное управление, поэтому оно находится в середине экрана.
 – 
RonTheOld
27 Мар 2014 в 02:44
1
 – 
Olivier Jacot-Descombes
27 Мар 2014 в 02:45

2 ответа

Лучший ответ

Предполагая, что ваш класс Gem выглядит так:

class Gem
{
  public int X {get;set;}     
  public int Y {get;set;}
  // information about color/type/whatever
}

Вы можете сделать что-то вроде:

//make sure to have single instance of `Random` for class/whole program
Random rnd = new Random(); 
var gems = Enumerable.Range(1,10) // 10 items
  .Select(i => new Gem {  // create new Gem
     X = rnd.Next(1, 100), // set position to random value 1-100, adjust to 
     Y = rnd.Next(1, 100), // desired width/height ranges
  })
  .ToList();// convert enumerable to list.
0
Alexei Levenkov 27 Мар 2014 в 03:26

Итак, допустим, у меня есть объект IMAGE, который можно отобразить на экране с помощью вызова стиля XNA:

 renderer.draw(IMAGE,COORD,COLOR);

Использование:

for(int x = 0; x < 10; x++)
{
      renderer.draw(IMAGE,new COORD(rand.Next(IMAGE.WIDTH,SCREEN.SIZE.WIDTH - IMAGE.width),rand.Next(IMAGE.HEIGHT,SCREEN.SIZE.HEIGHT - IMAGE.HEIGHT)),COLOR);
}

Вам нужен только один экземпляр изображения, но, возможно, список координат.

Ваш логический объект «GEM» не должен содержать само изображение, а должен использоваться для указания визуализации, где нарисовать ваш единственный экземпляр изображения драгоценного камня.

Если вы можете создать часть своего кода рендеринга и часть кода GEM, я мог бы вам гораздо больше помочь

А забавная математика не даст вашему драгоценному камню рендериться за пределами экрана

0
RadioSpace 27 Мар 2014 в 03:28