1
resposta

Reiniciar o jogo ao tocar na tela de game over

Prezados,

após ter sido vista a renderização da tela de game over no curso, fiquei com uma dúvida: como deve ser realizada a manipulação do controle do jogo para que, ao tocar a tela com a mensagem de game over sendo exibida (o atributo isRunning está com o valor false), o jogo seja reiniciado?

Tentei apenas alterar o valor do atributo isRunning e chamar o método que inicializa os elementos, mas não funcionou...

Como a nossa view (SurfaceView) está rodando em uma Thread separada, há alguma coisa diferente que precisa ser realizada?

Apenas para contextualizar:

No jogo desenvolvido, a activity instancia a view principal e inicia uma nova Thread para a execução do jogo. O loop principal do jogo se baseia em um atributo boolean, re-renderizando a tela a cada ciclo. No game over, o que foi realizado foi alterar o atributo boolean para a condição ser falsa.

A única forma que consegui foi pegando o evento de click na activity principal e recriando a Thread principal do jogo.

Para mais detalhes da implementação, segue o link do repositório no github

1 resposta

Olá Jefferson,

O que acontece é que a GameView está rodando em uma Thread separada. Essa Thread existe enquanto ela está executando o método run(...). Quando o isRunning fica false, o método run(...) é encerrado e juntamente com ele a Thread também é finalizada.

Para reiniciar o jogo, acredito que basta você invocar novamente o método startGame(...) da MainActivity. Esse método instancia uma nova Thread com a GameView e assim o loop do jogo que fica no método run(...) deve se iniciar novamente.

Faça o teste e verifique se isso é o suficiente!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software