绘图泥图

Ada*_*dam 4 python visualization graph graphviz mud

我正在试图绘制一些泥地图.我使用python和graphviz得到类似的东西:

http://img23.imageshack.us/img23/5222/arrasz.png

正如您所看到的,我们有一些位置并且进入N/S/W/E/Up/Down我们将前往其他位置.

用graphviz绘制这张地图是否有可能将北方位置设置为南方,而位于西方位置右侧的东方位置?

我的意思是这样的:

some        --- E --->   some
location   <--- W ---    location 2
                            .
                           / \   |
                            |    |

                            N    S

                            |    |
                                \ /   
                                 `
                          some location 3
Run Code Online (Sandbox Code Playgroud)

或者也许有一些比graphviz更好的自动绘制工具?

Nat*_*ohl 5

人们之前已经询问过如何改进Graphviz布局,但我认为Graphviz在这里有点过分.

如果您有这样的标准MUD布局:

简单的MUD布局

...那么你对房间的位置有一些相当强烈的限制.Graphviz不知道这些约束,所以它不会像一个简单的算法那样做得好:

  1. 选择网格上的起始位置
  2. 使用例如深度优先遍历遍历每个房间
  3. 将每个房间的一个单位移动到N,S,E或W

如果您不想编写可视化代码,您可以(或许)将上述方法作为Graphviz的预处理步骤,将其用作为每个房间分配排名的方法.然后(希望)Graphviz会产生正确的输出.

编辑:例如,一些伪代码:

visit(initialRoom, 0, 0)

def visit(curRoom, curX, curY)
  if curRoom == null return

  print "in room " + curRoom + " at location " + curX + ", " + curY

  visit(curRoom.northNeighbor, curX,   curY-1)
  visit(curRoom.southNeighbor, curX,   curY+1)
  visit(curRoom.westNeighbor,  curX-1, curY)
  visit(curRoom.eastNeighbor,  curX+1, curY)
Run Code Online (Sandbox Code Playgroud)