For taking turns, can't you just have a variable which alternates between 0 and 1? When its 0 the player gets to move, and when 1 the AI moves?
For movement, each time the turn changes each unit gets their "move" variable set to a value (3 for moving 3 grids). If a unit has more than 0 in "move", then they can be selected to move (subtract from it when moving a grid).
When all units on your side have their "move" at 0. Then change the turn variable so the other player gets to go.
Just an idea.