Alright, a couple comments.
First, the following lines are repeditive in what they do:
BITMAP *guy = create_bitmap(90, 90)
guy = load_bmp("cdown.bmp", default_palette);
The load_bmp function will allocate the memory for the *guy BITMAP, so ya only need to call it.
Then, at the end of the proggy, don't forget to deallocate it with the destroy_bitmap() function. allegro_exit() may do this for you, but destroying the bitmap is the #1 way to ensure you don't cause a memory leak.
Now then, the collision detection:
if ((ex - sx) < 90 && (sy - ey) < 90 && (ey - sy) < 90) ...
This is a tad confusing, but if I understand correctly, you are trying to say, if the enemy x is within 90 pixels of the sword x and the enemy y is also within 90 pixels of the sword y, then a collision has occured. Here would be the way I would do this:
if(ex > (sx - 45) && ex < (sx + 45) && ey > (sy - 45) && ey < (sy + 45) ...
This makes a nice neat box of collision detection, and you aren't worried about negative values and such.
Hope that helps. (Kind of a late reply, so you may have figured that out already.)
-Justin
P.S. Looking good so far. You'll have the next best RPG/Action Adventure going in no time at all. (If you are having a problem with flickering and are running 2K, see this post on some of the quirks of DirectX in full screen.)