Ниже код предназначен для создания случайных позиций для препятствий. Препятствия движутся справа налево, поэтому я использую координату x для перемещения в левом направлении. Когда препятствия достигают левой стороны экрана, он снова помещается в какую-то случайную позицию. Но здесь проблема заключается в том, что иногда препятствия размещаются в одном и том же положении, или они слишком близки.Случайно сгенерированные препятствия, иногда помещенные в то же положение
public void Randomize()
{
int random = rand.Next(1,200);
switch (random)
{
case 200:
if (Texture.crabrect.X < 0)
Texture.crabrect.X = rand.Next(1000,1500);
break;
case 12:
if (Texture.samosarect.X < 0)
Texture.samosarect.X = rand.Next(1000, 2000);
break;
case 10:
if (Texture.mirchirect.X < 0)
Texture.mirchirect.X = rand.Next(1800,3000);
break;
case 80:
if (Texture.mushroomrect.X < 0)
Texture.mushroomrect.X = rand.Next(1000, 2000);
break;
case 195:
if (Texture.laddoorect.X < 0)
Texture.laddoorect.X = rand.Next(1000, 2000);
break;
case 56:
if (Texture.stonerect.X < 0)
Texture.stonerect.X = rand.Next(1000, 2000);
break;
case 177:
if (Texture.cactusrect.X < 0)
Texture.cactusrect.X = rand.Next(1000, 2000);
break;
}
}
Затем проверьте, есть ли еще один объект в месте, где вы хотите разместить препятствие, и повторите попытку, если это так. –
@NicoSchertler вы правы, но если они не размещены в точном положении ... как один на 200, а другой на 210, то что делать? – pravin
Проверьте, не пересекаются ли диапазоны текстур ('позиция' до' позиция + ширина'). Есть несколько случаев, которые вам нужно проверить (например, как 'p1', так и' p1 + w1' меньше, чем 'p2'. Тогда нет пересечения). –