HTML and CSS Reference
Turn-Based Game Flow and the State Machine
Our game logic and flow is separated into 16 discrete states. The entire application runs on a
40 -frames-per-second interval timer:
switchGameState ( GAME_STATE_INIT );
var FRAME_RATE = 40 ;
var intervalTime = 1000 / FRAME_RATE ;
setInterval ( runGame , intervalTime )
As with the other games, in Chapter 8 and earlier in this chapter, we use a function reference
statemachinetorunourcurrentgamestate.The switchGameState() functiontransitionstoa
Wedonotreprinteachlineofcodeordissect itindetail here.Usethissection asaguideforperusing
the entire set of game code included at the end of this chapter (in Example 9-2 ). By now, you have
seen most of the code and ideas that create this game logic. We break out the new ideas and code in
the sections that follow.
This state loads the assets we need for our game. We are loading only a single tile sheet and
no sounds for Micro Tank Maze .
Aftertheinitialload,itsendsthestatemachinetothe GAME_STATE_WAIT_FOR_LOAD stateuntil
the load event has occurred.
This state simply makes sure that all the items in GAME_STATE_INIT have loaded properly. It
then sends the state machine to the GAME_STATE_TITLE state.
pens, it sends the state machine to GAME_STATE_NEW_GAME .
This state resets all the game arrays and objects and then calls the createPlayField() func-
tion. The createPlayField() function creates the playField and enemy arrays for the new