С чего начать программирование случайного пути в сетке?

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

Мне нужно создать путь от одной стороны сетки к другой, но не кратчайшим случайным образом, мне нужно убедиться, что если путь параллелен другой части пути, то он находится на расстоянии не менее 2 единиц друг от друга .

заранее спасибо


person Shredder2500    schedule 23.06.2012    source источник


Ответы (2)


Однажды я написал генератор лабиринта, который начал с создания пути через лабиринт следующим образом:

Выберите два случайных смещения по оси y, по одному с каждой стороны, y1 и y2, затем выберите случайное смещение по оси x, x. Затем соедините две точки прямыми линиями от (0, y1) до (x, y1), (x, y1) до (x, y2), (x, y2) до (w-1, y2), где w ширина:

     x
   .....
y1 XXX..
   ..X..
   ..XXX y2
   .....
   |-w-|

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

Удар выглядит так:

До:

 .....
 XXXXX
 .....
 .....

После:

 .....
 XX.XX
 .XXX.
 .....

Этот тип преобразования можно применить в любом месте текущего пути в любом из четырех направлений, где есть свободное место.

(Мои художественные навыки в ASCII оставляют желать лучшего - надеюсь, вы поняли идею).

person 500 - Internal Server Error    schedule 23.06.2012

Это кажется хорошей отправной точкой: http://www.csharpcity.com/reusable-code/a-path-finding-library/ Это хорошая основа, которую, вероятно, можно легко применить к вашим потребностям.

person JamieMeyer    schedule 23.06.2012