This thread should probably be locked and continued in another thread because its going off topic. But for now I'm going to leave it open.
Firstly, when it comes to 'cookie cutter code' -that is what behaviours are meant for. For example, if you want to make a platform game, you dont need to worry about all the maths that makes the player move left and right, push out of obstacles, run up slopes etc...all you do is add the platform movement and you've already got something. You can then expand on the behavior by adding more events to if...if you feel that the player should be able to jump off a wall you can do stuff like:
If player has wall to the left
+ player pressed jump button
- Jump.
Behaviours, if they are designed right, are very good at providing a simple way of looking at maths.
btw did you have a look at my example before? I used the custom movement behavior and I think thats a lot easier to work with if you're not into maths.
Okay so lets take this original 'mouse leading' problem, and try to word it in english:
"Make the character swim towards the mouse"
Okay...too ambiguous...lets refine it a bit more
"When I hold down the left mouse button, accelerate towards the mouse"
But how can the program possibly know how fast you want to accelerate? You need to start using a number... like 200 pixels per second per second... ultimately you can just start guessing at numbers
Now this was something I didn't use in the example...but lets say you wanted to tweak the acceleration so the further away the mouse is, the stronger the acceleration....
Firstly, your right, there should be some kind of 'spring' action in custom movement, but i missed it out...but you can still achieve it with maths:
distance(.x, .y, mousex, mousey) will give you the pixel distance from the object to the mouse
So you test acceleration with that...maybe its too small...to make it stronger you multiply it by perhaps 5....you tweak with the numbers until you get something you like.
Then you run into another problem. If you hold down the left mouse button and move the mouse away you can move really really fast! Perhaps you decide you want to limit acceleration so it cant go below 0, and it cant go above 400...
you end up with
clamp( distance(.x, .y, mousex, mousey), 0, 400)
For most people who are cool with maths, thats perfectly fine... without constructs 'clamp' and 'distance' function the maths would be a lot messier, eg:
sqrt ( (.x - mousex) ^ 2 + (.y - mousey) ^ 2 ) just to get the distance!
But over the last few hours I have been pondering over a better 'visual' style of maths...something thats a bit like those visual programming language flow chart thingys but made only for evaluating expressions...because really i feel expressions are the only area in construct that aren't very innovative.... heres ones brain storm:
<img src="http://dl.dropbox.com/u/939828/idea29.PNG">
Basically that could be displayed a lot nicer but to explain the concept...
Functions with parameters (eg: Distance between) are represented as blocks with things to connect to them
Constant numbers like 100 and 0 you can link up to stuff. However, note they are marked as 'acceleration'.
Rather than having distance(mousex, mousey, .x, .y) that is easier to think of as 'distance between two points'. In C++ doing maths is a lot easier when you make classes like 'point2d' because then you can just easily add 2 points together etc.
Stuff like 'multiply by 3' is a thing you can drag along the line...so you can multiply by 3 then add 2 etc.
Now here is the innovative idea:
Numbers can be positions, speeds, acceleration, colour, size...
For expressions like 'distance between mouse and myposition' we can have a 'visual display' thing that will show you how quickly an object will accelerate....like an animation of a car driving against a scrolling background...so you could click the 'distance between' and see what the acceleration is like...then click the x3 and see what its like when its 3 times the amount...or click the '100' and just see what an acceleration of 100 is like... or click the entire expression to see what an acceleration of the evalulated amount is like.
Anyway its just a brainstorm, very unlikely anything like that in the near future but maths is something that scares a lot of people away and crunching numbers isn't really something 'arty' people like to do...