Применительно к этой программируемой игре Я сейчас строю.
Когда игра запускается, я генерирую этих роботов в предположительно случайных точках на холсте, и на первый взгляд (добавление одного или двух ботов одновременно) это, похоже, работает должным образом.
... но, когда я добавил тонну ботов одновременно, они «случайно» появились на холсте:
альтернативный текст http://img22.imageshack.us/img22/6895/randombotpositionlf7.jpg
Якобы случайные точки не кажутся такими уж случайными ... они просто точки прямой !
Вот как я вычисляю очки:
SetStartingPoint(GetRandomPoint(ArenaWidth, ArenaHeight)); //the width and height are 550, 480 at the moment
//which calls:
private Point GetRandomPoint(double maxWidth, double maxHeight)
{
return new Point(new Random().Next(0, (int)(maxWidth-80)), new Random().Next(0, (int)maxHeight));
}
//and ultimately:
private void SetStartingPoint(Point p)
{
Translate_Body.X = (double)p.X;
Translate_Body.Y = (double)p.Y;
}
Что касается приведенного выше кода, Translate_Body
относится к типу TranslateTransform
робота (canvas
), поэтому, присваивая его свойства X
и Y
, он изменит свою позицию на новые значения
Что мне здесь не хватает?
[ОБНОВЛЕНИЕ] Решение:
Проблема была в том, что вы все предположили, что числа не были засеяны должным образом из-за новых экземпляров.
Теперь я изменил код, чтобы использовать одну переменную Random
и отсеять все точки из нее.
Но я до сих пор не могу понять, почему точки генерируются по, казалось бы, прямой линии координат. Кто-нибудь может объяснить это?