Seed the generator once per program invocation. If you seed it in a loop in this fashion, it generates the same seed multiple times in a row (until the time changes) causing your loop to churn on for quite a while. In general, do not change the counters used in your for loop conditionals inside the loop.
Lines 44-51 and 126-133 are redundant. Drawing the map should be a separate function.
Lines 26-35 it's possible that a monster could overlay an existing monster. Small likelyhood (1 in 70) but it can happen.
Lines 38-42: You could also be overlaying a monster here.
Line 49: You're telling the player where the treasure, traps and monsters are. This is fine for debugging, but you probably want to be able to hide these items from the player.
Lines 62-75, 79-92, 96-107, 111-122: Do you see a lot of commonality in these lines? It would make sense to put bounds checking and moving the player in a common function.
IMO, you're looking at testing for monsters, traps and treasure the wrong way. You should looking at the contents of the map when you attempt to move the player to a new location. i.e. Before placing the player in a new location, test if that new location has a trap, monster, or treasure and act accordingly.