Advertisement
Guest User

Untitled

a guest
Sep 18th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.98 KB | None | 0 0
  1. @dataclass(frozen=True)
  2. class MapTile:
  3.     tile: Tile
  4.     x: int
  5.     y: int
  6.  
  7.  
  8. def main_test_rooms():
  9.     while True:
  10.         graph_gen = GraphGenerator(GenSettings(
  11.             width=30,
  12.             height=30,
  13.             room_merge_num=50,
  14.             room_gen_type=RoomGenType.RANDOM_VORONOI,
  15.             room_num=7,
  16.         ))
  17.         tiles_map, rooms = graph_gen.generate()
  18.         if is_completable_map(tiles_map):
  19.             break
  20.     tile_arr, room_map = graph_gen.generate()
  21.     # print(ascii_render_tile_data_map(TileDataMap(tile_arr)))
  22.     walkable_map = np.vectorize(lambda t: int(is_walkable_kind(t.kind)))(tile_arr)
  23.     plt.imshow(walkable_map)
  24.     plt.show()
  25.     while True:
  26.         graph_gen = GraphGenerator(GenSettings(
  27.                 width=30,
  28.                 height=30,
  29.                 room_merge_num=50,
  30.                 room_gen_type=RoomGenType.RANDOM_VORONOI,
  31.                 room_num=7,
  32.         ))
  33.         tiles_map, rooms = graph_gen.generate()
  34.         if is_completable_map(tiles_map):
  35.             break
  36.     print(ascii_render_tile_data_map(TileDataMap(tiles_map)))
  37.  
  38.     # делаем граф
  39.     tiles_graph = nx.Graph()
  40.     x_dim, y_dim = tiles_map.shape
  41.     for x in range(x_dim):
  42.         for y in range(y_dim):
  43.             tile: Tile = tiles_map[x, y]
  44.             if is_walkable_kind(tile.kind):
  45.                 map_tile = MapTile(tile, x, y)
  46.                 tiles_graph.add_node(map_tile)
  47.                 if x > 0:
  48.                     upper_tile: Tile = tiles_map[x - 1, y]
  49.                     upper_map_tile = MapTile(upper_tile, x - 1, y)
  50.                     if is_walkable_kind(upper_tile.kind):
  51.                         tiles_graph.add_edge(map_tile, upper_map_tile)
  52.                 if y > 0:
  53.                     left_tile: Tile = tiles_map[x, y - 1]
  54.                     left_map_tile = MapTile(left_tile, x, y - 1)
  55.                     if is_walkable_kind(left_tile.kind):
  56.                         tiles_graph.add_edge(map_tile, left_map_tile)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement