it is generally better to use a case statement for TDirection to prevent more then one block of code from executing in a single pass.
also you should build a table of directions in a counter clock list either 4 or 8 directions. now there is no up or down only left or right foward or back.
use an index var to set the direction add to location to move forward, subtract to move back. change index var to turn left or right.
now you can move the monster in the same direction until it hits a wall then chose to go left or right.
this is a link for a hex map there is some good stuff in there that could help you in your own design
http://www.redblobgames.com/grids/hexagons/