Gdybym miał coś takiego robić to najpierw bym wziął jakiś algorytm generowania labiryntu https://en.wikipedia.org/wiki/Maze_generation_algorithm
i wygenerował bym go w postaci ds_grida. I przyjąłbym że każda zapełniona kratka grida to pomieszczenie. Po wygenerowaniu całego grida przelatujesz go jeszcze raz i przypisujesz każdej komórce ds_listę ( Threef zaraz mi wyjedzie że by zrobił ds_map :D ), którą wypełniasz swoimi właściwościami pomieszczenia. Najbardziej podstawowa lista by miała 4 wartości, które oznaczają 4 rodzaje ścian, łatwo to dalej rozwinąć np dodając kolejne 4 wartości określające typy drzwi itd.