Ya, that looks pretty good. I don't see any intialization--typically I have four (sometimes five) functions for each component of my game:
-Init(): This function is called once at the beginning of the game. It typically loads/creates all the media, creates any global variables and arrays, and initializes all the data.
-Reset(): This function sets all the data (such as the player's health, his items, etc) to their default values, and is called each time the game itself is started/restarted. For instance if you were in the middle of a game then you went to the pause menu and restarted this function would be called to reset everything.
-Update(): This function (obviously) updates the component--not much needs to be said about it.
-ShutDown(): In DBP this function is less important because everything is cleaned up for you but in C++ I like to code in a much cleaner fashion, so I use this for all my un-initialization, and it's called once right when the application is closed.
-Sometimes I have an 'OnSetDisplayMode' function is called each time the user switches display modes, and it simply re-loads all the media.
So here's what some pseudo-code would look like for a simple game:
InitDisplay()
InitGameTimer()
InitMenu()
InitPlayer()
InitEnemies()
InitItems()
ResetGameTimer()
ResetGameMenu()
ResetPlayer()
ResetEnemies()
ResetItems()
Do
Select GameState
Case GS_MENU:
UpdateMenu()
EndCase
Case GS_MAINGAME:
UpdatePlayer()
UpdateEnemies()
UpdateItems()
EndCase
EndSelect
UpdateGameTimer()
UpdateDisplay()
Loop
ShutDownDisplay()
ShutDownGameTimer()
ShutDownMenu()
ShutDownPlayer()
ShutDownEnemies()
ShutDownItems()
i like orange