MonoGame Tutorial — Parte 6: Start e Game Over
Anteriormente…
MonoGame Tutorial — Parte1: Introdução
MonoGame Tutorial — Parte2: Planejamento do Jogo e Inicio do Projeto
MonoGame Tutorial — Parte3: Movimentação dos Objetos do Jogo
Para finalizar este tutorial será implementado um botão de start e a saudosa mensagem de Game Over.
Para fazer estas implementações será utilizado uma imagem que servirá como botão de start e criado um novo arquivo de fonte para a mensagem de game over utilizando a fonte Fipps.
Baixe os arquivos:
- Fonte Fipps
- Imagem ↓
No Solution Explorer navegue até a pasta Content, clique com o botão direito do mouse no arquivo Content.mgcb é selecione Open With…, procure por MonoGame Pipeline Tool(MGPT) e de um duplo clique.
Para utilizar uma fonte especifica no jogo, basta baixar o arquivo de fonte desejado e copiar o mesmo para a pasta Content do projeto e definir a mesma no arquivo .spritefont na tag FontName.
No arquivo fonteGameOver.spritefont foi realizado a seguinte alteração:
<!-- CÓDIGO OCULTADO! --> <FontName>Fipps-Regular</FontName> <Size>150</Size><!-- CÓDIGO OCULTADO! -->
Show me the code!
Foi criado a classe BotaoStart.cs para representar o botão start é facilitar a utilização do mesmo na classe Game1.cs.
O método Start apenas verifica se o touch do usuário na tela do dispositivo ocorreu sobre o botão e retorna um resultado do tipo bool.
O método SetaPosicao define uma posição no centro da tela do dispositivo e atribui este valor para a variável Posicao herdada de GameObject2D.cs que é utilizada no método Draw, também de GameObject2D.cs.
Em Game1.cs foi criado as variáveis _fonteGameOver, _btnStart e _start dos tipos SpriteFont, BotaoStart e bool, respectivamentes.
No método Initialize a variável _btnStart foi inicializada e no LoadContent e realizado o carregamento da fonte e da textura do botão de start em seguida a posição do botão é setada utilizando o método SetaPosicao.
A variável _start foi criada para manipular o que poderá ser feito e desenhado ao iniciar o jogo, ela é utilizada dentro do método Update e Draw. Para que está manipulação ocorra foi criado uma condicional if e no corpo desta condicional foi definido o que será ou não executado.
No caso do método Update, toda a lógica de movimentação dos objetos e validações foi adicionado ao corpo da condicional.
Já no método Draw apenas o draw dos buracos e do carro foi adicionado ao corpo da condicional.
Para que a mensagem de Game Over seja desenhada, foi realizado uma condicional para saber se a variável _start é falsa e a resistência do carro é menor ou igual a zero.
Após estas implementações o resultado obtido é:
Para que vocês não fiquem apenas no recurso de Copiar/Colar deixo como atividade as seguintes implementações:
- Criar o botão de Reset após ocorrer o Game Over.
- Criar um item de regeneração de 20% da resistência do carro que aparece de vez em quando.
- Criar uma tabela de ranking por desconto de IPVA.
- Criar um menu e/ou botão para desabilitar a música.
- Adicione mais de uma música ao MediaPlayer.
- Reinicie a música no Start e Reset do jogo.
DICA:
Mesmo que sua ideia seja simples ou que alguém já tenha feito, NÃO deixe a mesma apenas no papel e/ou na mente, coloque ela em pratica que novas funcionalidades iram surgir e o projeto irá amadurecer.
Repositório dos Exemplos:
https://github.com/RonildoSouza/MonoGameTutorial/tree/Parte6
Baixe o Game: https://goo.gl/4p3YdA
REFERÊNCIAS: