I've made a random 2D tile-based dungeon generator in Python (and PyGame), which is a basic 2D array of wall and floor tiles, and it works great, filled with rooms and corridors. But now I want to go around the rooms and corridors with nicer wall sprites (top-left corner, top-right corner, etc).
EDIT: To expand a bit without going into the whole process, an empty 2D array is created (as the level map) consisting of 0 values (empty). Rooms of random size are "placed" at random locations within the 2D array, and linked by corridors. Rooms and corridors are given a value of 1 (floor). It's easy to just outline the rooms and corridors with a single square wall sprite, but I want to have dynamic walls that have shape to them (corners, ends, that sort of thing).
I have tried a few different ways - generating the dungeon then checking edges and replacing wall parts, or creating the wall parts around each room as it's generated, but there's always problems where the corridors cross into rooms, and the order in which the wall parts are determined.
I've searched Google, Roguebasin, etc but I can't find anything about this. Every random generator I find just uses 2 simple sprites (floor and wall). I don't want my "walls" to look generic. I also wanted to steer clear of prefab rooms because I want it to be completely random.
I've been stuck on this for 2 weeks. I'm making my own engine in Python, and there are lots of examples of random dungeon generation, but I want to go a step further and make the dungeon look great with nice corners, horizontal and vertical walls, etc.
Do I incorporate the wall parts into the generation? Or do I go over the generated map afterwards with an algorithm for choosing the correct parts, or is there something else I've not thought of? Or am I punching too high, should I stick with a basic roguelike setup?
Here's a mock-up of how I want it to look (or similar). As you can see, I'm not a stranger to pixel art and sprites, but I want the computer to be able to randomly generate the rooms and corridors, AND populate the correct wall parts: