@Game Hunter and requerent:
I like the idea of showing all available states for possible car movements but I also think it might feel slow (in comparison to the movement of a player) if the player has to click the desired state. Maybe those available states should only be shown if the player changes direction. If he keeps moving into the direction of the previous step he just needs to press a "skip turn/step" key. If he wants to increase the speed while keeping the direction he needs to press the corresponding key for this direction and the key for the opposite direction to decrease speed.
This way moving horizontally or vertically can feel fast while turns (changes in direction) will feel a bit slower because of the 'state selection' but that's okay. I mean, making turns with a real car also feels slow, doesn't it?
Yes, I can see this working, especially if we're using the numpad-for-movement approach. So let's say that the car is moving up:
8 - increase speed
2 - decrease speed
4 - initiate turn counterclockwise (to the left)
6 - initiate turn clockwise (to the right)
7 - initiate strafe counterclockwise (shift to the left)
9 - initiate strafe clockwise (shift to the right)
5 - confirm and move car
Confirm should also work with any other defined wait key, like spacebar. These controls are generalized with (counter)clockwise so it always makes sense (if you're moving left, the keys would instead be (respectively) 4/6/2/8/1/7/5). Similarly, for mouse users, you could have a loosely-visible HUD over the car that shows what tile to click for these various commands (click on the car to move, click ahead of the car to increase speed, click to the car's left for a counterclockwise turn, etc.). Additionally, since moving the mouse constantly to just tell the car to keep moving would suck, I'd make it so that clicking anywhere outside the defined tile-HUD counts as a wait.
However, there's still a small problem. The roads I am using won't support smooth curves, i.e. only manhattan like layouts. So turns like these:
# = Road
C = Car
/ = Possible Collision
. = Not Road
##### ##/CC
#.... #//..
#.... --> //...
C.... #....
C.... #....
...would cross nonroad terrain and therefore result in the car driving against pedestrians. You might say that the player needs to slow down before turning but I am asking myself how this would feel and if the mentioned approach is precisely and easy enough to do it. I guess this discussion would highly benefit from some kind of prototype.
You could just keep with the snap-to turning if you feel that the large-curve turning would force players to spend too much time at on-road intersections. You could also allow for both and give some kind of toggle between on-road and off-road styles. Maybe if you're on a road tile, pressing the "turn right" button once selects the snap-to turn and pressing it twice selects the large-curve turn, and vice versa if you're not on a road tile. (Since this would toggle, a third press would go back to snap-to, fourth to large-curve, etc). This works quite nicely because all motion has to be confirmed via wait button anyway, so it shouldn't be too much for the player to handle.
With regards to a car's speed, I'm basically thinking that part of a car's stats is how quickly it can increase, how quickly it can decrease, and what its maximum speed is. A typical car might be able to increase and decrease speed by 1, with a maximum speed of 4. Cars with better handling should be able to decrease speed rather easily, while speedster cars should have better increase and maximum. In this way the player might get to choose between a fast car and a stable car if they're trying to escape police or whatever.