HTML and CSS Reference
When all the enemy tanks have completed their moves, the game state is changed to
the GAME_STATE_EVALUATE_ENEMY_MOVE state.
Like GAME_STATE_EVALUATE_PLAYER_MOVE , this state looks at the location of each tank to
determine which ones need to be destroyed.
If a tank occupies the same tile as the player, a wall, or another tank, the tank is “to be
destroyed”. If the player and enemy tank occupy the same tile, the player is also “to be
destroyed”. This “to be destroyed” state is set by placing true in the hit attribute of
the enemy tank or the player.
The game is then moved to the GAME_STATE_EVALUATE_OUTCOME state.
This function looks at each of the enemy tanks and the player tank to determine which
have a hit attribute set to true . If any do, that tank's dead attribute is set to true , and
an explosion is created by calling createExplode() and passing in the object instance
(player or enemy tank). In the case of the enemy, a dead enemy is also removed from
the enemy array.
The GAME_STATE_ANIMATE_EXPLODE state is called next.
If the explosions array length is greater than 0 , this function loops through each instance
and animates them using the explodeTiles array. Each explosion instance is removed
from the explosions array after it finishes its animation. When the explosions array
length is 0 , the game moves to the GAME_STATE_CHECK_FOR_GAME_OVER state.
This state will first check to see whether the player is dead, and then check to see
whether he has won. That means that the player cannot win if an enemy tank makes it
to the goal on the same try as the player.
If the player has lost, the state changes to GAME_STATE_PLAYER_LOSE ; if the player has
won, it moves to the GAME_STATE_PLAYER_WIN state. If neither of those has occurred, the
game is set to GAME_STATE_WAIT_FOR_PLAYER_MOVE . This starts the game loop iteration
over, and the player begins her next turn.