Nice work, I been too busy to think about ray casting. I looked at your code and, it is small at the first of the post. Enemies and path finding won't be to hard if you treat the position of the players as a 2d. Any way I think that the floor and ceiling can be another array. So you would have such arrays like this.
ceiling[][]=={
{-1,-1,-1,-1,-1,-1,-1,-1,-1},
{-1,13,13,13,13,13,13,15,-1},
{-1,160,160,160,160,160,261,313,-1},
{-1,18,16,10,16,10,60,313,-1},
{-1,10,14,12,14,12,60,313,-1},
{-1,27,18,361,160,160,161,313,-1},
{-1,10,18,61,160,160,261,313,-1},
{-1,12,18,18,18,18,60,313,-1},
{-1,18,16,10,16,10,60,313,-1},
{-1,18,14,12,14,12,60,313,-1},
{-1,160,160,160,160,160,161,313,-1},
{-1,-1,-1,-1,-1,-1,-1,-1,-1}
};
and the same thing with the floor.
The enemy's floor plan can also be put in an array.
Go through yourself at a wall.