mapgen

Run Settings
LanguagePython
Language Version
Run Command
""" 简化的生成代码: 假设这里只有一种单元, 他有三个接口 (门), 标记为 A, B, C 每个接口可以连接 **其他** 单元的 **不同** 接口, 也就是说 A 只能连 B, C 这里不考虑门可以隐藏的情况 (就是说每个接口必须连接出去) 下面代码中 max_depth 是 **至少** 生成这么多个单元 你可以把输出粘贴到 https://dreampuf.github.io/GraphvizOnline 来看 """ import random flag = True points = [[None] * 3] def any_not_None(iterable): for e in iterable: if e is not None: return True return False def gather(not_this_i=None, not_this_j=None): global flag if flag: flag = False return [(0, i) for i in range(3)] candidates = [] for i, x in enumerate(points): if i == not_this_i: continue if any_not_None(x): for j, y in enumerate(x): if j == not_this_j: continue if y is None: candidates.append((i, j)) return candidates max_depth = 12 while a := gather(): i, j = random.choice(a) need_expand = len(points) < max_depth b = gather(i, j) if need_expand or not b: k, l = len(points), random.choice([x for x in range(3) if x != j]) points += [[None] * 3] else: k, l = random.choice(b) points[i][j] = [k, l] points[k][l] = [i, j] print("digraph G {\n edge [\n arrowhead=\"none\"\n ];\n") for i, x in enumerate(points): for y in x: j = y[0] if i < j: print(f" {i} -> {j};") print("}")
Editor Settings
Theme
Key bindings
Full width
Lines