Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @dataclass(frozen=True)
- class MapTile:
- tile: Tile
- x: int
- y: int
- def main_test_rooms():
- while True:
- graph_gen = GraphGenerator(GenSettings(
- width=30,
- height=30,
- room_merge_num=50,
- room_gen_type=RoomGenType.RANDOM_VORONOI,
- room_num=7,
- ))
- tiles_map, rooms = graph_gen.generate()
- if is_completable_map(tiles_map):
- break
- tile_arr, room_map = graph_gen.generate()
- # print(ascii_render_tile_data_map(TileDataMap(tile_arr)))
- walkable_map = np.vectorize(lambda t: int(is_walkable_kind(t.kind)))(tile_arr)
- plt.imshow(walkable_map)
- plt.show()
- while True:
- graph_gen = GraphGenerator(GenSettings(
- width=30,
- height=30,
- room_merge_num=50,
- room_gen_type=RoomGenType.RANDOM_VORONOI,
- room_num=7,
- ))
- tiles_map, rooms = graph_gen.generate()
- if is_completable_map(tiles_map):
- break
- print(ascii_render_tile_data_map(TileDataMap(tiles_map)))
- # делаем граф
- tiles_graph = nx.Graph()
- x_dim, y_dim = tiles_map.shape
- for x in range(x_dim):
- for y in range(y_dim):
- tile: Tile = tiles_map[x, y]
- if is_walkable_kind(tile.kind):
- map_tile = MapTile(tile, x, y)
- tiles_graph.add_node(map_tile)
- if x > 0:
- upper_tile: Tile = tiles_map[x - 1, y]
- upper_map_tile = MapTile(upper_tile, x - 1, y)
- if is_walkable_kind(upper_tile.kind):
- tiles_graph.add_edge(map_tile, upper_map_tile)
- if y > 0:
- left_tile: Tile = tiles_map[x, y - 1]
- left_map_tile = MapTile(left_tile, x, y - 1)
- if is_walkable_kind(left_tile.kind):
- tiles_graph.add_edge(map_tile, left_map_tile)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement