Well, if you already know c/c++, then games are just an extension of what you already know. Just break it down into all the blocks you need and figure each one out individually. Look at it from a high level perspective first and then drill down until you get to code level and then code it
Like has been mentioned, there is no set way to do it.
You already mentioned a game loop and game states, which is a really good start. What else do you really want to know?? :blink:
Basic game loop:
STATE 1 - in game
1) Process input
2) Update game objects based on input
3) Process AI
4) Update game objects based on AI
5) Check for object interaction (colisions etc)
6) Change state based on interaction
7) Render scene
STATE 2 - lose life
1) Process input
2) Change state based on input
3) Render scene
STATE 3 - level up
1) Process input
2) Change state based on input
3) Render scene
etc...
A flow digram would be the best way after that to break each state down further.
HIH