Доброго времени суток,
Сделав прорисовку земли стоит задуматься о генерации лесов на карте. Если судить логически то леса расположены случайным образом небольшими группками. С этого следует то, что за основу будут браться рандомные числа.
Итак, карта земли состоит из одного большого массива NxM. Создадим ещё один массив ( Tree_Position ) с кол-вом элементов равным кол-ву деревьев ( Max_Trees ). Перед генерацией можно будет указывать в настройках карты густоту лесов ( например переменными Tree_Num, For_Width, For_Height ) и их насыщенность на карте ( переменной Max_Trees ). Создаём цикл перебора всех деревьев в котором создаём 3 случайных числа: от 1 до N = Y , от 1 до M = X ( координаты начала леса ) , от 1 до Forests = Num_Trees ( кол-во деревьев в лесу ). Далее в новом цикле перебора всех Num_Trees создаём новые рандомные числа от 1 до For_Width = Width ( случайная точка меньше чем ширина леса ) и от 1 до For_Height = Height ( случайная точка меньше чем высота леса ). Дереву в цикле присваиваем координаты ( X + Width , Y + Height ). Наш лес готов.
Теперь посмотрим на сам код.
Random random = new Random(DateTime.Now.Millisecond); for (int TreeLast = 0; TreeLast < Max_Trees;) { int X = random.Next(1, M); int Y = random.Next(1, N); int TreeNum = random.Next(1, Num_Trees);
for (int i = TreeLast; i < TreeLast + TreeNum; i++) { int Width = random.Next(1, For_Width); int Height = random.Next(1, For_Height); Tree_Position[i] = new Vector2(X + Width, Y + Height); }
TreeLast += TreeNum; }
Надеюсь объяснено понятно. Если будут вопросы - пишите, текст подправлю. Всем удачи, TagumPlay.
Автор: TagumPlay.
|