Quote: "decide what to do if you try and move a block that now has a ball or another movable block on top of it"
I'd suggest if a movable block has something on top of it, make that block un-movable, that should be simplest way to do it. But allowing blocks to be pushed with blocks ontop of them could make for interesting puzzles. Moving a ball between different sized towers by stacking up blocks and moving the ball on top, and having to move other blocks onto the stack as you get higher and higher. But that could be a pain to code.
As for making the balls move on their own, I don't think it'd be that complex, just make sure they can only move in one direction at a time, keep track of their speed and change it based on the sine of th slope angle. When a ball hits a wall it just stops. On the other hand it would take some very, very careful map designs so it's up to you how you want to proceed with the idea. Looks it'll be a great contender either way.
I don't suffer from insanity - I enjoy every minute of it!
Current Projects: Lemmings Remake
(Untitled) Puzzle Game for the Compo