Atividade 9 - Adicionando Pontuação, Níveis e Vidas

Agora vamos adicionar alguns números para quantificar nosso jogo!
O mais fácil de implementar é a pontuação. Crie uma variável de texto no canto superior esquerdo da tela que mostre Score: e o valor de uma variável numérica que armazena a pontuação do jogador.

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

Essa linha exibe a variável de pontuação no canto superior esquerdo da tela.

  • 20 e 10 são os valores X e Y
  • "score" + this.score é o texto exibido

Você pode colocar essa linha no código logo depois de criar a variável de pontuação:

create_score

Depois, atualize a função hitEnemy() para que o jogador ganhe pontos quando destruir um inimigo:

hit_enemy_score

Agora vamos adicionar níveis. Vamos inicializar da mesma forma que fizemos com a pontuação, mas dessa vez exibindo o texto no meio da tela:

create_level

Os níveis serão simples: sempre que o jogador destruir todos os inimigos, ele avança para o próximo nível, e todos os inimigos são recriados.
Para deixar cada nível mais difícil que o anterior, vamos criar uma variável difficulty que controla com que frequência os inimigos atiram.
Quanto menor o valor de difficulty, mais difícil será o jogo.

Agora, para atualizar o nível quando todos os inimigos forem destruídos, vamos criar um método levelClear() que:

level_clear

Sempre crie um novo timer quando recriar inimigos, senão eles e o timer podem ficar fora de sincronia.
Quando chegarmos a 200 de dificuldade, diminua o decremento para que o aumento de dificuldade seja mais suave.

Não esqueça de chamar levelClear() no update():

update_level_clear

Agora vamos adicionar vidas. Vamos inicializar de forma parecida e posicionar o texto no canto superior direito da tela:

create_live

Para perder uma vida quando for atingido, adicione este código no hurtPlayer():

hurt_player

Para as vidas terem significado, vamos criar um Game Over quando o jogador perder todas as vidas.
Primeiro, crie um texto invisível na tela dentro do método create():

create_game_over

Depois, no hurtPlayer(), faça esse texto aparecer quando o jogo acabar:

hurt_player_restart

Isso faz com que o personagem não reapareça, mostra a mensagem de fim de jogo e reinicia o jogo se o jogador clicar na tela.

Por fim, crie o método restart() que é chamado nesse processo:

restart_function

Esse método reseta tudo para recomeçar o jogo.

gameplay