Hi jplur,
i have read your progress in Blengband developement. It seems you stared like i did before (without any knowledge in game programming).
One good hint i can give to you is thinking about an object manager.
I have coded this very late in the game and it's easier to think about that as early as possible.
In my game nethack3d everything which can be drawn is an object, controlled by an object manager.
I have only 1 main function which controls nearly everything.
I can create/delete all objects with the use of this function.
The objectmanager itself is a seperate class and stores all objects (windows, lights, monsters, hotspots). Is creates some monsters when needed and does nohing when the monster still exists. Additionally i can use it to tell an object to do something special (like a diffrent animation).
The advantage is a clean code and an easier way of debugging.
i have no good tutorial for you but i guess you fill find something useful in the internet or a forum here.