Beispiel #1
0
def generate_map():
  map = Map()
  num_rows, num_cols = map.get_grid_size()
  
  num_rooms = (num_cols * num_rows / 100 + random.randint(2, 5)) * 10
  
  for y in range(0, num_rows):
     for x in range(0, num_cols):
       map[y][x] = WALL_TILE_TYPE
  
  for _ in range(num_rooms):
    width = random.randint(6, 8)
    height = random.randint(4, 6)
    
    row = 1 + random.randint(0, num_rows - height - 2)
    col = 1 + random.randint(0, num_cols - width - 2)
    
    if not(tileExistsInRectangle(map, row - 1, col - 1, height + 2, width + 2, FLOOR_TILE_TYPE)):
      for y in range(row, row + height):
        for x in range(col, col + width):
          map[y][x] = FLOOR_TILE_TYPE
  
  regionNumbersByTileCoord = { }
  
  for y in range(0, num_rows):
     for x in range(0, num_cols):
       regionNumbersByTileCoord[(y, x)] = 0 # zero means it has no regionNumber
  
  for y in range(0, num_rows):
     for x in range(0, num_cols):
       if map[y][x] == FLOOR_TILE_TYPE and regionNumbersByTileCoord[(y, x)] == 0:
         floodFill(map, regionNumbersByTileCoord, y, x)
  
  for y in range(0, num_rows):
     for x in range(0, num_cols):
       print(chr(ord('A') + regionNumbersByTileCoord[(y, x)]), end='')
     print('', end='\n')