Activity 9 - Adding Score, Levels, and Lives

Now, we will add some numbers to quantify our game! The easiest one to implement is the score. Create a text variable on the top left of the screen that displays Score: and the value of a num variable that stores the player’s score.

this.scoreText = this.add.text(20, 10, "Score: " + this.score, {
    font: "25px Arial",
    fill: "white"
});

This line print score variable at the top left of the screen.

  • 20 and 10 is the x and y value
  • "score" + this.score is the text value

You can fill this line to this location after you create score value:

create_score

Just add a score variable and some text to the screen that displays “Score: ‘score variable’”. We will update the hitEnemy() function so that the player will earn points to their score if they defeat an enemy:

hit_enemy_score

Now we will add levels. We will initialize it the same way we did for the score, but this time we will print it to the middle of the screen instead of the top left:

create_level

We will make levels pretty simple: whenever the player destroys all of the enemies, the next level will be reached, respawning all of the enemies. In order to make each level more difficult than the last, we will make the enemies shoot more often. To make the enemies shoot more often, let’s create a difficulty variable and use that when we make the enemies randomly shoot.

With this setup, by changing the difficulty variable, we change how often the enemies shoot. A lower difficulty will make the game harder because it will make the probability that an enemy shoots harder.

Now to make the level update when the player destroys all of the enemies, we will create a levelClear() method that will update the difficulty variable, reset the enemy timer, create new enemies (by calling createEnemies()), and update the level text on screen :

level_clear

Note how we have to create a new timer every time we create new enemies or else the enemies and timer might not be in sync. Also, we recommend decrementing the difficulty variable less when we reach 200 because the difficulty ramps up much quicker at that point.

Don’t forgot to update levelClear() in update():

update_level_clear

Now, we will add lives. We will again use a similar method to initialize it and put it on the top right of the screen:

create_live

Now, in order to lose a life whenever you get hit, now let’s add this code to hurtPlayer():

hurt_player

However, in order for the lives to mean anything, let’s make it a Game Over when the player. We will start by making some text that’s invisible on the screen in the create() method:

create_game_over

We will make this text visible when it is a game over. We will do this in the hurtPlayer() method:

hurt_player_restart

This makes the character not spawn, show the game over text, and restart the game if the player clicks on the screen.

Only thing now is that we need to create the restart() method that this code refers to:

restart_function

This resets everything to start the game over

gameplay